使用Cocos2d-iphone和objective-c游戏开发框架。
我创建一个按钮:
CCMenuItemImage *slot = [CCMenuItemImage itemFromNormalImage:@"BattleMoveSelectionSlot1.png"
selectedImage:@"BattleMoveSelectionSlot2.png"
target:self selector:@selector(moveChosen:i)];
我的moveChosen
方法是:
-(void)moveChosen:(int)index {
}
但是,出于某种原因,我在@selector(moveChosen:i)
上收到错误,其中i是整数。那么,当按下按钮时,如何将整数参数传递给我的函数?
错误是
预期':'
答案 0 :(得分:4)
您不在选择器中包含任何参数名称:
@selector(moveChosen:)
选择器不允许绑定参数。
答案 1 :(得分:4)
格奥尔格是对的。请注意,在实现时,这将调用未定义的行为,因为index
是int
但是它正在使用的操作方法需要一个对象(id
),而不是int
。行动方法的签名是:
- (void)methodName:(id)sender;
或者,当与Interface Builder一起使用时:
- (IBAction)methodName:(id)sender;
(IBAction
是void
的别名。两者在语义上不同但功能相同。)
其中sender
是发送操作消息的对象 - 在本例中是您创建并分配给slot
变量的对象。
答案 2 :(得分:2)
格奥尔格部分正确。对于您的示例,它将是:
@selector(moveChosen:)
但请注意:如果您有多个参数,则确实包含形式参数名称以获取选择器。如果你的功能签名是:
- (void)moveChosen:(int)index withThing:(Thing*)thing
然后选择器将是:
@selector(moveChosen:withThing:)
答案 3 :(得分:1)
选择器只是您要发送的邮件的名称。参数将在调用时提供 - 这意味着CCMenuItemImage将决定传递的参数。如果CCMenuItemImage不支持提供整数参数,则无法执行此操作。