Iphone 适用于ipad的cocos2d动态菜单

Iphone 适用于ipad的cocos2d动态菜单,iphone,ios,ipad,cocos2d-iphone,Iphone,Ios,Ipad,Cocos2d Iphone,亲爱的社区: 我有一个简单的菜单,必须是动态的。对于dynamics,我的意思是每次打开菜单时,我都有不同数量的元素 我有一个NSMutableArray: NSMutableArray *answerList = [[NSArray alloc]init]; for(int i=0; i<countAnswers; i++){ CCLabelTTF *labelAnswer = [CCLabelTTF labelWithString:answer fontName:@"Mar

亲爱的社区:

我有一个简单的菜单,必须是动态的。对于dynamics,我的意思是每次打开菜单时,我都有不同数量的元素

我有一个NSMutableArray:

NSMutableArray *answerList = [[NSArray alloc]init];

for(int i=0; i<countAnswers; i++){

    CCLabelTTF *labelAnswer = [CCLabelTTF labelWithString:answer fontName:@"Marker Felt" fontSize:40];        
    CCMenuItemLabel * MenuItemAnswer = [CCMenuItemLabel itemWithLabel:labelAnswer target:self selector:@selector(vedidimorire)];
    [answerList addObject:MenuItemAnswer];


}
我怎么做

提前感谢您的回答!
奔驰

在我看来,您有几个选择

您应该能够将va_列表传递到CCMenu 有关更多信息,请阅读:

否则,

简单地说,不要使用CCmenu。 创建一个可以处理触摸事件的自定义类

希望这有帮助


Adam

应答列表中,存在
CCMenuItemLabel
对象

现在,如果您想创建菜单,首先您必须计算回答列表中有多少个答案,然后在
[CCMenu菜单项:
中为每个项目创建相应的
CCMenu

首先确定
answerList
数组中的最小和最大答案。 设minAnswer=3,maxAnswer=6 那么

int currentAnswerCount=[answerList count]; 我的菜单; 如果(currentAnswerCount==minAnswer){ myMenu=[CCMenu menuWithItems:[answerList objectAtIndex:0]、[answerList objectAtIndex:1]、[answerList objectAtIndex:2]; } 否则如果(currentAnswerCount==minAnwer+1{ myMenu=[CCMenu menuWithItems:[answerList objectAtIndex:0]、[answerList objectAtIndex:1]、[answerList objectAtIndex:2]、[answerList objectAtIndex:3]; } .. .. 直到maxAnswer。 [self addChild:myMenu];
希望这有帮助!

我不久前遇到了这个问题,有一种非常简单的方法可以解决。只需在每个循环中将您的CCMenuItem添加为CCMenu的子项。将[answerList addObject:MenuItemSwer];替换为[myMenu addChild:MenuItemSwer];去掉MenuItemSwer数组,并使用以下代码创建myMenu:CCMenu*menu=[CCMenu menuWithItems:nil];并且不要忘记将此菜单添加为另一个CCNode的子菜单。

NSMutableArray*answerList=[[NSMutableArray alloc]init];另外,在完成后不要忘记将其释放。您确定方法“menuWithItems:”将NSMutableArray作为输入?谢谢MSgambel。menuWIthItems方法不将NSMutableArray作为输入。事实上,我的问题是:如果我不能使用数组,我如何才能将项以友好方式添加到菜单中?使用nil项初始化CCMenu,然后在数组上迭代并使用[menu addChild:menuItem]谢谢你的回答。但我想有一个真正的动态方法。这样我就必须事先知道我答案的最大值和最小值。因为我必须从数据库中获取这个答案,所以我无法知道最小值和最大值。你能告诉我菜单的用途吗?我的意思是我猜菜单是用于游戏的,不是吗?或者是我没有任何与数据库相关的应用程序?是的,这是一个游戏,在其中一个屏幕上,我必须随机显示一些带有答案的问题。问题和答案是从数据库中检索的,我不知道答案的数量。是的,我可以假设我的答案可能不会超过10个,但谁知道呢?也许将来一个问题会有11个答案r、 现在我正在尝试使用va_列表,如果不起作用,我想我会遵循第一个答案的第二个建议:我将使用可点击的标签。嗯……如果你不知道答案的确切数量,那么不使用ccmen创建自己的自定义类将是一个很好的选择。是的,我会这样做,谢谢你的帮助。这个答案在尝试为我的iPhone应用程序创建自定义键盘时,完美解决了我的问题。但由于某些原因,在将CCMenuItems作为子项添加到CCMenu时,最后添加的CCMenuItem会居中。为什么会发生这种情况?
CCMenu * myMenu = [CCMenu menuWithItems: ????? ];
int currentAnswerCount = [answerList count]; CCmenu myMenu; if (currentAnswerCount == minAnswer) { myMenu = [CCMenu menuWithItems:[answerList objectAtIndex:0], [answerList objectAtIndex:1], [answerList objectAtIndex:2]]; } else if (currentAnswerCount == minAnwer + 1 { myMenu = [CCMenu menuWithItems:[answerList objectAtIndex:0], [answerList objectAtIndex:1], [answerList objectAtIndex:2], [answerList objectAtIndex:3]]; } .. .. upto maxAnswer. [self addChild:myMenu];