日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【玩转cocos2d-x之七】场景类CCScene和布景类CCLayer

發布時間:2024/4/11 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【玩转cocos2d-x之七】场景类CCScene和布景类CCLayer 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原創作品,轉載請標明:http://blog.csdn.net/jackystudio/article/details/12708811


場景類CCScene和布景類CCLayer都是作為一個容器來使用,這里簡單地看下它們的實現:


1.場景類:CCScene


CCScene類繼承于CCNode,它的實現很簡單,就是基本上沒添加什么內容。。。它只是作為一個容器(父節點)的抽象概念存在。對比CCNode差別有:

(1)構造函數中設置了不使用錨點定位,而是使用了坐標原點,即使設置了錨點也不起作用。

m_bIgnoreAnchorPointForPosition是CCNode的屬性,用于CCScene和CCLayer。

[cpp]?view plaincopy
  • m_bIgnoreAnchorPointForPosition?=?true; ?
  • (2)在init中設置場景的大小。節點的初始化大小為CCSizeZero,也就是沒有大小。CCScene初始化時設置了場景的大小,即窗口大小。

    [cpp]?view plaincopy
  • this->setContentSize(pDirector->getWinSize());??

  • 2.布景類:CCLayer


    CCLayer相對CCScene而言會比較麻煩一點,因為他不僅要作為容器使用,而且還要實現一些游戲功能,所以它繼承了CCTouchDelegate,CCAccelerometerDelegate和CCKeypadDelegate,這三個類是用來處理觸摸事件,重力感應事件和鍵盤事件的,默認初始化都是不可用,需要手動設置開啟。

    (1)CCLayer和CCScene的初始化差不多,也是構造函數中設置不使用錨點定位,init函數中設置了層的大小,即窗口大小。

    (2)常用接口:

    [cpp]?view plaincopy
  • //初始化函數,添加精靈就在這里進行??
  • virtual?bool?init();??
  • ??
  • //分配內存,標記autoRelease??
  • static?CCLayer?*create(void);??
  • ??
  • //層進入回調??
  • virtual?void?onEnter();??
  • //層退出回調??
  • virtual?void?onExit();??
  • //如果層進入帶效果,效果完成時回調??
  • virtual?void?onEnterTransitionDidFinish();??
  • ??
  • //觸摸事件(單點和多點)??
  • virtual?bool?ccTouchBegan(CCTouch?*pTouch,?CCEvent?*pEvent);??
  • virtual?void?ccTouchMoved(CCTouch?*pTouch,?CCEvent?*pEvent);??
  • virtual?void?ccTouchEnded(CCTouch?*pTouch,?CCEvent?*pEvent);??
  • virtual?void?ccTouchCancelled(CCTouch?*pTouch,?CCEvent?*pEvent);??
  • virtual?void?ccTouchesBegan(CCSet?*pTouches,?CCEvent?*pEvent);??
  • virtual?void?ccTouchesMoved(CCSet?*pTouches,?CCEvent?*pEvent);??
  • virtual?void?ccTouchesEnded(CCSet?*pTouches,?CCEvent?*pEvent);??
  • virtual?void?ccTouchesCancelled(CCSet?*pTouches,?CCEvent?*pEvent);??
  • ??
  • //重力感應相關??
  • virtual?void?didAccelerate(CCAcceleration*?pAccelerationValue);??
  • void?registerScriptAccelerateHandler(int?nHandler);??
  • void?unregisterScriptAccelerateHandler(void);??
  • ??
  • //注冊觸摸分發,默認是addStandardDelegate??
  • virtual?void?registerWithTouchDispatcher(void);??
  • ??
  • //設置/獲取釋放觸摸可用??
  • virtual?bool?isTouchEnabled();??
  • virtual?void?setTouchEnabled(bool?value);??
  • ??
  • //設置/獲取觸摸模式??
  • virtual?void?setTouchMode(ccTouchesMode?mode);??
  • virtual?int?getTouchMode();??
  • ??
  • //設置/獲取觸摸優先級,默認為0??
  • virtual?void?setTouchPriority(int?priority);??
  • virtual?int?getTouchPriority();??
  • ??
  • //設置/獲取是否接收重力感應事件??
  • virtual?bool?isAccelerometerEnabled();??
  • virtual?void?setAccelerometerEnabled(bool?value);??
  • virtual?void?setAccelerometerInterval(double?interval);??
  • ??
  • //設置/獲取是否接收鍵盤事件??
  • virtual?bool?isKeypadEnabled();??
  • virtual?void?setKeypadEnabled(bool?value);??
  • ??
  • //返回鍵和菜單鍵的回調,需要設置接收鍵盤事件??
  • virtual?void?keyBackClicked(void);??
  • virtual?void?keyMenuClicked(void);??

  • 3.顏色布景層:CCLayerRGBA,CCLayerColor和CCLayerGradient


    (1)CCLayerRGBA和CCNodeRGBA差不多,也是用于設置RGB值和Blend值,同時可以傳遞到子節點。它的相關接口參見CCNodeRGBA。

    (2)CCLayerColor只是一個單純的可以繪制顏色的層??梢詭腴L寬參數,繪制一個矩形的布景層。

    (3)CCLayerGradient繼承于CClayerColor,是一個帶有漸變效果的布景層。


    4.多層布景層:CCLayerMultiplex


    CCLayerMultiplex繼承與CCLayer,相當于一個層容器,他可以包含多個層,但是同一時間只能顯示一個CCLayer?!段医蠱T》的第一個界面菜單那一塊就是這么處理的。CCLayerMultiplex最重要的函數就是:

    [cpp]?view plaincopy
  • //切換布景層??
  • pLayerMultiplex->switchTo(item->getTag());??
  • pLayerMultiplex->switchToAndReleaseMe(item->getTag()); ?
  • 兩者的差別在于是否釋放當前處于活動的布景層。

    總結

    以上是生活随笔為你收集整理的【玩转cocos2d-x之七】场景类CCScene和布景类CCLayer的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。