Kar*_*gat 4 nstimer ios cocos3d
我试图在Cocos3d中调用包含ccactioninterval的函数.我想在特定的时间间隔调用该函数.当我尝试NSTimer时,我发现它有时会工作,有时却不会.
NSTimer makeTarget=[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(createTargets) userInfo:nil repeats:YES];
Run Code Online (Sandbox Code Playgroud)
这里createTargets是包含动作事件的函数.当我运行该功能时,直接工作正常一次.当我尝试安排它时出现问题.我尝试过针对相关问题已经解释的不同方法.但没有什么对我有用....
这是代码
-(void) addTargets {
NSTimer *makeTarget = [NSTimer scheduledTimerWithTimeInterval:2.0
target:self selector:@selector(createTargets) userInfo:nil repeats:YES];
}
-(void)createTargets {
CC3MeshNode *target = (CC3MeshNode*)[self getNodeNamed: @"obj1"];
int minVal=-5;
int maxVal=5;
float avgVal;
avgVal = maxVal- minVal;
float Value = ((float)arc4random()/ARC4RANDOM_MAX)*avgVal+minVal ;
[target setLocation:cc3v(Value, 5.0, 0.0)];
CCActionInterval *moveTarget = [CC3MoveBy actionWithDuration:7.0 moveBy:cc3v(0.0, -10.0, 0.0)];
CCActionInterval *removeTarget = [CCCallFuncN actionWithTarget:self selector:@selector(removeTarget:)];
[target runAction:[CCSequence actionOne:moveTarget two:removeTarget]];
}
-(void)removeTarget:(CC3MeshNode*)targ {
[self removeChild:targ];
targ=nil;
}
Run Code Online (Sandbox Code Playgroud)
如果没有太多的代码,很难说出你的问题,但如果有任何明显的话,这里有一些事情可以道歉.
你是否持有对计时器的引用?
这可能对调试很有用.如果您有一个名为的属性makeTargetTimer,那么您可以这样做:
NSTimer * makeTargetTimer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(createTargets) userInfo:nil repeats:YES];
self.makeTargetTimer = makeTargetTimer // Save to a property for later use (or just use an iVar)
Run Code Online (Sandbox Code Playgroud)
停止重新发生计时器的唯一方法是使其无效.因此,您可以检查它是否已失效.
BOOL isInvalidated = [self.makeTargetTimer isValid];
Run Code Online (Sandbox Code Playgroud)
您也可以在dealloc方法中执行此操作:
- (void) dealloc {
[_makeTargetTimer invalidate]; // Stops the timer from firing (Assumes ARC)
}
Run Code Online (Sandbox Code Playgroud)
你应该收到偶数时滚动吗?
如果你想在滚动时触发计时器,那么你需要使用NSRunLoopCommonModes.这个问题有很好的解释.
[[NSRunLoop currentRunLoop] addTimer:makeTargetTimer forMode:NSRunLoopCommonModes];
Run Code Online (Sandbox Code Playgroud)
你的实施是什么createTargets样的?
NSLog在这个方法的主体上发表声明.你确定它不被称为?| 归档时间: |
|
| 查看次数: |
1589 次 |
| 最近记录: |