学习视差节点的心得
2015-07-01 10:16
344 查看
之前想要实现关于视差的效果,一直都是想自己写代码,今天偶然看见了关于视差节点的文章,觉得很有用必须学习一下!
首先视差节点的类型名称是ParallaxNode,创建方法很简单:
创建完成之后,需要往里面添加精灵节点,我再这里创建两个精灵节点
由于需要产生视差效果,所以我们需要把这两个精灵添加到这个ParallaxNode里面:
需要说明的是addChild里面的各个参数的作用:
(1)不用说了吧
(2)ZOrder即排列顺序
(3)在XY轴上相对于pn的移动比例
(4)在pn里面的相对位置
而文档里面是这样描述addChild()的:
添加完成之后,我们需要对pn进行移动,当我们移动pn的时候,内部的两个精灵也会进行移动,但其移动的幅度会根据上述的第三个参数而指定。
我们一般使用update(float delta)来指定移动速度。
当然我们也必须要在onEnter()函数中添加scheduleUpdate()函数来启动schedule。
其中update(float delta)中的内容是:
首先视差节点的类型名称是ParallaxNode,创建方法很简单:
this->pn = ParallaxNode::create();
创建完成之后,需要往里面添加精灵节点,我再这里创建两个精灵节点
auto background = Sprite::create("HelloWorld.png"); background->setAnchorPoint(Vec2(0, 0)); background->setPosition(Vec2(0, 0)); auto grass = Sprite::create("grass.png"); grass->setAnchorPoint(Vec2(0, 0)); grass->setPosition(0, 0);
由于需要产生视差效果,所以我们需要把这两个精灵添加到这个ParallaxNode里面:
this->pn->addChild(background, -1, Vec2(1.0f, 1.2f), Vec2::ZERO); this->pn->addChild(grass, 1, Vec2(2.0f, 2.4f), Vec2::ZERO);
需要说明的是addChild里面的各个参数的作用:
(1)不用说了吧
(2)ZOrder即排列顺序
(3)在XY轴上相对于pn的移动比例
(4)在pn里面的相对位置
而文档里面是这样描述addChild()的:
void addChild (Node *child, int z, const Vec2 ¶llaxRatio, const Vec2 &positionOffset)
添加完成之后,我们需要对pn进行移动,当我们移动pn的时候,内部的两个精灵也会进行移动,但其移动的幅度会根据上述的第三个参数而指定。
我们一般使用update(float delta)来指定移动速度。
当然我们也必须要在onEnter()函数中添加scheduleUpdate()函数来启动schedule。
其中update(float delta)中的内容是:
auto x = this->pn->getPositionX() - 1; pn->setPositionX(x);
相关文章推荐
- pl/sql Developer 9注册码
- Linux下出现Read-only file system的解决办法
- Kafka剖析(一):高扩展、高吞吐的分布式消息系统初探
- Windows server 2008,IIS7不支持MVC url映射
- 算法---完美洗牌(难)
- 消费者与生产者问题
- Apache Http Client 4 上传多个文件 (示例代码可在 github 上找到)
- 《软件工程》 团队项目展示
- 自己不熟悉的ASP.net基础
- SQL Server Update 语句使用Nolock 语法
- 广告质量
- vlc/ffmepg/mplayer/gstreamer/openmax/mpc/ffdshow/directshow
- C# Stream 和 byte[] 之间的转换
- 目标图像特征提取算子(HOG)
- CREATE TABLE
- 数据库连接过多问题
- "0" 并不一定是 假 (false)
- nativescript环境搭建
- 广告点击率预测 [离线部分]
- ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component解决