Cocos2d-x如何添加新场景及切换新场景(包括场景特效)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Cocos2d-x如何添加新场景及切换新场景(包括场景特效),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2877字,纯文字阅读大概需要5分钟。
内容图文
做了一天多的工作终于把此功能搞定了,实际上添加新场景花费不了多少时间,时间主要花在切换到另一个场景的实现上,主要原因是编译时出现了一个错误,百思不得其解,后来经过查资料不断摸索才知道自己问题的所在,改正了错误编译通过,实现了我想要的结果,看着那个场景切换的自由和切换过程中各种特效的绚丽,看在眼里,乐在心里。
下面开始我的探索之路:
首先新建一个场景,其实你可以参考HelloWorld场景建立自己的场景,当然你在新的场景里实现的功能由你自己来定,下面贴上我的新建场景代码:
SecondScene.h:
1 #include "cocos2d.h" 2 3class SecondScene : public cocos2d::Layer 4{ 5public: 6static cocos2d::Scene* createScene(); 7virtualbool init(); 8void menuCloseCallback(cocos2d::Ref* pSender); 9 CREATE_FUNC(SecondScene); 10 };
1 #include "SecondScene.h" 2 #include "HelloWorldScene.h" 3USING_NS_CC; 4 5 Scene* SecondScene::createScene() 6{ 7 auto scene = Scene::create(); 8 auto layer = SecondScene::create(); 9 scene->addChild(layer); 10return scene; 11} 1213bool SecondScene::init() 14{ 1516if ( !Layer::init() ) 17 { 18returnfalse; 19 } 2021 Size visibleSize = Director::getInstance()->getVisibleSize(); 22 Vec2 origin = Director::getInstance()->getVisibleOrigin(); 23 auto closeItem = MenuItemImage::create( 24"CloseNormal.png", 25"CloseSelected.png", 26 CC_CALLBACK_1(SecondScene::menuCloseCallback, this)); 2728 closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2 , 29 origin.y + closeItem->getContentSize().height/2)); 3031 auto menu = Menu::create(closeItem, NULL); 32 menu->setPosition(Vec2::ZERO); 33this->addChild(menu, 1); 3435 auto label = LabelTTF::create("Hello World world", "Arial", 24); 3637 label->setPosition(Vec2(origin.x + visibleSize.width/2, 38 origin.y + visibleSize.height - label->getContentSize().height)); 3940this->addChild(label, 1); 4142 auto sprite = Sprite::create("HelloWorld.png"); 4344 sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)); 4546this->addChild(sprite, 0); 4748returntrue; 49} 505152void SecondScene::menuCloseCallback(Ref* pSender) 53{ 54 CCScene* s = HelloWorld::createScene(); 55 Director::sharedDirector()- >replaceScene(CCTransitionFlipX::create(2.0f,s)); 56 }
在HelloWorld.cpp中修改HelloWorld::menuCloseCallback(Ref * pSender)
1 void HelloWorld::menuCloseCallback(Ref* pSender) 2{ 3 CCScene* secondScene = SecondScene::createScene(); 4 Director::sharedDirector()->pushScene(CCTransitionJumpZoom::create(2.0f,secondScene)); 5 }
到此,创建新场景完成,下面就是编译运行切换到新的场景中实现切换的特效。
在编译过程中我遇到个问题如下,这个问题费了很长时间才解决。
jni/../../Classes/HelloWorldScene.cpp:118: error: undefined reference to ‘SecondScene::createScene()‘
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [obj/local/armeabi/libcocos2dcpp.so] Error 1
解决方法是:加入每个新场景都要先注册一下,找到jni-->Classes目录下的Android.mk文件,加入新的场景文件SecondScene.cpp
1 LOCAL_SRC_FILES := hellocpp/main.cpp 2 ../../Classes/AppDelegate.cpp 3 ../../Classes/HelloWorldScene.cpp 4 ../../Classes/SecondSce
重新编译通过,点击场景的菜单即可实现切换特效效果。
原文:http://www.cnblogs.com/cocos2014/p/3941364.html
内容总结
以上是互联网集市为您收集整理的Cocos2d-x如何添加新场景及切换新场景(包括场景特效)全部内容,希望文章能够帮你解决Cocos2d-x如何添加新场景及切换新场景(包括场景特效)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。