我正在尝试使用addCloud:
方法在选择器上使用数字参数,但我无法收到图像名称的正确输出。
正在加载图片资源:“cloud<__NSCFTimer: 0x170162400>.png”
- (void)level:(float)interval sprite:(NSString *)charSprite
{
if ([charSprite isEqualToString:@"1"]) {
[NSTimer scheduledTimerWithTimeInterval:k1 target:self selector:@selector(addCloud:) userInfo:charSprite repeats:YES];
}
}
- (void)addCloud:(NSString *)nnumber
{
NSString *nvalue = [NSString stringWithFormat:@"cloud%@.png",nnumber];
_cloud = [SKSpriteNode spriteNodeWithImageNamed:nvalue];
[_cloud setScale:0.4];
_cloud.position = CGPointMake(self.frame.size.width + _cloud.size.width/2, actualY);
[self addChild:_cloud];
}
最佳答案
计时器回调的签名应为-(void)addCloud:(NSTimer *)timer
。计时器回调不会直接接收提供给 userInfo
参数的值;他们总是收到 NSTimer
引用。您可以向计时器询问其 userInfo
属性,然后可以将其转换为您要查找的 NSString
:
NSString *spriteIndex = timer.userInfo;
NSString *spriteName = [NSString stringWithFormat:@"cloud%@.png", spriteIndex];
关于objective-c - 将字符串传递给 NSTimer 的操作方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25410120/