동적으로 속도를 변경할 수 있도록 CCSpeed 지연 후에 함수를 호출해야합니다. 내가 아는 한, CCSequence 내부에서 CCSpeed를 사용할 수 없기 때문에 CCSpeed 내부에서 CCSequence (CCDelayTime, CCCallFuncND, nil)를 사용해 보았습니다. CCSpeed도 작동하지 않습니다. 누구든지 어떤 제안이 있습니까?CCSpeed 지연 후의 Cocos2D 호출 기능
내 BackgroundLayer 클래스에는 NSNumber * multiplierSpeed가 있습니다. :
@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
//...
}
나는이 오류가 무엇입니까 :
@interface BackgroundLayer : CCLayer {
NSNumber *multiplierSpeed;
}
@property (nonatomic, retain) NSNumber *multiplierSpeed;
-(void)rotateWorldAndSwapIn:(id)sender data:(int)frame;
@end
그리고 내 구현
callbackMethod_ (targetCallback_, selector_, 타겟팅 대상, data_)에 EXC_BAD_ACCESS;
CCActionInstant.m 파일에 있습니다.
또한 CCSpeed가 지연이없는 CCCallFuncND를 감싸기 때문에이 오류가 발생합니까? 그렇다면 다른 대안이 있으십니까?
도와 주셔서 감사합니다.
multiplierSpeed = [NSNumber numberWithFloat:1.0f];
... 당신의 초기화에 유지되지 않습니다 :이 때문에
감사합니다. 그런 멍청한 실수, 네 도움에 감사드립니다! – Cody