日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
如何移動一個cocos2d-x精靈

void addTarget()函數(shù)將會幫我們完成這一工作,敵人將會以隨機的速度,從游戲場景左移動到右。

10年積累的成都網(wǎng)站設(shè)計、成都做網(wǎng)站經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計制作后付款的網(wǎng)站建設(shè)流程,更有保靖免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

在HelloWorldScence.h里聲明void addTarget(),并在HelloWorldScene.cpp里添加以下的代碼,(請不要忘記在HelloWorldScene.cpp的開頭加入using namespace cocos2d)

1// cpp with cocos2d-x

2void HelloWorld::addTarget()

3{

4 CCSprite *target = CCSprite::spriteWithFile("Target.png",

5 CCRectMake(0,0,27,40) );

6

7 // Determine where to spawn the target along the Y axis

8 CCSize winSize = CCDirector::sharedDirector()->getWinSize();

9 int minY = target->getContentSize().height/2;

10 int maxY = winSize.height

11 - target->getContentSize().height/2;

12 int rangeY = maxY - minY;

13 // srand( TimGetTicks() );

14 int actualY = ( rand() % rangeY ) + minY;

15

16 // Create the target slightly off-screen along the right edge,

17 // and along a random position along the Y axis as calculated

18 target->setPosition(

19 ccp(winSize.width + (target->getContentSize().width/2),

20 actualY) );

21 this->addChild(target);

22

23 // Determine speed of the target

24 int minDuration = (int)2.0;

25 int maxDuration = (int)4.0;

26 int rangeDuration = maxDuration - minDuration;

27 // srand( TimGetTicks() );

28 int actualDuration = ( rand() % rangeDuration )

29 + minDuration;

30

31 // Create the actions

32 CCFiniteTimeAction* actionMove =

33 CCMoveTo::actionWithDuration( (ccTime)actualDuration,

34 ccp(0 - target->getContentSize().width/2, actualY) );

35 CCFiniteTimeAction* actionMoveDone =

36 CCCallFuncN::actionWithTarget( this,

37 callfuncN_selector(HelloWorld::spriteMoveFinished));

38 target->runAction( CCSequence::actions(actionMove,

39 actionMoveDone, NULL) );

40}

1// objc with cocos2d-iphone

2-(void)addTarget

3{

4 CCSprite *target = [CCSprite spriteWithFile:@"Target.png"

5 rect:CGRectMake(0, 0, 27, 40)];

6

7 // Determine where to spawn the target along the Y axis

8 CGSize winSize = [[CCDirector sharedDirector] winSize];

9 int minY = target.contentSize.height/2;

10 int maxY = winSize.height - target.contentSize.height/2;

11 int rangeY = maxY - minY;

12

13 int actualY = (arc4random() % rangeY) + minY;

14

15 // Create the target slightly off-screen along the right edge,

16 // and along a random position along the Y axis as calculated

17 target.position =

18 ccp(winSize.width + (target.contentSize.width/2),

19 actualY);

20 [self addChild:target];

21

22 // Determine speed of the target

23 int minDuration = 2.0;

24 int maxDuration = 4.0;

25 int rangeDuration = maxDuration - minDuration;

26

27 int actualDuration = (arc4random() % rangeDuration)

28 + minDuration;

29

30 // Create the actions

31 id actionMove =

32 [CCMoveTo actionWithDuration:actualDuration

33 position:ccp(-target.contentSize.width/2, actualY)];

34 id actionMoveDone =

35 [CCCallFuncN actionWithTarget:self

36 selector:@selector(spriteMoveFinished:)];

37 [target runAction:[CCSequence actions:actionMove,

38 actionMoveDone, nil]];

39}

這里用callfuncN_selector(HelloWorld::spriteMoveFinished)回調(diào)了spriteMoveFinished方法,我們需要在HelloWorldScene.h里聲明并如下來定義它,

1// cpp with cocos2d-x

2void HelloWorld::spriteMoveFinished(CCNode* sender)

3{

4 CCSprite *sprite = (CCSprite *)sender;

5 this->removeChild(sprite, true);

6}

1// objc with cocos2d-iphone

2-(void)spriteMoveFinished:(id)sender

3{

4 CCSprite *sprite = (CCSprite *)sender;

5 [self removeChild:sprite cleanup:YES];

6}

要點

1. 關(guān)于隨機函數(shù)。srand和rand是C標(biāo)準(zhǔn)庫函數(shù)。對于每一個平臺來說,你可以先獲取毫秒級時間來得到一個隨機數(shù)。在沃Phone上,這個函數(shù)是TimGetTickes(),而在iPhone上,你可以直接通過arc4random()函數(shù)來獲得隨機數(shù)。

2. Objc中的YES和NO,在cpp中變?yōu)閠rue和false。

3. 回調(diào)函數(shù),在objc中用selector:@selector(spriteMoveFinished),但在cpp中實現(xiàn)就比較復(fù)雜了,你可以參考cocos2d-x\include\selector_protocol.h里的聲明。一共有5種回調(diào)函數(shù)類型

? schedule_selector

? callfunc_selector

? callfuncN_selector

? callfuncND_selector

? menu_selector

如何使用它們,根據(jù)所用函數(shù)的定義來決定。比如使用CCTimer::initWithTarget函數(shù),它的第二個參數(shù)是SEL_SCHEDULE類型,到selector_protocol.h里查一下,可以看到對應(yīng)的是schedule_selector(_SELECTOR)宏,所以調(diào)用時就需要在類里頭實現(xiàn)一個void MyClass::MyCallbackFuncName(ccTime)函數(shù),然后把schedule_selector(MyClass::MyCallbackFuncName)作為CCTimer::initWithTarget的第二個參數(shù)傳入。

之后,我們應(yīng)該定時地為游戲加入敵人,把以下代碼加入到init()函數(shù)的返回值前。

1// cpp with cocos2d-x

2// Call game logic about every second

3this->schedule( schedule_selector(HelloWorld::gameLogic), 1.0 );

1// objc with cocos2d-iphone

2// Call game logic about every second

3[self schedule:@selector(gameLogic:) interval:1.0];

然后在HelloWorldScence.cpp里實現(xiàn)gameLogic()。請注意gameLogic()應(yīng)該聲明為pubilc,否則是無法回調(diào)的。

1// cpp with cocos2d-x

2void HelloWorld::gameLogic(ccTime dt)

3{

4 this->addTarget();

5}

1// objc with cocos2d-iphone

2-(void)gameLogic:(ccTime)dt

3{

4 [self addTarget];

5}

好了,所有事情都做完了,編譯并運行,好好享用你的成果。

iPhone

Android

沃Phone

Win32


網(wǎng)站欄目:如何移動一個cocos2d-x精靈
標(biāo)題網(wǎng)址:http://m.5511xx.com/article/ccsegoi.html