刚刚开始学COCOS2D,在CCMenu中的菜单按键事件中,有按下的效果,但是没有回调按键指定的函数,求教啊~~
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了刚刚开始学COCOS2D,在CCMenu中的菜单按键事件中,有按下的效果,但是没有回调按键指定的函数,求教啊~~相关的知识,希望对你有一定的参考价值。
public void menuText()
removeChild(intro, true);
CGSize winSize = CCDirector.sharedDirector().displaySize();
menu = CCSprite.sprite("menubg.png");
menu.setPosition(CGPoint.ccp(menu.getContentSize().width / 2.0f, winSize.height / 2.0f));
CCMenuItemFont.setFontSize(15);
CCMenuItemFont.setFontName("Marker Felt");
CCMenuItemFont newGame = CCMenuItemFont.item("New Game");
// CCMenuItemFont newGame = CCMenuItemFont.item("New Game", this, selector)
CCMenuItemFont InsGame = CCMenuItemFont.item("Instaction",this,"instr");
// CCLabel label, CCNode rec, String cb
CCMenuItemFont snd = CCMenuItemFont.item("Sound on");
CCMenuItemFont ab = CCMenuItemFont.item("About FuguMobile");
CCMenuItemFont exit = CCMenuItemFont.item("Exit");
CCMenu mu= CCMenu.menu(newGame,InsGame,snd,ab,exit);
mu.setPosition(CGPoint.ccp(130.0f,130.0f));
mu.alignItemsVertically(10.0f);
// mu.ccAccelerometerChanged(10.0f, 10.0f, 0.0f);
addChild(menu);
addChild(mu);
// menu.setTag(2);
public void instr()
inst = CCSprite.sprite("inst.png");
CGSize winSize = CCDirector.sharedDirector().displaySize();
inst.setPosition(CGPoint.ccp(inst.getContentSize().width / 2.0f, winSize.height / 2.0f));
addChild(inst);
// intro.setTag(3);
public boolean ccTouchesEnded(MotionEvent event)
intro.runAction(CCSequence.actions(CCCallFuncN.action(this, "spriteMoveFinished")));
return true;
public void spriteMoveFinished(Object sender)
CCSprite sprite = (CCSprite)sender;
if (sprite.getTag() == 1)
menuText();
// if(sprite.getTag() == 3)
//
// menuText();
//
this.removeChild(sprite, true);
这是原码,求教~~
CCMenuItemFont *font = [CCMenuItemFont itemWithTarget:self selector:@selector(myMethod:)];吧!现在没有selector添加的地方啊!
这里有一个CCMenu的例子;
CCMenuItem *starMenuItem = [CCMenuItemImage itemFromNormalImage:@"ButtonStar.png" selectedImage:@"ButtonStarSel.png" target:self
selector:@selector(starButtonTapped:)];
starMenuItem.position = ccp(60, 60);
CCMenu *starMenu = [CCMenu menuWithItems:starMenuItem, nil];
starMenu.position = CGPointZero;
[self addChild:starMenu];
然后相应函数starButtonTapped,就可以有相应了。
cocos2d 中的菜单层次结构
【中文标题】cocos2d 中的菜单层次结构【英文标题】:Menu hierarchy in cocos2d 【发布时间】:2013-06-19 07:53:49 【问题描述】:是否可以在 CCMenu 中组织按钮,使它们的功能与其他菜单一样?比如这个浏览器的File、Edit、View等。
我现在用的是标准:
CCMenu *selectMenu = [CCMenu menuWithItems: item1, item2... nil];
[selectMenu alignItemsHorizontallyWithPadding:15];
CGSize winSize = [CCDirector sharedDirector].winSize;
CGPoint topLeft = CGPointMake(winSize.width / 2.0, winSize.height/1.035);
[selectMenu setPosition:topLeft];
[self addChild:selectMenu];
这行得通,但我有太多按钮无法排成一行,因此提出了这个问题。
【问题讨论】:
【参考方案1】:这是可能的,但您必须在用户单击菜单项时创建子菜单。
类似这样的:
CCMenu *menu = nil;
CCMenuItem *item = [CCMenuItemFont itemWithString:@"Edit" block:^(id sender)
CCMenu *submenu = nil;
CCMenuItem *subitem = [CCMenuItemFont itemWithString:@"SubItem" block:^(id sender)
//Do Stuff here
[submenu removeFromParent];
];
CCMenuItem *subitem2 = [CCMenuItemFont itemWithString:@"CloseSubMenu" block:^(id sender)
[submenu removeFromParent];
];
submenu = [CCMenu menuWithItems:subitem,subitem2, nil];
[menu addChild:submenu];
];
menu = [CCMenu menuWithItems:item, nil];
[self addChild:menu];
您仍然需要设置位置以确保它在屏幕上看起来不错。
【讨论】:
以上是关于刚刚开始学COCOS2D,在CCMenu中的菜单按键事件中,有按下的效果,但是没有回调按键指定的函数,求教啊~~的主要内容,如果未能解决你的问题,请参考以下文章