animation - 添加对象时 NSMutableArray 使应用程序崩溃

标签 animation crash cocos2d-iphone

我在 Mac OS X 10.6.8 上使用 Xcode 4 和 Cocos2D。我正在尝试使用 Sprite 表来制作动画。这是我的代码:

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"scrollAnimation.plist"];
CCSpriteBatchNode *spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"scrollAnimation.png"];
[self addChild:spriteSheet];

NSMutableArray *animFrames = [NSMutableArray array];

for(int i = 0; i < 10; i++) {
    [animFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName: [NSString stringWithFormat:@"scroll%d.png", i]]];
}

self.scrollAnim = [CCAnimation animationWithFrames:animFrames delay:0.05f];

self.scroll = [CCSprite spriteWithSpriteFrameName:@"scroll0.png"];
_scroll.position = ccp(_winSize.width*1.5, _winSize.height*1.5);
[spriteSheet addChild:_scroll]; 

这在模拟器中工作正常,但是当我构 build 备时,它崩溃了。我已将范围缩小到将对象添加到数组中。如果我注释掉 for 循环之前的所有内容,然后只需添加 spriteFrameByName 部分,它就可以工作。但是当我尝试将其放入数组中时,应用程序在设备上崩溃了。

有什么帮助吗?

最佳答案

造成这种行为的最可能原因是您的应用程序占用了它拥有的所有内存,并且操作系统杀死了它。我这样说是因为在这种情况下,您不会从崩溃日志中获得任何提示,并且当您的应用程序在模拟器中运行但在设备中不起作用时,这也是很典型的情况。

因此,为了调查这个问题,我首先检查崩溃之前是否存在内存警告跟踪(如果 covos2d 启用了跟踪)。这将是一个明显的迹象。

实际上,当您收到也会导致崩溃的内存警告时,还有第二种可能的结果。您的应用程序收到内存警告(查看 cocos2d 跟踪);您的纹理缓存会被清空,因此当您尝试使用您认为已预先缓存的纹理时,应用程序会崩溃。但在这种情况下,错误会更详细。如果您认为问题与此有关,请查看这篇文章:http://labs.freescapes.org/blog/2011/07/cocos2d-and-memory-warnings/

关于animation - 添加对象时 NSMutableArray 使应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6963079/

相关文章:

android - 如何在 Android 中创建一个带有帧动画的自定义按钮

c++ - 在同一台机器上编译的相同 C++ 代码表现不同

ios - 等待动画在 iOS 中完成?

html - 如何更改 SVG 图像中 stroke-dasharray 的 "starting point"?

css - Webkit 动画在屏幕上留下垃圾像素

ios - iOS,先强制退出应用程序,点击接收通知横幅后,应用程序启动失败

ios - 未知异常: signal SIGPIPE with crash when device is unlocked after locked screen

iphone - 如何将 CCTransitionPageTurn 方向设置为垂直?

iphone - 在 Cocos2d 中编写方向键的最佳方法是什么?

c++ - Box2d 为动态 body 创建易断关节