精灵在Android上随机闪烁

时间:2014-06-06 04:51:42

标签: c++ cocos2d-x cocos2d-x-3.0

我使用cocos2d-x 3.1创建了一个平台游戏运动员游戏。在那个游戏中,屏幕无限滚动,一些障碍物出现在玩家面前,玩家可以跳起来以避开障碍物。

我在Windows上开发了游戏并且没有使用SpriteBatchNode - 只是简单的Sprites和粒子效果。在Windows上可以,但是当我在Android上移植时,一些精灵(大小,移动和休息)开始随机闪烁。首先我认为是随机更改的Z顺序,但是我已经从屏幕中移除了大部分精灵,并看到它们只是闪烁。有趣的是,我找不到闪烁精灵之间的任何共同属性,但那些闪烁总是闪烁,而那些不闪烁(正常行为),它们总是可以。

我可以通过对所有闪烁的精灵使用SpriteBatchNode来消除这种令人讨厌的情况。但无法理解发生了什么,原因是什么。有什么假设可能是这种行为的原因吗?

我仍然需要使用一些简单的Sprite,以便能够将粒子效果作为子项添加到它们中。使用SpriteBatchNodes创建的SpriteSpriteBatchNodes是不可能的,例如:Sprite::createWithSpriteFrameName("my.png")

很抱歉,我不会分享一些代码。我只是不知道要分享什么 - 项目是巨大的。但是如果你需要一些具体的部件,我当然可以分享。

1 个答案:

答案 0 :(得分:1)

@GameDeveloper我终于可以重现随机闪烁的问题了。据我所知,这是Z阶的问题。我用以下方式复制了它。我创建了一个空的精灵,并在该精灵中创建并添加了相同的图像。在点击屏幕时,我在点击的同一位置再添加一个精灵。在第16次敲击之后,每次敲击都会更改已添加的精灵的一些Z顺序。事情是我添加的每个精灵,我没有指定更高的Z顺序。但我无法理解16是什么样的幻数.BTW我也实现了撤销功能,我删除了最后添加的精灵。如果我撤消到不超过16个精灵,那就没关系。一旦我再次超过16,Z阶随机化就开始了。