精灵随手指移动起来

效果图:

精灵随手指移动起来

精灵随手指移动起来

程序代码:

bool HelloWorld::init()
{
    //////////////////////////////
    // 1. super init first
    if ( !CCLayer::init() )
    {
        return false;
    }
    
    CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
    CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();

    /////////////////////////////
    // 2. add a menu item with "X" image, which is clicked to quit the program
    //    you may modify it.

    // add a "close" icon to exit the progress. it‘s an autorelease object
    CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
                                        "CloseNormal.png",
                                        "CloseSelected.png",
                                        this,
                                        menu_selector(HelloWorld::menuCloseCallback));
    
	pCloseItem->setPosition(ccp(origin.x + visibleSize.width - pCloseItem->getContentSize().width/2 ,
                                origin.y + pCloseItem->getContentSize().height/2));

    // create menu, it‘s an autorelease object
    CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
    pMenu->setPosition(CCPointZero);
    this->addChild(pMenu, 1);

	setTouchEnabled(true);
	sp1 = CCSprite::create("cpp1.png");
	sp1->setScale(0.5f);
	sp1->setPosition(ccp(100, 200));
	this->addChild(sp1);


    return true;
}

//触摸移动
void HelloWorld::ccTouchMoved(CCTouch* touch, CCEvent* event)
{	
	if (iscontrol)
	{
		CCPoint location = touch->getLocationInView();
		location = CCDirector::sharedDirector()->convertToGL(location);
		CCLOG("ccTouchMoved...x:%f y:%f", location.x, location.y);

		//移动时重新设置sprite坐标
		float x = location.x-deltax;
		float y = location.y-deltay;
		sp1->setPosition(ccp(x, y));
	}

}
	
//触摸开始点击,计算该点坐标与sprite坐标差值
bool HelloWorld::ccTouchBegan(CCTouch* touch, CCEvent* event)
{
	
	
	CCPoint pos = sp1->getPosition();
	CCPoint location = touch->getLocationInView();
	location = CCDirector::sharedDirector()->convertToGL(location);//openGL
	CCLOG("ccTouchBegan...x:%f y:%f", location.x, location.y);
	
	if (location.x > 0 && location.x <960 &&
		location.y >0 && location.y < 640)//触摸的矩形区域
	{
		iscontrol = true;
		//计算触摸点与sprite的坐标差值
		deltax = location.x-pos.x;
		deltay = location.y-pos.y;
	}
	
	return true;

}
//触摸结束
void HelloWorld::ccTouchEnded(CCTouch* touch, CCEvent* event)
{
	CCLOG("ccTouchEnded...");
	//iscontrol = false;

}

//注册触摸事件
void HelloWorld::onEnter()
{
	CCDirector* pDirector = CCDirector::sharedDirector();
	pDirector->getTouchDispatcher()->addTargetedDelegate(this, 0, true);
	CCLayer::onEnter();
}

void HelloWorld::onExit()
{
	CCDirector* pDirector = CCDirector::sharedDirector();
	pDirector->getTouchDispatcher()->removeDelegate(this);
	CCLayer::onExit();
}



精灵随手指移动起来,布布扣,bubuko.com

精灵随手指移动起来

上一篇:Senparc.Weixin.MP SDK 微信公众平台开发教程(十九):MessageHandler 的未知类型消息处理


下一篇:Android项目目录结构分析