我需要在 CCSpeed 延迟后调用一个函数,以便动态更改速度。据我所知,我不能在 CCSequence 中使用 CCSpeed,所以我尝试在 CCSpeed 中使用 CCSequence (CCDelayTime, CCCallFuncND, nil),但这似乎也不起作用。有人有什么建议吗?
在我的 BackgroundLayer 类中,我有一个 NSNumber *multiplierSpeed; :
@interface BackgroundLayer : CCLayer {
NSNumber *multiplierSpeed;
}
@property (nonatomic, retain) NSNumber *multiplierSpeed;
-(void)rotateWorldAndSwapIn:(id)sender data:(int)frame;
@end
在我的实现中:
@synthesize multiplierSpeed;
-(id)init {
self = [super init];
if (self != nil) {
//...
multiplierSpeed = [NSNumber numberWithFloat:1.0f];
CCSpeed *delay = [CCSpeed actionWithAction:[CCSequence actions:[CCDelayTime actionWithDuration:20],[CCCallFuncND actionWithTarget:self selector:@selector(rotateWorldAndSwapIn:data:) data:(void*)3], nil] speed:1.0f];
[delay setTag:10];
[self runAction:delay];
//...
}
}
-(void)rotateWorldAndSwapIn:(id)sender data:(int)frame {
CCLOG(@"test"); //This is fine
CCLOG(@"multiplierSpeed=%f",[multiplierSpeed floatValue]); //Crashes here
//...
}
我收到此错误:
回调方法上的 EXC_BAD_ACCESS_(targetCallback_,selector_,target_, data_);
在 CCActionInstant.m 文件中。
另外,是不是因为 CCSpeed 环绕了没有延迟的 CCCallFuncND,所以抛出了这个错误?如果是这样,您有任何替代建议吗?
感谢您的帮助!