cocos2dx 常用的4个动作类

it2022-05-05  253

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);

最新回复(0)