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

Cocos2d入门 <三>如何移动精灵角色

2013-01-16 16:23 405 查看


void HelloWorld::addTarget()
{
CCSprite *target = CCSprite::create("Target.png",CCRectMake(0,0,27,40));
// Determine where to spawn the target along the Y axis
CCSize winSize = CCDirector::sharedDirector()->getWinSize();
int minY = target->getContentSize().height/2;
int maxY = winSize.height -  target->getContentSize().height/2;

int rangeY = maxY - minY;
// srand( TimGetTicks() );
int actualY = ( rand() % rangeY ) + minY;
// Create the target slightly off-screen along the right edge,
// and along a random position along the Y axis as calculated
target->setPosition(ccp(winSize.width + (target->getContentSize().width/2),actualY) );
this->addChild(target);

// Determine speed of the target
int minDuration = (int)2.0;
int maxDuration = (int)4.0;
int rangeDuration = maxDuration - minDuration;
// srand( TimGetTicks() );
int actualDuration = ( rand() % rangeDuration )+ minDuration;

// Create the actions
CCFiniteTimeAction* actionMove =
CCMoveTo::create( (float)actualDuration,
ccp(0 - target->getContentSize().width/2, actualY) );

CCFiniteTimeAction* actionMoveDone =
CCCallFuncN::create( this, callfuncN_selector(HelloWorld::spriteMoveFinished));
target->runAction( CCSequence::create(actionMove, actionMoveDone, NULL) );
}

// cpp with cocos2d-x
void HelloWorld::spriteMoveFinished(CCNode* sender)
{
CCSprite *sprite = (CCSprite *)sender;
this->removeChild(sprite, true);
}

// cpp with cocos2d-x
void HelloWorld::gameLogic(float dt)
{
this->addTarget();
}

// on "init" you need to initialize your instance
bool HelloWorld::init()
{
  ......
  // Call game logic about every second
this->schedule( schedule_selector(HelloWorld::gameLogic), 1.0 );

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