在coco2d-x中,两个场景间进行传值可以说是一种问题
就如:
你有两个场景,第一场景是用户登录界面,第二场景则是你登录后的界面,你如何将用户登录的值传到第二个场景呢
在我朋友(曾文理)与同事的帮助下,终于可以传值了,嘿嘿。
我总结为两种方法(有两个场景 firstScene,secondScene)
一:1)在secondScene.h 中加入成员变量,如 int sceneNum;
并在secondScene.cpp的init()方法里,sceneNum = 0;//可以省略这句
2)在firstScene转到第二场景时,调用一下一下方法
[HTML] view plain copy <spanstyle="white-space:pre"></span>CCScene*scene=CCScene::create(); secondScene*layer=secondScene::create(); layer->sceneNum=1; scene->addChild(layer);//类似firstScene中的scene()方法 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 两个场景间进行传参数全部内容,希望文章能够帮你解决cocos2d-x 两个场景间进行传参数所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)