1. 程式人生 > >Cocos2d-x學習筆記(九)例項——場景自動切換

Cocos2d-x學習筆記(九)例項——場景自動切換

【關於場景自動切換】

如何實現場景的自動切換?我嘗試過很多種方法,比如在AppDelegate.cpp檔案中的applicationDidFinishLaunching()函式中,

想在pDirector->runWithScene(pLandlords);中直接使用replaceScene()函式替換場景,結果是不可行的;

想過在init()onEnter()函式裡通過時間排程來實現場景自動切換,答案還是否定。

最後發現,伴隨精靈動作裡面的函式回撥動作實現,可在函式回撥動作定義回撥函式,

在其函式體類替換場景即可(場景自動切換可用於實現簡單動畫效果)。

【場景自動切換的實現】

1)定義列舉常量用於標識精靈

  enum

  {

  kTag =1,

  };

init()函式建立精靈,截圖是函式部分程式碼

2)在onEnter()函式中通過kTag獲取精靈物件,建立動作序列(必須要包含函式回撥動作),

這裡先新增一個延時動作(也叫空動作)為了使場景自動切換效果更好、更明顯。

void Landlords::onEnter()

{

CCLayer::onEnter();

CCSprite

pSprite = (CCSprite*)getChildByTag(kTag);

pSprite->runAction(CCSequence::create(CCDelayTime::create(2),CCCallFunc::create(this,

callfunc_selector(Landlords::ShowBack)),NULL));

}

3)在回撥動作是引用了一個回撥函式Landlords::ShowBack,在其標頭檔案中申明,

然後在函式實現時切換場景即可(在切換場景時可新增新增切換動畫效果)

 void

 Landlords::ShowBack()

{

//切換到用登入介面

CCScene *pHost = HostScene::scene();

CCDirector::sharedDirector()->replaceScene(pHost);

}

HostScene類再此不做介紹,主要用於佈景用,可用任意場景來替換。

【執行效果】

由於精靈執行的動作不同,所以執行效果也會有所不同,本例項的執行效果為延遲2秒後自動切換到另一個場景:(如圖)

其他效果可在切換場景時自定義場景動畫切換效果自行嘗試

【總結】

實現場景自動切換走了很多誤區,最後才發現採用回撥函式動作實現,不用動畫亦可實現簡易的動畫效果。

(注:圖片資源切勿應用到商業用途,以便引起不必要的麻煩)

完整原始碼:http://download.csdn.net/detail/ll_gg_tt/6020563