【问题标题】:Run many effect actions simultaneously in Cocos2dx在 Cocos2dx 中同时运行多个效果动作
【发布时间】:2026-02-08 13:25:02
【问题描述】:

我是 Cocos2dx 的新手,我正在尝试使用 3:1 矩形纹理创建一个行星动画自转,其中包含 3 个正方形是球体的两个面(地图)(第三个正方形是第一个)。我通过裁剪纹理创建一个帧数组并将它们添加到 CCAnimation。然后我用两个效果来测试这个动画,让方形框架变成一个 3D 圆:CCLens 和 CCTurnOffTiles(我以后会修改它,只关闭圆外的网格)。

但是有一个问题:两个效果不能叠加。如果在 CCLens 之后添加 CCTurnOffTiles,CCLens 将不起作用;如果在 CCTurnOffTiles 之后添加 CCLens,CCDirector 会在运行时抛出读取冲突异常。

是否有任何解决方案可以同时运行多个效果或以其他方式实现行星动画?谢谢。

【问题讨论】:

  • 在创建两个不同的动画时,请确保使用不同的数组和 CCAnimation。我很确定您可以使用单独的 runAction 同时在同一个精灵上使用两个不同的动画
  • @GaneshSomani 通常它应该可以工作。但在这种情况下,CCLens 和 CCTurnOffTiles 似乎不能一起工作。

标签: cocos2d-iphone cocos2d-x ccaction


【解决方案1】:

尝试使用CCSpawn

// Create the effects
CCLens3D * lensEffect; // Your CCLens3D create()
CCTurnOffTiles * turnOff; // Your CCTurnOfftiles create()

// Create a spawn to run them simultaneously
CCSpawn * sphereEffect = CCSpawn::createWithTwoActions( lensEffect, turnOff );

// Run the spawn
myObject -> runAction( sphereEffect );

【讨论】:

  • 我尝试过使用 CCSpawn,但单独使用 runAction 时遇到了同样的错误。
【解决方案2】:

CCTurnOffTiles 和 CCLens3D 都继承了 CCGridAction。

但一个取消另一个:CCTurnOffTiles 将关闭网格图块,CCLens3d 需要这些网格图块。

我建议您使用 SpriteSheet 绘制所有已圈出的行星精灵,然后使用 CCAnimation 进行动画处理,而不使用 CCTurnOffTiles 或 CCLens3D。这是最简单的,并且会消耗更少的cpu。

【讨论】: