0

メニューを追加するためにcocos2dを使用しています。メニューを正常に追加できます。しかし、どのメニュー項目が選択されているかを識別できません。以下にコードを示します。助けてください。

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);
    }
4

3 に答える 3

0

You can use the menu and assign a selector in that, so you have not need to check click in scheduled method

I have used the menues as

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

you can use menu in proper location as

menu.alignItemsVertically();

or

menu.alignItemsHorizontally();

or

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

      if(i==0)
      {

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

      }
      i++;
  }

now add menu

  addChild(menu,20);

and methods are defined as:

    public void menuCallbackResume(Object sender) {

  }
    public void menuCallbackrestart(Object sender) {

  }

the methods auto called when menu clicked

于 2012-12-27T15:19:27.793 に答える
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("&&&&&&&&&&&&&&&&&&&&&&&&&&&");
}
于 2013-07-25T11:59:27.407 に答える
0

解決しました。cocos2dのバージョンが原因で発生する問題です。cocos2dの新しいバージョンで問題は解決します。

于 2011-11-29T03:11:59.513 に答える