cocos2d-x 兩個場景間進行傳引數

平頭小子發表於2016-05-25

在coco2d-x中,兩個場景間進行傳值可以說是一種問題

就如:

         你有兩個場景,第一場景是使用者登入介面,第二場景則是你登入後的介面,你如何將使用者登入的值傳到第二個場景呢

 

在我朋友(曾文理)與同事的幫助下,終於可以傳值了,嘿嘿。

我總結為兩種方法(有兩個場景 firstScene, secondScene)

一:1)在secondScene.h 中加入成員變數,如 int sceneNum;

        並在secondScene.cpp的init()方法裡,sceneNum = 0;//可以省略這句

         2)在firstScene轉到第二場景時,呼叫一下一下方法

              

[html] view plain copy
  1. <span style="white-space:pre">  </span>   CCScene* scene = CCScene::create();  
  2.            secondScene *layer = secondScene::create();  
  3.            layer->sceneNum = 1;  
  4.            scene->addChild(layer);//類似firstScene中的scene()方法  
  5.            CCDirector::sharedDirector()->replaceScene(CCTransitionFade::create(1.5f,scene));  

       3)在secondScene.cpp的驗證sceneNum 的值是多少

            比如,你可以再點選事件中ccTouchBegan()中寫入

  CCLOG("...........");
 if (sceneNum == 0)
 {
  CCLOG("00000000000");
 }
 else if(sceneNum == 1)
 {
  CCLOG("1111111111111111111");
 }
 CCLOG("...........");

你就發現就為輸出1111111111111了;

二:1)在secondScene.h中新增一個靜態引數:static int sceneNum;

              在secondScene.cpp中的方法外面寫一個全域性變數

                   int TableViewLayer::sceneNum = 0;

           2)在firstScene.h中類外寫 class secondScene;並在屬性中寫secondScene* secondLayer;

        3)在firstScene.cpp轉到第二場景方法寫

                          secondScene->sceneNum = 1;

                   CCScene* scene = secondScene::scene();//一定要secondScene->sceneNum = 1放在第一行,因為此時init中sceneNum的值為1,否則則為0;
                   CCDirector::sharedDirector()->replaceScene(CCTransitionFade::create(1.5f,scene));

        4)   然後就像上面說的,試試看sceneNum為多少。

 

差不多就這樣了,希望對大家有所幫助,如有疑問,請提問。

相關文章