我需要使用各种参数在cosos2D中安排一个事件,我尝试在网上搜索但是无法从中获得任何解决方案。我可以用
[自我安排:@selector(move :) interval:0.3];
但是我应该如何将参数传递给它:
[self schedule:@selector(move:withPoint:) interval:0.3];
访问此功能。
-(void)move:(id)object withPoint:(CGPoint)point{ }
答案 0 :(得分:1)
您应该在实例变量中使用某种机箱(数组/字典,结构等)来实现此目的。例如:
placeholderDict = [NSDictionary dictionaryWithObjectsAndKeys:
[NSValue valueWithCGPoint:point], @"point",
theObject, @"object",
nil];
[self schedule:@selector(moveWithPointWrapper) interval:0.3];
- (void)moveWithPointWrapper
{
CGPoint pt = [(NSValue *)[placeholderDict objectForKey:@"point"] CGPointValue];
id obj = [placeholderDict objectForKey:@"object"];
[self move:obj withPoint:pt];
}
希望这有帮助。
编辑:正如@ learncocos2d指出的那样,创建单个实例变量(对象,CGPoint ......)也足够了,你甚至不需要字典的开销。答案 1 :(得分:1)
你想做的事情是不可能的。
由于您要安排的方法属于同一个类,因此您只需使用实例变量即可。您可以像这样安排选择器,并且该方法需要具有此签名(仅采用ccTime参数):
[self schedule:@selector(move:) interval:0.3];
-(void)move:(ccTime)delta
{
}
要访问此方法中所需的变量,请将它们添加为实例变量:
@interface MyClass : CCNode
{
id moveObject;
CGPoint movePoint;
}
@end
然后你可以在update方法中使用这个变量,和/或在其他方法中修改它们。
-(void)move:(ccTime)delta
{
// read or modify moveObject and movePoint as needed
}