在android中添加cocos2d菜单

时间:2011-11-27 09:50:22

标签: android cocos2d-android

我是android的新手。我正在使用cocos2d添加菜单。我可以成功添加菜单。但无法确定选择了哪个菜单项。我已经在下面给出了我的代码.Plz帮助。

for(int i=0;i<len;i++){
              asn = CCMenuItemImage.item("ans_btn.png", "ans_btn_glow.png", "ans_btn.png", this, "check");
        asn.setTag(i+1);
        CCMenuItem[]item={asn};
        menu = CCMenu.menu(item);
        menu.setPosition(CGPoint.ccp(170,val));
        addChild(menu);
        val+=60;
        }
public void check(){
    //  CCMenuItem answ=(CCMenuItem)sender;
        String allert= null;
        //CCMenuItem answ = sender;
        //int check = answ.getTag();
        int i =asn.getTag();
        String str = Integer.toString(i);
        String str1 = Integer.toString(rans);
        if(i== rans)
            allert = "right";
        else
            allert= "wrong";
        CCLabel pop = CCLabel.makeLabel(str1, "DroidSans", 18);
        pop.setPosition(CGPoint.ccp(200, 50));
        addChild(pop);
        CCLabel pop1 = CCLabel.makeLabel(str, "DroidSans", 18);
        pop1.setPosition(CGPoint.ccp(200, 100));
        addChild(pop1);
    }

3 个答案:

答案 0 :(得分:0)

我解决了。问题出现是因为cocos2d的版本.cocos2d的更高版本解决了这个问题。

答案 1 :(得分:0)

您可以使用菜单并在其中指定选择器,因此您无需检查计划方法中的点击

我使用了menues作为

CCSprite ResumeButton1=CCSprite.sprite("resume.png");
    CCSprite ResumeButton2=CCSprite.sprite("resume.png");
    CCSprite ResumeButton3=CCSprite.sprite("resume.png");
    CCSprite restartButton1=CCSprite.sprite("restart.png");
    CCSprite restartButton2=CCSprite.sprite("restart.png");
    CCSprite restartButton3=CCSprite.sprite("restart.png");     


  CCMenuItemSprite item1 = CCMenuItemSprite.item(ResumeButton1,ResumeButton2, ResumeButton3, this, "menuCallbackResume");
  CCMenuItemSprite item2 = CCMenuItemSprite.item(restartButton1,restartButton2, restartButton3, this, "menuCallbackrestart");

  CCMenu menu = CCMenu.menu(item1,item2);

您可以在适当的位置使用菜单

menu.alignItemsVertically();

menu.alignItemsHorizontally();

  int i=0;
  for (CCNode child : menu.getChildren()) {

      if(i==0)
      {

          child.setPosition( x1,y1);
      }else if(i==1)
      {
          child.setPosition( x2,y2);

      }
      i++;
  }

现在添加菜单

  addChild(menu,20);

和方法定义为:

    public void menuCallbackResume(Object sender) {

  }
    public void menuCallbackrestart(Object sender) {

  }

菜单点击时自动调用的方法

答案 2 :(得分:0)

            CCMenuItem newGame = CCMenuItemLabel.item("New Game", this, "newGame");
    CCMenuItem level = CCMenuItemLabel.item("Level", this, "level");

    CCMenuItem items[] = { newGame, level};
    CCMenu menu = CCMenu.menu(items);
    menu.alignItemsVertically(75);
    this.addChild(menu);
    CCTouchDispatcher.sharedDispatcher().addTargetedDelegate(this, 0, true);
    this.setIsTouchEnabled(true);


public void level(Object sender) {
    System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    CCScene scene = LevelScreen.ccScene();
    CCDirector.sharedDirector().pushScene(scene);
    System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&");
}

public void newGame(Object sender) {
    System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    CCScene scene = GameLayer.scene();
    CCDirector.sharedDirector().pushScene(scene);
    System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&");
}