cocos2d-x ParallaxNode 视差节点

来源:互联网 发布:淘宝开店资料出售 编辑:程序博客网 时间:2024/05/21 14:01

版本为cocos2d-x 3.2 

它的作用就是让子节点以不同的速率运动,比如让一个节点运动的慢一点,一个节点运动的快一点,体现出的效果就是远处的景物运动的慢一点,近处的景物移动的快一点。简单实现代码如下:

// ParallaxNode.h#ifndef __Demo__ParallaxNode__#define __Demo__ParallaxNode__#include <iostream>#include "cocos2d.h"USING_NS_CC;class ParallaxNodeTest : public Layer{public:    static cocos2d::Scene* createScene();    virtual bool init();    CREATE_FUNC(ParallaxNodeTest);    private:    Size size;    Sprite* sprite;    ParallaxNode* parallax;};#endif /* defined(__Demo__ParallaxNode__) */

// ParallaxNode.cpp#include "ParallaxNode.h"#include "cocos2d.h"USING_NS_CC;Scene* ParallaxNodeTest::createScene(){    auto scene = Scene::create();    auto layer = ParallaxNodeTest::create();    scene->addChild(layer);    return scene;}bool ParallaxNodeTest::init(){    if (!Layer::init()) {        return false;    }        size = Director::getInstance()->getVisibleSize();        sprite = Sprite::create("Icon.png");        Sprite* bg = Sprite::create("HelloWorld.png");    bg->setAnchorPoint(Vec2(0, 0));            parallax = ParallaxNode::create();        // 第一个参数是要添加的节点,第二个是zOrder,第三个参数是速率,这里写得是(0.5,0)意思就是parallax向左移动的1个单位的时候,    // bg1移动的就是0.5个单位,y方向上没有速度,最后一个是坐标,注意这个坐标是相对于node节点的坐标,而不是当前的层    parallax->addChild(bg, 1, Vec2(0.5, 0), Vec2(0, 0));    parallax->addChild(sprite, 2, Vec2(2.0, 0), Vec2(Vec2(400, 200)));        ActionInterval* goUp = MoveBy::create(1, Vec2(0, -500));    ActionInterval* goDown = goUp->reverse();    ActionInterval* go = MoveBy::create(2, Vec2(-500, 0));    ActionInterval* goBcak = go->reverse();        FiniteTimeAction* seq = Sequence::create(goUp, go, goDown,goBcak,NULL);    parallax->runAction(RepeatForever::create((ActionInterval*) seq));        this->addChild(parallax);        return true;}


0 0