我需要在 cosos2D 中安排一个带有各种参数的事件,我尝试在网上搜索但无法从中获得任何解决方案。我可以用
[自我计划:@selector(移动:)间隔:0.3];
但我应该如何将参数传递给它:
[self schedule:@selector(move:withPoint:) interval:0.3];
访问此功能。
-(void)move:(id)object withPoint:(CGPoint)point{ }
我需要在 cosos2D 中安排一个带有各种参数的事件,我尝试在网上搜索但无法从中获得任何解决方案。我可以用
[自我计划:@selector(移动:)间隔:0.3];
但我应该如何将参数传递给它:
[self schedule:@selector(move:withPoint:) interval:0.3];
访问此功能。
-(void)move:(id)object withPoint:(CGPoint)point{ }
你想做的事情是不可能的。
由于您要调度的方法在同一个类中,因此您可以只使用实例变量。您可以像这样安排选择器,并且该方法需要具有此签名(仅采用 ccTime 参数):
[self schedule:@selector(move:) interval:0.3];
-(void)move:(ccTime)delta
{
}
要访问此方法中所需的变量,请将它们添加为实例变量:
@interface MyClass : CCNode
{
id moveObject;
CGPoint movePoint;
}
@end
然后你可以在更新方法中使用这个变量,和/或在其他方法中修改它们。
-(void)move:(ccTime)delta
{
// read or modify moveObject and movePoint as needed
}
您应该在实例变量中使用某种外壳(数组/字典、结构等)来实现此目的。例如:
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 ...)也足够了,您甚至不需要字典的开销。