cocos2dx 3.x(常见的46种动作)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cocos2dx 3.x(常见的46种动作)相关的知识,希望对你有一定的参考价值。

  1     Sprite * sp= Sprite::create("Icon.png");
  2     sp->setPosition(Vec2(150, 150));
  3     addChild(sp,0,922);
  4     
  5     //    Action动作
  6     
  7     // MoveBy  创建一个移动的动作   参数1:移动到目标坐标所需的时间 参数2:目标坐标    支持reverse 可以获取其反向动作
  8     //     MoveTo  一样的
  9     ActionInterval * moveBy = MoveBy::create(5,Vec2(300, 100));
 10     ActionInterval * actionmoveback= moveBy->reverse();
 11     sp->runAction(actionmoveback);
 12     
 13     //     ScaleTo   作用:创建一个缩放的动作
 14     //    参数1:达到缩放大小所需的时间
 15     //    参数2 :缩放的比例
 16     ActionInterval * scaleto = ScaleTo ::create(2, 2);
 17     sp->runAction(scaleto);
 18     
 19     //     ScaleBy  作用:创建一个缩放的动作
 20     //    参数1:达到缩放大小的所需时间  参数2:缩放比例
 21     ActionInterval * scaleby = ScaleBy::create(2, 2);
 22     ActionInterval * actionbyback = scaleby->reverse();
 23     sp->runAction(actionbyback);
 24     
 25     //     RotateTo
 26     //    作用创建一个旋转的动作
 27     //    参数1:旋转的时间  参数2:旋转饿角度  0 - 360
 28     ActionInterval * rotateto = RotateTo::create(2, 90);
 29     sp->runAction(rotateto);
 30     
 31     //   SkewTo
 32     //   作用创建一个倾斜的动作
 33     //    参数1:倾斜到特定角度所需的时间
 34     //    参数2:x轴的倾斜角度
 35     //    参数3:y轴的倾斜角度
 36     ActionInterval * skewto = SkewTo::create(2, 10, 10);
 37     sp->runAction(skewto);
 38     
 39     //     JumpTo
 40     //    作用:创建一个跳的动作
 41     //    参数1:跳到目标动作位子的所需时间
 42     //    参数2:目标位置
 43     //    参数3:跳的高度
 44     //    参数4跳到目标位置的次数
 45     ActionInterval* jumpto = JumpTo ::create(2, Vec2(300, 200), 50, 4 );
 46     sp->runAction(jumpto);
 47     
 48     //     JumpBy
 49     //    作用:创建一个跳的动作
 50     //    参数1:跳到目标动作位子的所需时间
 51     //    参数2:目标位置
 52     //    参数3:跳的高度
 53     //    参数4跳到目标位置的次数
 54     //    这个支持方向动作reverse
 55     ActionInterval * jumpby = JumpBy ::create(3, Vec2(300, 200), 50, 4);
 56     ActionInterval * ac= jumpby->reverse();
 57     sp->runAction(ac);
 58 
 59 
 60 
 61     //         Bezier
 62     //     BezierConfig结构体
 63      BezierConfig bezierCon;
 64     bezierCon.controlPoint_1=Vec2(200, 150);//控制点1
 65     bezierCon.controlPoint_2=Vec2(200, 160);//控制点2
 66     bezierCon.endPosition =Vec2(340, 100);// 结束位置
 67     //BezierTo
 68     //        创建一个贝塞尔曲线运动的动作
 69     //        参数1:贝塞尔曲线运动的时间
 70     //        参数2 : BezierConfig结构体
 71     ActionInterval * action = BezierTo::create(2, bezierCon);
 72     ActionInterval * action1 = BezierBy::create(3, bezierCon);//支持反向
 73     ActionInterval * action2 = action->reverse();
 74     sp->runAction(action1);
 75     
 76     
 77     //FadeIn
 78     //作用:创建一个渐变出现的动作
 79     //参数是时间
 80     ActionInterval * fadein = FadeIn::create(2);
 81     sp->runAction(fadein);
 82     
 83     
 84     //     FadeOut
 85     //    作用:创建一个渐变消失的动作
 86     //    参数是时间
 87     ActionInterval * fadeout = FadeOut::create(2);
 88     sp->runAction(fadeout);
 89     
 90     
 91     // TintTo
 92     //    作用:创建一个色彩变化的消失动作
 93     //    参数1:色彩变化的动作
 94     //    参数2 :红色分量
 95     //    参数3:蓝色分量
 96     ActionInterval * tinto = TintTo ::create(3, 255, 255, 0);
 97     sp->runAction(tinto);
 98     
 99     
