您的位置:首页 > 移动开发 > Cocos引擎

[Cocos2d-x For WP8]点击移动精灵

2013-08-21 23:27 525 查看
点击移动是游戏里面常用的操作,那么在Cocos2d-x里面可以通过setTouchEnabled(true)方法来设置接收屏幕的点击事件,然后添加ccTouchesEnded(CCSet* touches, CCEvent* event)方法处理点击后的操作,在方法体里面就可以获取点击的位置,然后通过动画的方式来移动精灵。

代码示例:

//在init方法里面初始化当前的实例
bool HelloWorld::init()
{
bool bRet = false;

do
{
//CCLayer进行初始化,初始化失败跳出循环
if ( !CCLayer::init() )
{
break;
}
//获取手机屏幕的大小
CCSize size = CCDirector::sharedDirector()->getWinSize();
CCSprite* sprite = CCSprite::create("cat.png");
CCLayer* layer = CCLayerColor::create(ccc4(255,255,0,255));//();
addChild(layer, -1);
addChild(sprite, 0, 1);
sprite->setPosition( CCPointMake(20,150) );
//跳的动画
sprite->runAction( CCJumpTo::create(4, CCPointMake(300,48), 100, 4) );
//页面颜色闪动的动画
layer->runAction( CCRepeatForever::create(
(CCActionInterval*)( CCSequence::create(
CCFadeIn::create(1),
CCFadeOut::create(1),
NULL) )
) );
//接收界面的的触摸事件
setTouchEnabled(true);
bRet = true;
} while (0);
//返回成功
return bRet;
}

void HelloWorld::ccTouchesEnded(CCSet* touches, CCEvent* event)
{
CCSetIterator it = touches->begin();
CCTouch* touch = (CCTouch*)(*it);
//获取点击的位置
CCPoint location = touch->getLocationInView();
//把UIkit坐标转化为GL坐标
CCPoint convertedLocation = CCDirector::sharedDirector()->convertToGL(location);
//获取节点
CCNode* s = getChildByTag(1);
//移除所有的动画
s->stopAllActions();
//启动移动动画
s->runAction( CCMoveTo::create(1, CCPointMake(convertedLocation.x, convertedLocation.y) ) );
float o = convertedLocation.x - s->getPosition().x;
float a = convertedLocation.y - s->getPosition().y;
float at = (float) CC_RADIANS_TO_DEGREES( atanf( o/a) );

if( a < 0 )
{
if(  o < 0 )
at = 180 + fabs(at);
else
at = 180 - fabs(at);
}
//转动动画
s->runAction( CCRotateTo::create(1, at) );
}


运行的效果:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: