我一直在使用 CCMenuItem 及其使用 CCCallFunc 的时间方面遇到问题。
基本上我得到'EXC_BAD_ACCESS'
@CCMenuItem 类的这一行
-(void) ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event
{
...
[selectedItem_ unselected]; // EXC_BAD_ACCESS
[selectedItem_ activate];
...
}
似乎菜单项在触摸结束之前被释放。我正在使用 CCCallFunc 调用从父级删除它的“removeThisSprite”方法
所以我调用的 CCMenuItem 序列的最后一个动作:
[CCCallFuncO actionWithTarget:self selector:@selector(removeThisSprite:) object: _currentButton]
removeThisSprite 方法是这样的:
CCMenuItemSprite2 *sender = nil;
sender.isEnabled = NO;
if ([_sender isKindOfClass:[CCMenuItemSprite class]]) {
sender = _sender;
[sender removeFromParentAndCleanup: YES];
}
这通常发生在玩家通过点击“垃圾邮件”屏幕时,但除非快速点击,否则不会发生。这很可能发生在我正在制作的游戏中。我猜玩家按下按钮太快会出现某种时间问题。