cocos2d-x Programmers Guide v3.3 译本和阅读笔记(第5章:创建和转换场景)
2015-11-12 10:06
381 查看
原著是英文,本文只是一个个人的简单理解的中文的非正式翻译,供自己学习使用,参考需谨慎。
向原著的作者SlackMoehrle, Ricardo, Justin, Nite , Kai, Minggo, Wenhai, Tony, Yingtao, Rao 致敬。
当我们运行这段代码的时候,我们看到一个场景,上面有一个标签和一个精灵。虽然没有其他的操作,但是这是一个开始。
场景转换方法
这里有不少场景转换的方法,每一种都有不同的功能,我们一起看一下:
runWithScene - 这个方法只在第一次使用。这个方法能够启动你的第一个游戏场景。
replaceScene - 立刻替换场景。
pushScene - 挂起正在运行的场景。将当前场景压入一个挂起场景的栈中。只有当前有正在运行的场景才能调用这个方法。
popScene - 这个场景将会替换正在运行的场景。正在运行的场景将会被删除。只有当前有场景正在运行才能调用这个方法。
场景转换效果
你可以为你的场景转换添加视觉效果
向原著的作者SlackMoehrle, Ricardo, Justin, Nite , Kai, Minggo, Wenhai, Tony, Yingtao, Rao 致敬。
第5章:创建和转换场景(Scenes)
什么是场景?
游戏中的场景是精灵(Sprites),标签(Labels),节点(Nodes)和其他对象的一个容器。场景以帧为基础控制逻辑和渲染。你至少需要一个场景来开始你的游戏。你可以把这看成是一个电影。场景上的事物就是用户看到的正在发生的事物。你可以建立任意数量的场景,并且非常容易的完成他们之间的切换。Cocos2d-x提供了场景转换和一些非常酷的转换效果。创建场景
这个非常容易auto myScene = Scene:create();
还记得场景图形(Scene Graph)么?
在本书的第2章,我们学习了关于场景图形的知识,并且知道了他是如何影响游戏的图形绘制工作。它决定了GUI图形的绘制顺序这一点非常重要。z-order也非常重要!一个简单的场景
我们来建立一个简单的场景。记住,Cocos2d-x使用的是右手坐标系。这就以为着 屏幕/显示区域 左下角是坐标的原点。当你开始设定你游戏元素的位置的时候,这里就是你计算的原点。我们来创建一个简单的场景并向上面添加一些元素。auto dirs = Director::getInstance(); Size = visibleSize = dirs->getVisibleSize(); auto myScene = Scene:create(); auto label1 = Label:createWithTTF("My Game","Marker Felt.ttf", 36); label1->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2)); myScene->addChild(label1); auto sprite1 = Sprite::create("mysprite.png"); sprite1->setPosition(Vec2(100, 100)); myScene->addChild(sprite1);
当我们运行这段代码的时候,我们看到一个场景,上面有一个标签和一个精灵。虽然没有其他的操作,但是这是一个开始。
两个场景之间的转换
在游戏中有时需要完成两个场景的转换。可能是游戏的开始,关卡的改变或者是游戏结束。Cocos2d-x提供了一些场景转换的方法。场景转换方法
这里有不少场景转换的方法,每一种都有不同的功能,我们一起看一下:
auto myScene = Scene::create();
runWithScene - 这个方法只在第一次使用。这个方法能够启动你的第一个游戏场景。
Director::getInstance()->runWithScene(myScene);
replaceScene - 立刻替换场景。
Director::getInstance()->replaceScene(myScene);
pushScene - 挂起正在运行的场景。将当前场景压入一个挂起场景的栈中。只有当前有正在运行的场景才能调用这个方法。
Director::getInstance()->pushScene(myScene);
popScene - 这个场景将会替换正在运行的场景。正在运行的场景将会被删除。只有当前有场景正在运行才能调用这个方法。
Director::getInstance()->popScene(myScene);
场景转换效果
你可以为你的场景转换添加视觉效果
auto myScene = Scene::create(); //Transition Fade Director::getInstance()->replaceScene(TransitionFade::create(0.5), myScene, Color3B(0, 255, 255)); //FlipX Director::getInstance()->replaceScene(TransitionFlipX::create(2, myScene)); //Transition Slide In Director::getInstance()->replaceScene(TransitionSlideInT::create(1, myScene));
相关文章推荐
- 我是运营,我没有假期
- 每个 Linux 游戏玩家都绝不想要的恼人体验
- 在 Fedora 上使用 Steam play 和 Proton 来玩 Windows 游戏
- Steam 让我们在 Linux 上玩 Windows 的游戏更加容易
- 如何使用 Steam Play 在 Linux 上玩仅限 Windows 的游戏
- 新一代iPad适配应用之游戏篇
- VB实现的《QQ美女找茬游戏》作弊器实例
- C#实现洗牌游戏实例
- C#实现的算24点游戏算法实例分析
- C#实现简单的井字游戏实例
- C++编写简单的打靶游戏
- Cocos2d-x中背景音乐和音效使用实例
- C++实现基于控制台界面的吃豆子游戏
- Cocos2d-x学习笔记之CCScene、CCLayer、CCSprite的默认坐标和默认锚点实验
- Cocos2d-x UI开发之CCControlPotentiometer控件类使用实例
- Cocos2d-x UI开发之文本类使用实例
- Cocos2d-x保存用户游戏数据之XML文件是否存在问题判断方法
- Cocos2d-x UI开发之菜单类使用实例
- Cocos2d-x UI开发之CCControlButton控件类实例
- Cocos2d-x学习笔记之世界坐标系、本地坐标系、opengl坐标系、屏幕坐标系