cocos2d-x中,多個精靈執行同樣的動作
阿新 • • 發佈:2019-02-01
簡而言之:雖然是“同樣”(從效果來說)的動作,但是每個精靈必須run不同的action物件
例如:需要三個精靈同時跑到一個點去,使用動作來完成。
結果:只有s3跑到目的地,s1和s2都沒動。//建立3個精靈 auto s1 = Sprite::create("CloseNormal.png"); auto s2 = Sprite::create("CloseNormal.png"); auto s3 = Sprite::create("CloseNormal.png"); //設定位置在螢幕左邊1/4處,分上中下來放 s1->setPosition(Vec2(visibleSize.width * 0.25, visibleSize.height * 0.75)); s2->setPosition(Vec2(visibleSize.width * 0.25, visibleSize.height * 0.5)); s3->setPosition(Vec2(visibleSize.width * 0.25, visibleSize.height * 0.25)); //新增到層中顯示 this->addChild(s1); this->addChild(s2); this->addChild(s3); //建立動作,移動到螢幕右邊3/4處的中心位置 auto action = MoveTo::create(3, Vec2(visibleSize.width * 0.75, visibleSize.height * 0.5)); //三個精靈執行這個動作 s1->runAction(action); s2->runAction(action); s3->runAction(action);
如圖:
開始時:
運動結束:
因為三個精靈使用了同一個action物件。下面來修改一下,給每個精靈建立一個物件。
開始的圖和之前一樣,結果如圖(三個精靈都到達目的地):<pre name="code" class="cpp">//建立3個精靈 auto s1 = Sprite::create("CloseNormal.png"); auto s2 = Sprite::create("CloseNormal.png"); auto s3 = Sprite::create("CloseNormal.png"); //設定位置在螢幕左邊1/4處,分上中下來放 s1->setPosition(Vec2(visibleSize.width * 0.25, visibleSize.height * 0.75)); s2->setPosition(Vec2(visibleSize.width * 0.25, visibleSize.height * 0.5)); s3->setPosition(Vec2(visibleSize.width * 0.25, visibleSize.height * 0.25)); //新增到層中顯示 this->addChild(s1); this->addChild(s2); this->addChild(s3); //建立動作,移動到螢幕右邊3/4處的中心位置 auto action1 = MoveTo::create(3, Vec2(visibleSize.width * 0.75, visibleSize.height * 0.5)); auto action2 = MoveTo::create(3, Vec2(visibleSize.width * 0.75, visibleSize.height * 0.5)); auto action3 = MoveTo::create(3, Vec2(visibleSize.width * 0.75, visibleSize.height * 0.5)); //三個精靈執行這個動作 s1->runAction(action1); s2->runAction(action2); s3->runAction(action3);