速度を動的に変更できるように、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
//...
}
このエラーが発生しています:
callbackMethod_(targetCallback_,selector_,target_, data_) の EXC_BAD_ACCESS;
CCActionInstant.m ファイルで。
また、CCSpeed が遅延のない CCCallFuncND をラップするため、このエラーがスローされるのでしょうか。もしそうなら、代わりの提案はありますか?
助けてくれてありがとう!