Cocos2d-JS中的精靈菜單和圖片菜單

精靈菜單的菜單項類是cc.MenuItemSprite,圖片菜單的菜單項類是cc.MenuItemImage。因爲cc.MenuItemImage繼承於cc.MenuItemSprite,因此圖片菜單也屬於精靈菜單。爲何叫精靈菜單呢?那是由於這些菜單項具備精靈的特色,咱們可讓精靈動起來,具體使用時候是把一個精靈放置到菜單中做爲菜單項。
精靈菜單項類cc.MenuItemSprite,它的其中一個構造函數定義以下:
html

[html] view plaincopy在CODE上查看代碼片派生到個人代碼片微信

  1. ctor(normalSprite,                                  //菜單項正常顯示時候的精靈  app

  2.             selectedSprite,                         //選擇菜單項時候的精靈  函數

  3.             callback,                               //菜單操做的回調函數指針  網站

  4.             target  this

  5. )   spa

使用cc.MenuItemSprite比較麻煩,在建立cc.MenuItemSprite以前要先建立三種不一樣狀態所須要的精靈(即normalSprite、selectedSprite和disabledSprite)。cc.MenuItemSprite還有一些其它的構造函數,在這些函數中能夠省略disabledSprite參數。
若是精靈是由圖片構成的,咱們可使用cc.MenuItemImage實現與精靈菜單一樣的效果。cc.MenuItemImage類的其中一個構造函數定義以下:
.net

[html] view plaincopy在CODE上查看代碼片派生到個人代碼片指針

  1. ctor(normalImage,                           //菜單項正常顯示時候的圖片  code

  2.             selectedImage,                          //選擇菜單項時候的圖片  

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

  4.             target  

  5. )   

cc.MenuItemImage還有一些構造函數,在這些函數中能夠省略disabledImage參數。
本節咱們會經過一個實例介紹一下精靈菜單和圖片菜單的使用,這個實例以下圖所示。


精靈菜單和圖片菜單實例

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

[html] view plaincopy在CODE上查看代碼片派生到個人代碼片

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

  2.       

  3.             ctor:function () {  

  4.      

  5.         this._super();  

  6.   

  7.   

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

  9.   

  10.   

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

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

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

  14.         this.addChild(bg);          

  15.           

  16.         // 開始精靈  

  17.         var startSpriteNormal = new cc.Sprite(res.start_up_png);                        ①  

  18.         var startSpriteSelected = new cc.Sprite(res.start_down_png);                    ②  

  19.         var startMenuItem = new cc.MenuItemSprite(  

  20.                 startSpriteNormal,  

  21.                 startSpriteSelected,  

  22.                 this.menuItemStartCallback, this);                              ③  

  23.         startMenuItem.x = 700;                                          ④  

  24.         startMenuItem.y = size.height - 170;                                    ⑤  

  25.           

  26.         // 設置圖片菜單  

  27.         var settingMenuItem = new cc.MenuItemImage(  

  28.                 res.setting_up_png,  

  29.                 res.setting_down_png,  

  30.                 this.menuItemSettingCallback, this);                                ⑥  

  31.         settingMenuItem.x = 480;  

  32.         settingMenuItem.y = size.height - 400;                                

  33.   

  34.   

  35.         // 幫助圖片菜單  

  36.         var helpMenuItem = new cc.MenuItemImage(  

  37.                 res.help_up_png,  

  38.                 res.help_down_png,  

  39.                 this.menuItemHelpCallback, this);                               ⑦  

  40.         helpMenuItem.x = 860;  

  41.         helpMenuItem.y = size.height - 480;                                       

  42.   

  43.   

  44.         var mu = new cc.Menu(startMenuItem, settingMenuItem, helpMenuItem);         ⑧  

  45.         mu.x = 0;     

  46.         mu.y = 0;  

  47.         this.addChild(mu);                                                

  48.     },  

  49.     menuItemStartCallback:function (sender) {  

  50.         cc.log("menuItemStartCallback!");  

  51.     },  

  52.     menuItemSettingCallback:function (sender) {  

  53.         cc.log("menuItemSettingCallback!");  

  54.     },  

  55.     menuItemHelpCallback:function (sender) {  

  56.         cc.log("menuItemHelpCallback!");  

  57.     }      

  58. });  

在上面的代碼中第①~②行是建立兩種不一樣狀態的精靈,第③行代碼是建立精靈菜單項cc.MenuItemSprite對象,第④~⑤行代碼是設置開始菜單項(startMenuItem)位置,注意這個座標是(700, 170),因爲(700, 170)的座標是UI座標,須要轉換爲OpenGL座標,這個轉換過程就是startMenuItem.y = size.height - 170。
第⑥和⑦行代碼是建立圖片菜單項cc.MenuItemImage對象。第⑧行代碼是建立cc.Menu對象。
另外,因爲背景圖片大小是1136 x 640,咱們能夠在建立工程的時候,建立一個1136 x 640橫屏的工程,若是你建立工程不是這個尺寸,咱們能夠修改根目錄下的main.js文件,內容以下:

[html] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. cc.game.onStart = function(){  

  2.     cc.view.setDesignResolutionSize(1136, 640, cc.ResolutionPolicy.EXACT_FIT);      ①  

  3.     cc.view.resizeWithBrowserSize(true);  

  4.     //load resources  

  5.     cc.LoaderScene.preload(g_resources, function () {  

  6.         cc.director.runScene(new HelloWorldScene());  

  7.     }, this);  

  8. };  

  9. cc.game.run();  

咱們須要在第①行中修改屏幕大小代碼。



更多內容請關注最新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課堂微信公共平臺,瞭解最新技術文章、圖書、教程信息

相關文章
相關標籤/搜索