Cocos2d-JS中的文本菜單

文本菜單是菜單項只能顯示文本,文本菜單類包括了cc.MenuItemLabel、cc.MenuItemFont和cc.MenuItemAtlasFont。cc.MenuItemLabel是個抽象類,具體使用的時候是使用cc.MenuItemFont和cc.MenuItemAtlasFont兩個類。
文本菜單類cc.MenuItemFont,它的其中一個構造函數定義以下:
html

[html] view plaincopy微信

  1. ctor(value,                                 //要顯示的文本  app

  2. callback,                               //菜單操做的回調函數指針  函數

  3. target)   字體

文本菜單類cc.MenuItemAtlasFont是基於圖片集的文本菜單項,它的其中一個構造函數定義以下:
網站

[html] view plaincopythis

  1. ctor (value,                        //要顯示的文本  spa

  2.             charMapFile,                //圖片集文件  .net

  3.             itemWidth,                  //要截取的文字在圖片中的寬度  指針

  4.             itemHeight,                 //要截取的文字在圖片中的高度  

  5.         startCharMap                //開始字符  

  6.             callback )                  //菜單操做的回調函數指針  

本節咱們會經過一個實例介紹一下文本菜單的使用,這個實例如圖4-12所示,其中菜單Start是使用cc.MenuItemFont實現的,菜單Help是使用cc.MenuItemAtlasFont實現的。

文本菜單實例

下面咱們看看app.js 中HelloWorldLayer中初始化代碼以下: 

[html] view plaincopy

  1. var HelloWorldLayer = cc.Layer.extend({  

  2.       

  3.     ctor:function () {  

  4.         this._super();  

  5.   

  6.   

  7.         var size = cc.director.getWinSize();  

  8.   

  9.   

  10.         var bg = new cc.Sprite(res.background_png);  

  11.         bg.x = size.width/2;  

  12.         bg.y = size.height/2;  

  13.         this.addChild(bg);  

  14.          

  15.         cc.MenuItemFont.setFontName("Times New Roman");                     ①  

  16.         cc.MenuItemFont.setFontSize(86);                                    ②  

  17.   

  18.   

  19.         var item1 = new cc.MenuItemFont("Start", this.menuItem1Callback, this);             ③  

  20.           

  21.         var item2 = new cc.MenuItemAtlasFont("Help",   

  22.                 res.charmap_png,   

  23.                 48, 65,' ',  

  24.                 this.menuItem2Callback, this);                                  ④  

  25.           

  26.        

  27.           

  28.         var  mn = new cc.Menu(item1, item2);                                ⑤  

  29.         mn.alignItemsVertically();                                          ⑥  

  30.         this.addChild(mn);                                              ⑦  

  31.           

  32.         return true;  

  33.     },  

  34.     menuItem1Callback:function (sender) {  

  35.         cc.log("Touch Start Menu Item " + sender);  

  36.     },  

  37.     menuItem2Callback:function (sender) {  

  38.         cc.log("Touch Help Menu Item " + sender);  

  39.     }  

  40. });  

上述代碼第①和②行是設置文本菜單的文本字體和字體大小。第③行代碼是建立cc.MenuItemFont菜單項對象,它是一個通常文本菜單項,構造函數的第一個參數是菜單項的文本內容,第二個參數是點擊菜單項回調的函數指,this.menuItem1Callback是函數指針,this表明函數所在的對象。
第④行代碼是建立一個cc.MenuItemAtlasFont菜單項對象,這種菜單項是基於圖片集的菜單項。res.charmap_png變量也是在resource.js文件中定義的,表示"res/menu/tuffy_bold_italic-charmap.png"路徑。
還有第⑤行代碼var  mn = new cc.Menu(item1, item2)是建立菜單對象,把以前建立的菜單項添加到菜單中。第⑥行代碼mn.alignItemsVertically()是設置菜單項垂直對齊。第⑦行代碼是this.addChild(mn)是把菜單對象添加到當前層中。
注意  上述代碼第④行cc.MenuItemAtlasFont類在Web平臺下運行正常做用,可是在JSB本地運行顯示有誤,咱們能夠使用下面代碼替換。

[html] view plaincopy

  1. var labelAtlas = new cc.LabelAtlas("Help", res.charmap_png, 48, 65, ' ');  

  2. var item2 = new cc.MenuItemLabel(labelAtlas, this.menuItem2Callback, this );  


更多內容請關注最新Cocos圖書《Cocos2d-x實戰:JS卷——Cocos2d-JS開發

本書交流討論網站:http://www.cocoagame.net

歡迎加入Cocos2d-x技術討論羣:257760386

更多精彩視頻課程請關注智捷課堂Cocos課程:http://v.51work6.com

智捷課堂現推出Cocos會員,敬請關注:http://v.51work6.com/courseInfoRedirect.do?action=netDetialInfo&courseId=844465&categoryId=0

《Cocos2d-x實戰 JS卷》現已上線,各大商店均已開售:

京東:http://item.jd.com/11659698.html

歡迎關注智捷iOS課堂微信公共平臺,瞭解最新技術文章、圖書、教程信息

相關文章
相關標籤/搜索