Iphone 在cocos2D中安排具有多个参数的事件

Iphone 在cocos2D中安排具有多个参数的事件,iphone,ios,xcode,cocos2d-iphone,Iphone,Ios,Xcode,Cocos2d Iphone,我需要在cosos2D中安排一个带有各种参数的事件,我曾尝试在网上搜索,但未能从中获得任何解决方案。我可以用 [自调度:@选择器(移动:)间隔:0.3] 但是我应该如何向它传递参数,比如: 以访问此功能 您应该在实例变量中使用某种封装(数组/字典、结构等)来实现这一点。例如: placeholderDict = [NSDictionary dictionaryWithObjectsAndKeys: [NSValue valueWithCGPoint:point], @"point",

我需要在cosos2D中安排一个带有各种参数的事件,我曾尝试在网上搜索,但未能从中获得任何解决方案。我可以用

[自调度:@选择器(移动:)间隔:0.3]

但是我应该如何向它传递参数,比如:

以访问此功能


您应该在实例变量中使用某种封装(数组/字典、结构等)来实现这一点。例如:

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];
}
希望这有帮助


编辑:正如@learnocos2d所指出的,创建单个实例变量(对象、CGPoint…)就足够了,而且您甚至不需要字典的开销。

您应该在实例变量中使用某种封装(数组/字典、结构等)来实现这一点。例如:

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];
}
希望这有帮助


编辑:正如@LearnCos2D所指出的,创建单个实例变量(对象、CGPoint…)就足够了,而且您甚至不需要字典的开销。

您想要做的是不可能的

由于要调度的方法在同一个类中,因此可以只使用实例变量。您可以像这样安排选择器,并且该方法需要有此签名(仅接受ccTime参数):

要访问此方法中所需的变量,请将它们添加为实例变量:

@interface MyClass : CCNode
{
   id moveObject;
   CGPoint movePoint;
}
@end
然后,您可以在update方法中使用这些变量,和/或在其他方法中修改它们

-(void)move:(ccTime)delta
{
    // read or modify moveObject and movePoint as needed
}

你想做的是不可能的

由于要调度的方法在同一个类中,因此可以只使用实例变量。您可以像这样安排选择器,并且该方法需要有此签名(仅接受ccTime参数):

要访问此方法中所需的变量,请将它们添加为实例变量:

@interface MyClass : CCNode
{
   id moveObject;
   CGPoint movePoint;
}
@end
然后,您可以在update方法中使用这些变量,和/或在其他方法中修改它们

-(void)move:(ccTime)delta
{
    // read or modify moveObject and movePoint as needed
}

您也可以只创建一个CGPoint实例变量,也可以只创建一个CGPoint实例变量。