Cocos2d-x Action
今回は、Cocos2d-xのアクションについて勉強しました。
公式ドキュメントの
Action->Sequence Internals->Reverseのサンプルコードをもとに動作を確認しました。
参考:http://westplain.sakuraweb.com/translate/cocos/The%2520Basics/Actions.cgi
及びhttps://docs.cocos2d-x.org/cocos2d-x/v3/en/actions/sequence_internals.html
前回のHelloWorldの中央の画像を動かしてみます。実行したコードがこちらです
HelloWorld::initに追加して実行しました。
画像の動きを整理してみると各2秒ほどのインターバルで
1. 2秒かけてx方向に画面の横幅の半分移動
2. 2秒かけて高さと幅を2倍に
3. 2秒かけて高さと幅を半分に
4. 2秒かけてx方向に画面の横幅の半分*-1移動
でした3. 4. は1. 2. の逆の動きです。Sequenceの最後に8秒の待ち時間が設定されていることと2. と3. の間隔からreverse()で追加されたアクションも同時に開始されているとわかります。ドキュメントのSpawnの欄にも示されていますが、実際に動かすことでより理解しやすくなります。
次に、先ほどのサンプルコードにはないEasingを試しました。Easingはアクションに加速度を設定するオブジェクトで、複数のEasingを組み合わせることにより多くの動きを再現できます。しかし、動作によってはActionを使用せず実装したほうがよさそうです。
Easingを使いどのような動きができるか試しているときに判明したことがあります、マニュアルにはSpawnはrunAction()を複数回実行するのと同じ結果になるとありますが、SequenceをSpawnでまとめた場合個別にrunAction()を実行した時と異なる動作をしました。
同様にRepeatForeverをSpawnでまとめた場合、繰り返しが無くなりました。
よって、これらはSpawn,Sequence,RepeatForeverの順で使用しなければ正常に動作しないと思われます。
次回は、主にUIやSceneの勉強をしようと思います。
興味を持たれた方はお気軽にお問い合わせください。
インターンシップへの申し込み・お問い合わせ先
