cocos2d-x Programmers Guide v3.3 译本和阅读笔记(第5章:创建和转换场景)

原著是英文,本文只是一个个人的简单理解的中文的非正式翻译,供自己学习使用,参考需谨慎。
向原著的作者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));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值