Добавить Cocos2D меню в Android - PullRequest
0 голосов
/ 27 ноября 2011

Я новичок в 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 голосов
/ 27 декабря 2012

Вы можете использовать меню и назначить селектор в этом, так что вам не нужно проверять щелчок в запланированном методе

Я использовал меню как

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) {

  }

методы, вызываемые автоматически при нажатии меню

0 голосов
/ 25 июля 2013
            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("&&&&&&&&&&&&&&&&&&&&&&&&&&&");
}
0 голосов
/ 29 ноября 2011

Я решил. Проблема возникает из-за версии cocos2d. Более поздняя версия cocos2d решает проблему.

...