我的CCMenuItem在选择器
中有两个方法 menuItem = [[CCMenuItemSprite
itemFromNormalSprite:[CCSprite spriteWithSpriteFrameName:@"menuItem.png"]
selectedSprite:[CCSprite spriteWithSpriteFrameName:@"menuItem.png"]
target:self
selector:@selector(methodName:anotherParam:)] retain];
我想从CCMenuItem发送一个int,以便我可以根据CCMenuItem的int切换案例
类似的东西:
- (void)methodName:(id *)sender anotherParam:(int *)intNumber {
CCMenuItemSprite *menuItem = (CCMenuItemSprite *)sender;
switch (anotherParam) {
case 1:
//My case
break;
}
如何从CCMenuItem发送一个int来切换我的案例?
答案 0 :(得分:3)
您可以使用userData
的{{1}}属性,或者您可以设置关联的对象。
Eample:
CCNode
要设置关联对象,您可以执行以下操作:
CCNode *myNode = [CCNode node];
myNode.userData = (void *) intVal;
// in callback
CCNode *myNode = (CCNode *) sender;
int anotherParam = (int) myNode.userData;
请注意,密钥属于objc_setAssociatedObject(myObject, "anotherParam", (id) myInt, OBJC_ASSOCIATION_ASSIGN);
// in callback
int anotherParam = (int) objc_getAssociatedObject(myObject, "anotherParam");
类型,因此您可以在其中添加任何值(void *
,NSObject
,NSString
,C-string
值等。)
答案 1 :(得分:2)
只需标记CCMenuItem:
menuItem.tag = 1;
然后从sender参数中获取它:
- (void)methodName:(id *)sender {
switch ([sender tag]) {
//cases depending on tag
}
}