Objective c 将实例变量传递给CCMenuItemImage中配置的选择器
如果可能的话,我需要一只手将一个变量传递给CCMenuItemImage中配置的选择器。看起来应该是这样,我就是想不出来 以下是我努力实现的目标:Objective c 将实例变量传递给CCMenuItemImage中配置的选择器,objective-c,cocos2d-iphone,Objective C,Cocos2d Iphone,如果可能的话,我需要一只手将一个变量传递给CCMenuItemImage中配置的选择器。看起来应该是这样,我就是想不出来 以下是我努力实现的目标: 创建包含20个游戏级别项目的菜单 for/loop。没问题 在for/loop中,指定 递增变量。没问题 将递增变量传递给中指定的选择器 CCMenuItemImage。问题 使用递增变量 确定点击特定菜单项时要加载的游戏级别。问题没有解决 无论如何,请使用(为清晰起见,请删节)代码: 下面是for/loop中用于创建菜单项的命令 CCMenuIte
CCMenuItemImage *image = [CCMenuItemImage itemFromNormalImage:@"Normal.png" selectedImage:@"Selected.png" target:self selector:@selector(onSelect:)];
现在,正如您在上面的代码片段中所看到的,没有空间可以像NSTimer类那样用于此目的
理想情况下,与其将每个CCMenuItemImage指向我无法传递变量的同一个选择器,我实际上更喜欢调用下面这样的方法。int表示点击CCMenuItemImage时应加载的游戏级别:
- (void)onSelectWithStage:(int)selectedStage {
// write the selected stage to the GameData.xml
[SceneManager goLevelSelect];
}
不管怎么说,我认为这基本上概括了这个问题。希望我错过了一些显而易见的东西:)
提前感谢您的时间我将采取的方法是将级别添加到在CCMenuItemImage实例上键入的NSDictionary中,因此创建级别,创建菜单项,并将级别添加到在其菜单项上键入的dictionary中 当选择器触发时,您将获得发送它的CCMenuItemImage的引用,只需使用与菜单项匹配的键从字典中获取级别 简单。使用标签
for(int i = 0;i<MAX_LEVELS;i++)
{
CCMenuItemImage *image = [CCMenuItemImage
itemFromNormalImage:@"Normal.png"
selectedImage:@"Selected.png"
target:self
selector:@selector(onSelect:)];
image.tag = i;
}
+1使用标签是最简单且推荐的方法:
-(void)onSelect:(CCMenuItemImage*)item{
int lvl = item.tag;
[self onSelectWithStage:lvl];
}