我需要一只手将变量传递给CCMenuItemImage中配置的选择器,如果可能的话。好像它应该是,我只是无法解决它!
这就是我想要实现的目标:
无论如何,使用(为清晰起见)代码:
这是for / loop中用于创建菜单项
的命令CCMenuItemImage *image = [CCMenuItemImage itemFromNormalImage:@"Normal.png" selectedImage:@"Selected.png" target:self selector:@selector(onSelect:)];
现在你可以在上面的代码片段中看到,就像NSTimer类为此目的提供的'userinfo'没有空间。
理想情况下,我不是将每个CCMenuItemImage指向我无法传递变量的相同选择器,而是实际上更喜欢调用下面这样的方法。 int表示在点击CCMenuItemImage时应加载的游戏级别:
- (void)onSelectWithStage:(int)selectedStage {
// write the selected stage to the GameData.xml
[SceneManager goLevelSelect];
}
无论如何,我认为这几乎总结了这个问题。希望我错过了一些明显的东西:)
提前感谢您的时间
答案 0 :(得分:5)
使用标签!
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;
}
并相应地调整onSelect方法。
-(void)onSelect:(CCMenuItemImage*)item{
int lvl = item.tag;
[self onSelectWithStage:lvl];
}
答案 1 :(得分:1)
我将采用的方法是将级别添加到CCMenuItemImage实例上键入的NSDictionary,因此创建级别,创建菜单项并将级别添加到其菜单项上键入的字典中。
当选择器触发时,您将获得对发送它的CCMenuItemImage的引用,只需使用与菜单项匹配的键从字典中获取级别。
Simples。