2012-02-27 104 views
0

如何动态创建CCMenuItem列表?cocos2d创建动态菜单列表

//Returns me an array with my items 
Items *items = [ItemParser loadItemsForLevel:selectedLevel fromSuperLevel:selectedSuperLevel]; 

对于我有,我想在我的CCMenu显示项目的名称的字符串的项目。项目的数量可能会有所不同,但我想一次只显示6个项目

以及如何删除它?我正在清理CCLayer,但我也想从菜单列表中执行此操作

有人吗?

回答

1

Cocos2D不提供这样做的方法。

您可以根据在“CCMenu.m”中找到的原始构建器创建您自己的初始化程序。 原始看起来像这样(为了清晰起见,我删除了不添加项目的代码)。根据原始创建自己的init方法,并添加可变数量的项目。如果您喜欢,也可以将其设置为CCMenu的一个类别。

-(id) initWithItems: (CCMenuItem*) item vaList: (va_list) args 
{ 
    if((self=[super init])) { 

     // ... code cut for clarity 

     if (item) { 
      [self addChild: item z:z]; 
      CCMenuItem *i = va_arg(args, CCMenuItem*); 
      while(i) { 
       z++; 
       [self addChild: i z:z]; 
       i = va_arg(args, CCMenuItem*); 
      } 
     } 

     // ... code cut for clarity 

    } 

    return self; 
} 

更新: 当你的菜单项变化,则重建整个菜单。

+0

我不确定这是否可以维持...需要删除项目和要更新的列表; – 2012-02-27 13:38:39

+0

当你的菜单项改变,然后重建整个菜单。 – phlebotinum 2012-02-27 14:13:21