100     //     TintBy
101     //    作用:创建一个色彩变化的出现动作
102     //    参数1:色彩变化的动作
103     //    参数2 :红色分量
104     //    参数3:蓝色分量   但是家了reverse就是 反向的
105     ActionInterval * tintby = TintBy::create(3, 0, 255, 255);
106     ActionInterval * tintby1 = tintby->reverse();
107     sp->runAction(tintby1);
108     
109     //     Blink
110     //    作用 :创建一额闪烁的动作
111     //    参数1:闪烁完成的时间
112     //    参数2:闪烁的次数
113     
114     ActionInterval * blink = Blink ::create(3, 10);
115     sp->runAction(blink);
116     
117     
118     
119     //     DelayTime
120     //    创建一个延迟的动作
121     //    参数  延迟的时间
122     ActionInterval * delaytime = DelayTime::create(3);
123     sp->runAction(delaytime);
124     
125     //     OrbitCamera
126     //    作用:创建一个球面坐标轨迹进行旋转的动作
127     //    参数1 : 旋转轨迹的时间
128     //    参数2 :起始半径
129     //    参数3:半径差
130     //    参数4:起始z角
131     //    参数5:旋转z角的差
132     //    参数6:起始x角
133     //    参数7:旋转x角的差
134     ActionInterval * orbitcameraa = OrbitCamera::create(3, 10, 0, 45, 180, 90, 0);
135     sp->runAction(orbitcameraa);
136     
137     
138     //     CardinalSpline
139     //    作用:创建数组  点的数组
140     PointArray * array = PointArray::create(20);
141     array->addControlPoint(Vec2(0,0));
142     array->addControlPoint(Vec2(210,0));
143     array->addControlPoint(Vec2(210,240));
144     array->addControlPoint(Vec2(0,160));
145     array->addControlPoint(Vec2(0,0));
146     //    CardinalSplineTo
147     //    作用:创建一个样条曲线轨迹的动作
148     //    参数1:完成轨迹所需的时间
149     //    参数2:控制点的坐标数组
150     //    拟合度  其值= 0 路径最柔和
151     ActionInterval  * CardinalSplineTo=CardinalSplineTo::create(3, array, 0);
152     sp->runAction(CardinalSplineTo);
153     
154     
155     //    CardinalSplineBy
156     //    作用:创建一个样条曲线轨迹的动作
157     //    参数1:完成轨迹所需的时间
158     //    参数2:控制点的坐标数组
159     //    拟合度  其值= 0 路径最柔和
160     ActionInterval * CardinalSplineBy = CardinalSplineBy::create(3, array, 0);
161     sp->runAction(CardinalSplineBy);
162     
163     //    CatmullRomTo   CatmullRomBY
164     //    作用:创建一个样条插值轨迹
165     //    参数1:完成轨迹的时间
166     //    参数2:控制点的数组坐标
167     ActionInterval * catmullRomTo = CatmullRomTo::create(3, array);
168     sp->runAction(catmullRomTo);
169     
170     //    Follow
171     //    作用:创建一个跟随动作
172     //    参数1:跟随的目标对象
173     //    跟随范围,离开范围就不再跟随
174     //创建一个参照物spT
175     Sprite * spt = Sprite::create("Icon.png");
176     spt->setPosition(Vec2(420,40));
177     addChild(spt);
178     sp->runAction(MoveTo::create(3, Vec2(940,sp->getPositionY())));
179     
180     Follow * follow = Follow::create(sp,Rect(0, 0, 960, 320));
181     this-> runAction(follow);
182     
183     //     EaseBounceIn
184     //    目标动作
185     ActionInterval* move = MoveTo::create(3, Vec2(300, sp->getPositionY()));
186     ////    让目标动作缓慢开始
187     ////    参数:目标动作
188     ActionInterval * EaseBounceIn = EaseBounceIn::create(move);
189     sp->runAction(EaseBounceIn);
190     
191     //    EaseBounceOut
192     //    作用:让目标动作赋予反弹力,且以目标动作结束位子开始反弹
193     //    参数目标动作
194     ActionInterval * easeBounceOut = EaseBounceOut ::create(move);
195     sp->runAction(easeBounceOut);
196     
197     //    EaseBounceInOut
198     //    作用:让目标动作赋予反弹力,且以目标动作起始与结束位子开始反弹
199     ActionInterval * easeBounceInOut= EaseBounceInOut::create(move);
200     sp->runAction(easeBounceInOut);
201     
202     //   EaseBackIn
203     //    作用:让目标动作赋予回力 , 且以目标动作起点位置作为回力点
204     //    参数:目标动作
205     ActionInterval * easeBackIn = EaseBackIn::create(move);
206     sp->runAction(easeBackIn);
207     
208     //    EaseBackOut
209     //    作用:让目标动作赋予回力 , 且以目标动作终点位置作为回力点
210     //    参数:目标动作
211     ActionInterval *easeBackOut = EaseBackOut::create(move);
212     sp->runAction(easeBackOut);
213     
214     //     EaseBackInOut
215     //    作用:让目标动作赋予回力 , 且以目标动作起点和终点位置作为回力点
216     //    参数:目标动作
217      ActionInterval * easeBackInOut =  EaseBackInOut::create(move);
218     sp->runAction(easeBackInOut);
219     
220     //     EaseElasticIn
221     //    作用:让目标动作赋予弹性 ,且以目标动作起点位子赋予弹性
222     //     参数:目标动作
223      ActionInterval * easeElasticIn=  EaseElasticIn::create(move);
224     sp->runAction(easeElasticIn);
225     
226     //      EaseElasticOut
227     //    作用:让目标动作赋予弹性 ,且以目标动作终点位子赋予弹性
228     //     参数:目标动作
229      ActionInterval *easeElasticOut =  EaseElasticOut::create(move);
230     sp->runAction(easeElasticOut);
231     
232     //     EaseElasticInOut
233     //    作用:让目标动作赋予弹性 ,且以目标动作起点和终点位子赋予弹性
234     //     参数:目标动作
235      ActionInterval *easeElasticInOut =  EaseElasticOut::create(move);
236     sp->runAction(easeElasticInOut);
237     
238     
239     //     EaseExponentialIn
240     //    让目标动作缓慢开始
241     //    参数:目标动作
242      ActionInterval * easeExponentialIn=  EaseExponentialIn::create(move);
243     sp->runAction(easeExponentialIn);
244     
245     //     EaseExponentialOut
246     //    让目标动作缓慢中止
247     //    参数:目标动作
248     ActionInterval * easeExponentialInt=  EaseExponentialOut::create(move);
249     sp->runAction(easeExponentialInt);
250     
251     //     EaseExponentialInOut
252     //    让目标动作缓慢开始和中止
253     //    参数:目标动作
254      ActionInterval * easeExponentialInOut=  EaseExponentialInOut::create(move);
255     sp->runAction(easeExponentialInOut);
256     
257     //     EaseRateAction
258     //    作用 : 让目标动作设置速率
259     //    参数1:目标动作
260     //    参数2:速率
261      ActionInterval * moveto =  MoveTo::create(5,  p(300,sp->getPositionY()));
262      ActionInterval * easeRateAction =  EaseRateAction::create(move, 3);
263     sp->runAction(easeRateAction);
264     
265     //     EaseSineIn
266     //    作用:动作由慢到快
267     //      参数:目标动作
268      ActionInterval * easeSineIn =  EaseSineIn::create(move);
269     sp->runAction(easeSineIn);
270     
271     //     EaseSineOut
272     //    作用:动作由快到慢
273     //      参数:目标动作
274      ActionInterval * easeSineOut =  EaseSineOut::create(move);
275     sp->runAction(easeSineOut);
276     
277     //     EaseSineInOut
278     //    作用:动作由慢到快再快到慢
279     //      参数:目标动作
280      ActionInterval * easeSineInOut =  EaseSineInOut::create(move);
281     sp->runAction(easeSineInOut);
282 
283 
284 
285 //     Speed
286     //    作用:让目标动作运行速度加倍
287     //    参数1:目标动作
288     //    参数2:倍速
289      ActionInterval * move =  MoveTo::create(10,  p(300,sp->getPositionY()));
290      Speed * speed = Speed::create(move, 100);
291     sp->runAction(speed);
292     
293     //     Spawn
294     //  作用:让多个动作同时执行
295     //    参数:目标动作的可变参数
296      ActionInterval * move1 =  MoveTo::create(10,  p(300,sp->getPositionY()));
297      ActionInterval * scale =  ScaleTo::create(2, 3);
298      ActionInterval * rotate =  RotateTo::create(4, 190);
299      FiniteTimeAction * spawn = Spawn::create(move1,scale,rotate,NULL);
300     sp->runAction(spawn);
301     
302     //     Sequence
303     //    作用:让多个动作按照前后顺序逐一执行
304     //    参数:目标动作的可变参数
305      ActionInterval * move2 =  MoveTo::create(2,  p(300, sp->getPositionY()));
306      ActionInterval * scalet =  ScaleTo::create(2, 3);
307      FiniteTimeAction * seq=  Sequence::create(move2,scalet,NULL);
308     sp->runAction(seq);
309 
310 
311         //    扩展如果要对目标动作全部进行方向运动,可以使用如下形式操作
312      FiniteTimeAction *seqe= Sequence::create(moveby,scaleby,...NULL);
313      FiniteTimeAction * reverseseq =  Sequence::create(seqe,seq->reverse(),NULL)
314 
315 
316 
317 //注意 Sequence中的所有动作都必须支持reverse函数,否则会出现异常
318      ActionInterval * move =  MoveBy::create(2,  p(300, sp->getPositionY()));
319      ActionInterval * scale =  ScaleBy::create(2, 3);
320      FiniteTimeAction * seq=  Sequence::create(move,scale,NULL);
321      FiniteTimeAction * reveseseq =  Sequence::create(seq,seq->reverse(),NULL);
322     sp->runAction(reveseseq);
323 
324 
325 
326     
327     //     Repeat
328     //    作用:对目标动作进行重复运动(目标动作可以是 Sequence , Spawn)
329     //    参数1:目标动作
330     //    参数2:重复次数
331      ActionInterval * move =  MoveTo::create(2,  p(300, sp->getPositionY()));
332      ActionInterval * move2 =  MoveTo::create(2,  p(100,100));
333      FiniteTimeAction*seq = Sequence::create(move,move2,NULL);
334      FiniteTimeAction *repeat =  Repeat::create(seq, 3);
335     sp->runAction(repeat);
336 
337 
338     //     RepeatForever
339     //    作用:对目标动作进行永久性的重复运动(目标动作可以是 Sequence , Spawn)
340     //    参数:目标动作
341      ActionInterval * move =  MoveTo::create(1,  p(300, sp->getPositionY()));
342      ActionInterval * move1 =  MoveTo::create(1,  p(100,100));
343      FiniteTimeAction* seq =  Sequence::create(move,move1,NULL);
344      ActionInterval * repeatForever = RepeatForever::create(( ActionInterval* )seq);
345     sp->runAction(repeatForever);
346     
347     //     CallFunc
348     //    作用:创建一个回调动作(调用不带参数的回调方法);
349     //    参数1:目标动作
350     //    参数2:目标回调函数
351      ActionInterval * move =  MoveTo::create(1,  p(300, sp->getPositionY()));
352      CallFunc * funcall=  CallFunc::create(this, callfunc_selector(HelloWorld::callbackC));
353      FiniteTimeAction * seq =  Sequence::create(move,funcall,NULL);
354     sp->runAction(seq);
355     
356     //     CallFuncN
357     //    作用:创建一个回调动作(调用 带一个参数的回调方法);
358     //    参数1:目标动作
359     //    参数2:目标回调函数
360      ActionInterval * move =  MoveTo::create(1,  p(300, sp->getPositionY()));
361      CallFuncN * funcall=  CallFuncN::create(this, callfuncN_selector(HelloWorld::callbackN));
362      FiniteTimeAction * seq =  Sequence::create(move,funcall,NULL);
363     sp->runAction(seq);
364     
365     //     CallFuncND
366     //    作用:创建一个回调动作(调用 带两个参数的回调方法);
367     //    参数1:目标动作
368     //    参数2:目标回调函数
369      ActionInterval * move =  MoveTo::create(1,  p(300, sp->getPositionY()));
370      CallFuncND * funcall=  CallFuncND::create(this, callfuncND_selector(HelloWorld::callbackND)  ,(void*)0xbebabeba);
371      FiniteTimeAction * seq =  Sequence::create(move,funcall,NULL);
372     sp->runAction(seq);
373     
374     

 

以上是关于cocos2dx 3.x(常见的46种动作)的主要内容,如果未能解决你的问题,请参考以下文章

cocos2dx 3.x(定时器或延时动作自动调用button的点击响应事件)实现自动内测

Cocos2dx-3.x 中CCCamera相机类详解及源码分析

cocos2dx 3.x(屏幕截图的两种方法)

cocos2dx 3.x(实现帧动画(人物动画,跑马灯效果)的几种方法)

cocos2dx游戏--欢欢英雄传说--为敌人添加移动和攻击动作

cocos2dx的runAction: 反复运行,多个动作连接运行,多个动作同一时候运行的实现