cocos2dx中菜單menu 和 menuItem


菜單Menu是專門用來承載菜單按鈕的Layer圖層,圖層中的子節點只能夠是菜單項MenuItem或其子類。通常先創建菜單項MenuItem,然后使用一個或多個菜單項生成菜單Menu,最后把Menu加入當前Layer圖層。

如果直接在層中添加MenuItem也可以正常顯示,但是無法響應回調函數,因為Menu是繼承至Layer,也就繼承了觸摸的相關事件,而MenuItem只是從Node繼承而來,並不響應觸摸,因此無法調用回調函數。

由於CCMenu的父類為Layer,所以錨點為(0,0),且無法設置錨點。Menu的默認原點坐標為屏幕正中心(winSize.width/2, winSize.height/2)。

而對於MenuItem是添加在Menu層中的,所以MenuItem的位置是相對於Menu層的偏移位置。MenuItem相對於Menu的偏移量默認為(0,0),且菜單項的錨點默認為(0.5,0.5)。

值得注意的是:Menu包含了多個子菜單項,每個子菜單項的位置都不一樣,如果定義了Menu的位置,那它作為父節點會影響到所有的子菜單項的位置,所以一般我們都是吧Menu的位置設置在PointZero,然后設置MenuItem的位置(也就是相對父節點的偏移量)來定位整個菜單。

關於菜單項:

MenuItem繼承自Node,所以它的子類菜單項都可以使用Node的相關操作。

MenuItem是所有菜單項的父類,建議不要直接使用該類,因為它並不包含具體顯示的功能。

作為其它菜單項的父類,主要提供了一下三個功能:

(1)提供了基本按鈕的狀態:正常、選中、禁用。

(2)為按鈕實現了基本的回調函數機制。當玩家點積按鈕后,就會調用執行相應的回調函數。

(3)觸碰菜單項,附有自動放大效果。

菜單項的子類可以分成三類,總共六個:

(1)文字菜單項:MenuItemLabel、MenuItemAtlasFont、MenuItemFont;

(2)圖片菜單項:MenuItemSprite、MenuItemImage;

(3)切換菜單項:MenuItemToggle。

而關於各個菜單項之前的區別這里因為內容過多不再贅述,大家可以去查看他的源碼和官方的文檔獲取相關知識,源碼是最好的學習資料。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM