CCParallaxNode就是视差节点的意思,这个玩意是干嘛用的呢?当我们面对一个背景画面的时候,如果背景在滚动的时候可以使用这个节点,它的功能就是让子节点拥有不同的移动速率,这样,我们就可以让某一些子节点移动的慢一些,而某些子节点移动的快一些。这样营造出的效果就是远处的景物移动的快,而近处的景物移动的快,给人一种更加真实的感觉。说到它的用法,首先我们需要明确的是这个类是一个node,所以,它就像我们各种各样的node一样,拥有node的特性,它就是一个抽象出来的点,坐标默认是在0,0处。我们需要做的是将需要产生这种移动效果的背景图片添加到这个node上,让这个node移动,然后这些子节点就会以不同的速率去动。其实,它的用法相当简单,可以直接看一下代码。
void HelloWorld::menuCloseCallback()
{
CCSprite* bg1 = CCSprite::create("HelloWorld.png");
bg1->setAnchorPoint(ccp(0,0));
CCSprite* bg2 = CCSprite::create("HelloWorld.png");
bg2->setAnchorPoint(ccp(0,0));
CCSprite* spr = CCSprite::create("CloseNormal.png");
//ParallaxNode的使用方法如下
parallax_ = CCParallaxNode::create();
//将节点添加到ParallaxNode上边,各个参数的意义:第一个参数是要添加的节点,第二个参数是zorder,决定显示的顺序,第三个参数是速率,这个如何理解,就是如果你得node移动的速度是1,那么你得速度是相对于这个1的多少,我这里写得是(0.5,0)意思就是当我的parallax向左移动的1个单位的时候,bg1移动的就是0.5个单位,y方向上没有速度,最后一个是坐标,注意这个坐标是相对于node节点的坐标,而不是当前的层
parallax_->addChild(bg1, 1, ccp(0.5,0), CCPoint(0,0));
parallax_->addChild(bg2,1,CCPoint(0.5,0),CCPoint(bg1->getContentSize().width,0));
parallax_->addChild(spr,2,CCPoint(1.1,0),CCPoint(CCPoint(400,200)));
addChild(parallax_);
}
//改变parallax的坐标
void HelloWorld::update(float tm)
{
auto x = parallax->getPositionX()-1;
parallax->setPositionX(x);
}
最主要的就是addChild函数,它的参数注释有写,这里再写一下。第一个参数是要添加的节点,第二个参数是zorder,决定显示的顺序,第三个参数是速率,这个如何理解,就是如果你的node移动的速度是1,那么节点的速度是相对于这个1的多少,比如CCPoint是(0.5,0)意思就是当我的parallax向左移动1个单位的时候,bg1移动的就是0.5个单位,y方向上没有速度,最后一个是坐标,注意这个坐标是相对于node节点的坐标,而不是当前的层。运行起来游戏,我们就会看到bg1移动的慢,而spr移动的快,这样给人的感觉就会比较真实了。
版权声明:本文由( 小塔 )原创,转载请保留文章出处!
本文链接: