cocos2d-x 两个场景间进行传参数

转载请注明出处:http://blog.csdn.net/cwn0812

 代码不一定现在版本可用,但是在接下来的场景中增加一个子节点来实现传值这种思想是可以采用的

在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为多少。

 

差不多就这样了,希望对大家有所帮助,如有疑问,请提问。

你可能感兴趣的:(cocos2d-x 两个场景间进行传参数)