cocos2d-x中的基本动作

来源:互联网 发布:杭州淘宝服装拍摄 编辑:程序博客网 时间:2024/04/28 20:14

在cocos2d-x中最大的优点在于提供多种动作功能,这也是制作游戏的最常用的功能。cocos2d中的动作分为基本动作和复合动作,在这篇blog中向大家分享下基本动作,在下一篇中将详细的介绍下复合动作。
coocs2d-x提供的基本动作总共有6中,分别是:位置,缩放,旋转,画面显示,透明度,颜色,我们来一一介绍下。
 1.     位置:
(1)MoveBy与MoveTo 
这两个动作用于在指定的时间内把对象位置移动到指定位置。值得注意的是,动作要由继承了Node类(Layer,Sprite,Label等)的对象执行。
      

autoaction = MoveBy::create(5.0, Point(300, 300)); 



 5.0秒内移动相对原位置(300,300)
(2)JumpBy与JumpTo
这两个动作用于模仿跳跃的轨迹移动节点对象,即在制定时间内,以指定的高度和次数将节点对象移动到指定位置。JumpBy动作是相对的,目标位置是相对当前位置而言的。JumpTo指的就是移动到指定位置,是绝对的。
       例如:原来对象的位置是(100,100);如果都移动(200,200),则JumpBy则移动到了(300,300)的位置,JumpTo还是移动到(200,200);
     

  auto action=JumpBy::creat(5.0,Point(300,0),150,5);



代码的意思是动作在5秒钟内从当前位置移动(300,0),并且跳跃高度为150,跳跃5次。
             (3)BeizerBy和BeizerByTo
这两个动作是贝瑟尔曲线动作,沿着ccBezierConfig创建的贝塞尔曲线在制定时间内移动节点对象。在cocos2dx中使用三次贝塞尔曲线,带有起点,终点和2个控制点,创建贝塞尔曲线时,可以通过ccBezierConfig结构体对贝塞尔曲线进行设置:方法如下:
    

       ccBezierConfig bezierconfig;//创建结构体变量bezierconfig;       bezierconfig.controlPoint_1 =Point(200,200);//设置控制点1的坐标为200,200       bezierconfig.controlPoint_2 =Point(400,400); //设置控制点1的坐标为400,400       bezierconfig.endPosition =Point(600,600);//设置终点坐标为600,600       auto action =BezierTo::create(3.0,bezierconfig);//参数3是3秒的意思       spr->runAction(action);



(4)place:
Place与setPosition()方法具有相同的功能,但是Place一般不单独使用,通常用于符合动作。用法如下:

auto action=Place::create(Point(200,200));


2.     缩放
ScaleBy,ScaleTo
这两个动作用于在之指定时间内将将节点对象缩放为指定大小。ScaleBy:以当前对象大小为基准,缩放大小值小于1.0,将缩小对象,大于1.0,将放大对象。ScaleTo:将对象缩放到指定大小,缩放与对象当前大小无关。
比如:
    

  auto spr = Sprite::create("ball.png");      spr->setPosition(Point(100,100));      spr->setScale(2.0);      this->addChild(spr);



      autoaction = ScaleBy::create(2.0,2.0);//以当前大小为基准,当前大小是2.0,所以在屏幕上最初显示的是2.0倍的图像,然后由于ScaleBy中还有一个2.0,大于1.0,所以会将图像再放大为2.0倍。
//如果这条语句中的ScaleBy改成了ScaleTo,效果将大大不一样。因为ScaleTo比较的是和当前图像的相对大小关系,如果大于当前的增大,小于当前的缩小。
       spr->runAction(action);
3.旋转
RotateBy,RotateTo
这两个动作用于在指定时间内对节点对象旋转指定的角度。使用RotateTo动作时,当输入的角度为正时,按照顺时针防线旋转,输入的角度为负时,按照逆时针方向进行旋转。不过,当旋转角度超过180度时,略有不同。比如:指定的旋转角度为270度后,并非沿着顺时针旋转270,而是逆时针旋转90度,到达沿顺时针旋转270度的位置。换句话说,在使用RotateTo动作时,旋转方向并不是由输入的角度决定,而是根据要旋转到的位置选择能够最快到达的方向进行旋转。RotateBy动作会根据指定的角度进行旋转,比如,设置的角度为270度时,将沿着顺时针方向旋转270,同样,设置旋转角度为-450度时,先逆时针旋转一圈,再逆时针旋转90度。此外,若设置角度时只指定了一个参数,则绕Z轴进行旋转,若指定2个参数,则沿着X轴和Y轴进行旋转。

auto sr = Sprite::create("game/player.png");sr->setPosition(visibleSize.width/2,visibleSize.height/2);this->addChild(sr);auto action = RotateBy::create(10.0,450,270);//绕着X,Y同时进行旋转auto action = RotateBy::create(10.0, 450, 0);//绕着X轴进行旋转auto action = RotateBy::create(10.0, 0, 270);//绕着Y轴进行旋转auto action = RotateBy::create(10.0, 450);//绕着Z轴进行旋转sr->runAction(action);

4.画面显示

(1)Show,Hide

这两个动作是互为反动作,Show动作是用来显示节点的动作,其功能相当于setVisible(true),Show动作大多用于复合动作。Hide动作的作用是隐藏节点,相当于setVisible(false).

auto action=Show::create();auto action=Hide::create();

(2)Blink

该动作用于在指定时间内为节点对象闪烁指定次数。

auto action=Blink(3.0,10).//创建Blink动作,指定3秒钟闪烁10次。

(3)ToggleVisibility

该动作用于切换节点对象的可视属相,对调用setVisible()方法设置的结果进行反向切换。节点对象显示在画面上时,执行ToggleVisibility动作后,节点对象将隐藏;反之,节点对象隐藏时执行该动作,将显示节点对象。


auto action=ToggleVisibility::create().


5.透明度

(1)FadeIn,FadeOut()

该动作在指定时间内将对象的 透明度由0变到255,为对象添加淡入效果时常常使用FadeIn动作。使用该动作时,对象的透明度将先强制变为0,然后从0逐渐变为255.若对象已经显示在画面上,执行该动作后,对象的透明度也会被强制变为0,然后淡出。

spr->setOpacity(0;//将透明度设置为0,即不可见。FadeOut动作和FadeIn动作完全相反,在指定时间内将对象的透明度由255变到0.

auto action=FadeIn::create(3.0)//3秒内逐渐显现出来。

spr->runAction(ction);

(2)FadeTo:

该动作在指定时间内把对象的透明度变为指定值。

auto action=FadeTo(3.0,128);//执行动作时,3秒内将其透明度迅速变为128,使之半透明。


6.颜色:

TintBy,TintTo。

对于TintTo动作好理解,就是在指定的时间内变到相应的颜色。

auto action=TintTo::create(3.0,255,0,0);//执行动作后3秒变成红色。

对于TintBy动作,甚是不理解,各位谁若是懂的TintBy动作,一定要私聊我。。。。




,

0 0
原创粉丝点击