(本文写作基于千锋3g学院提供的第三季讲授视频编写,更多资料和资源下载地址请看笔记扉页:传送门)
看一下图先。
今天我们进入到游戏开始页面,用到菜单栏CCMenu
终于有个可以碰的东西了,感觉有点摩拳擦掌了对吧?
CCMenu的用处挺广泛的,可设置的东西也地方也很多,我们这里写写基本的用法。
首先我们要了解几个类的继承关系:
(取自原教学视频)
我们今天的重点是:
CCMenuItem
CCMenuItemFont
CCMenuItemSprite
CCMenuItemImage
CCMenu(继承于CCLayer)
总结一下这几个类的使用关系和相应创建和设置方法
(文字打出来发表之后会变样,还是用图片吧。。)
总体来说菜单(CCMenu)里面可以加入纯字体(CCMenuItemLabel)以及图片(CCMenuItemSprite)两种菜单选项(CCMenuItem)
然后是关于CCMenu的设置:
1-注意+(id)menuWithItems:方法可以一次插入多个CCMenuItem对象,最后必须以nil作为结束:
如:[CCMenu menuWithItems: CCMenuItem1, CCMenuItem2, ....., nil ];
2-(void) setPosition:设置位置
3.如果菜单仲插入多个选项,则需要设置排列方式,水平排列或者是竖直排列。
-(void) alignItemsHorizontally(WithPadding:)
-(void) alignItemsVertically(WithPadding:)
里面的Padding是Items之间的间隔。
4.最后加入到场景或者图层当中,使用CCNode的方法-(void) addChild:
这就可以创建一个可以按的按钮菜单了。
其中说明一下CCMenuItemSprite中的一些使用问题:
我们看到+(id)itemFromNormalSprite:(CCNode<CCRBGAProtocol> *)
selectedSprite:(CCNode<CCRBGAProtocol> *)
target:self
selector:(SEL)
这个方法里面的(CCNode<CCRBGAProtocol>*)这个参数类型,这里是使用了一些关于着色的代理,我们只需要给它传进一个CCSprite对象就可以了
selectedSprite:选择时显示的图片,可为空nil。但有一点要注意的是,你不可以重复使用已经使用在NormalSprite作为参数的CCSprite对象,你必须为这两个参数分别创建两个CCSprite对象。
为了按起来有点动感,本人用同一张图片创建了两个大小不一样的两个CCSprite对象作为开始按钮的两个参数。这里就出现一个问题了,之前所说过的一个锚点貌似在这里没有发挥作用,当我点击菜单按钮时,图片的确是变大了,但它的锚点始终在cpp(0, 0)处,以致于变大之后很不自然地“走位”了。之后我就把后面的图缩放的比例调到1.03,勉强还可以看一下。= =现在还在纠结中。
最后贴一篇详解文章:这里这里