【问题标题】:Cocos2d scaling sprite causes artifactCocos2d缩放精灵导致神器
【发布时间】:2012-08-23 21:59:27
【问题描述】:

我在 master 分支上,因此它可以与 ARC 一起使用。

我已经实现了一种方法,当用户触摸精灵时,精灵将缩放 1.1 倍。多次触摸将使多个缩放动作排队,建立在彼此之上。时不时地我得到一个奇怪的工件,其中较小版本的精灵出现在缩放版本的顶部。

截图如下:

更多背景:我正在使用纹理图集,所以我使用:

    sprite = [super spriteWithSpriteFrameName:anObject.filename];

初始化精灵。这是 openGL/cocos2d 中的错误吗?有关如何停止此工件的任何建议?

编辑: 我是 CCSprite 的子类,但据我所知只有一个精灵实例(对 super 的调用是在类方法中)。基本上,用户将定义精灵将执行的操作列表。也可以使用以下命令中断操作列表:

[self stopAllActions]

我已经使用 CCMoveBy 和 CCRotateBy 的子类进行了操作,没​​有任何问题。只有最新的 CCScaleBy 子类会导致此工件。在这些动作的子类中,我没有更改动作中的任何内容,只是跟踪某些变量,以便我可以在中断后正确恢复动作。

【问题讨论】:

  • 你为什么用super?不应该只是 [CCSprite spriteWithSpriteFrameName:name]; 吗?我很困惑。

标签: ios graphics opengl-es cocos2d-iphone


【解决方案1】:

你可能是 CCSprite 的子类,并且在你的子类中你是否也添加了一个 CCSprite 实例变量?

在这种情况下,您将展示两个精灵。超类精灵和实例变量精灵。如果其他 sprite 有时只出现,这可能取决于添加 sprite 作为子项的顺序,或 zOrder 属性。

【讨论】:

  • 我是 CCSprite 的子类,但我认为没有 CCSprite 实例变量。不过,我确实从我的 CCSprite 类中创建了更多的 CCSprite,以便在精灵移动时在精灵后面画一条线,但这已经持续了一段时间没有问题。只有当我使用不绘制运动条纹的 CCScaleby 时,才会出现伪影。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-25
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
相关资源
最近更新 更多