首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

Cocos2d 基礎概念 (3) - Actions: Ease 緩動動作

     編輯:關於.NET

Ease 緩動動作簡介

Ease(緩動) 是一類特殊的複合動作,能改變內部動作的時間曲線,在總時長不變的前提下,使運動呈現非勻速效果(加速、減速、彈跳等)。Flash 中常稱為 Tweening 或 Easing。

Ease時間曲線示意

三大基本分類

  • In:動作開始時加速
  • Out:動作結束時加速
  • InOut:開始與結束都加速,中間勻速

參考資源:Tweener 轉場示例、Robert Penner Easing Demo

基本 Ease 動作

基本Ease曲線

內部實作核心邏輯:

-(void) update:(ccTime)t {
    [inner update: powf(t, rate)];
}

rate 參數控制加速率。

使用範例

// 開始加速
id action = [MoveTo actionWithDuration:2 position:ccp(100,100)];
id ease = [EaseIn actionWithAction:action rate:2];
[sprite runAction:ease];

// 結束加速
id action = [MoveTo actionWithDuration:2 position:ccp(100,100)];
id ease = [EaseOut actionWithAction:action rate:2];
[sprite runAction:ease];

// 開始與結束加速
id action = [MoveTo actionWithDuration:2 position:ccp(100,100)];
id ease = [EaseInOut actionWithAction:action rate:2];
[sprite runAction:ease];

指數緩動

指數緩動曲線
  • EaseExponentialIn
  • EaseExponentialOut
  • EaseExponentialInOut

正弦緩動

正弦緩動曲線
  • EaseSineIn
  • EaseSineOut
  • EaseSineInOut

彈性緩動

彈性緩動曲線

模擬彈簧效果,時間值可能超出 [0,1] 範圍,內部動作需能處理特殊值。v0.8.2+ 可用。

  • EaseElasticIn / Out / InOut

period 參數控制彈性強度,建議 0.3~0.45。

範例

id move = [MoveBy actionWithDuration:3 position:ccp(350,0)];
// 開始彈性
id action = [EaseElasticIn actionWithAction:move period:0.3f];
// 結束彈性
id action = [EaseElasticOut actionWithAction:move period:0.3f];
// 首尾彈性
id action = [EaseElasticInOut actionWithAction:move period:0.3f];

彈跳緩動

彈跳緩動曲線

模擬彈跳效果,v0.8.2+ 可用。

  • EaseBounceIn / Out / InOut

範例

id move = [MoveBy actionWithDuration:3 position:ccp(350,0)];
// 開始彈跳
id action = [EaseBounceIn actionWithAction:move];
// 結束彈跳
id action = [EaseBounceOut actionWithAction:move];
// 首尾彈跳
id action = [EaseBounceInOut actionWithAction:move];

回退緩動

回退緩動曲線

v0.8.2+ 可用。

  • EaseBackIn / Out / InOut

範例

id move = [MoveBy actionWithDuration:3 position:ccp(350,0)];
// 開始回退
id action = [EaseBackIn actionWithAction:move];
// 結束回退
id action = [EaseBackOut actionWithAction:move];
// 首尾回退
id action = [EaseBackInOut actionWithAction:move];

Speed 動作:直接調整速率

Speed 動作可直接修改內部動作的執行速度:

id move = [MoveBy actionWithDuration:3 position:ccp(350,0)];
id action = [Speed actionWithAction:move speed:1.0f]; // 原速
[action setSpeed:2.5f]; // 2.5倍速
[action setSpeed:0.5f]; // 0.5倍速(即慢2倍)

出處:https://alexliu.cnblogs.com/

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved