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     

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM