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

Cocos2d 基礎概念 (1) - Basic Actions 基礎動作

     編輯:關於.NET

Action 核心觀念

Action 就像發給 cocosNode 物件的指令,通常用於修改物件屬性(位置、旋轉、縮放等)。若屬性在一段時間內變化,屬於 IntervalAction;否則為 InstantAction(即時動作)。

例:MoveBy 在 2 秒內改變位置,屬於 IntervalAction。

// 2秒內向右移動50像素、向上移動10像素
[sprite runAction:[MoveBy actionWithDuration:2 position:ccp(50,10)]];

IntervalAction 重要特性

  • 可透過 Ease 動作改變時間曲線:EaseIn、EaseOut、EaseInOut、Speed 等
  • 相對動作與部份絕對動作支援反轉:[action reverse] 產生相反方向動作
  • 可暫停/恢復:pauseAllActionsForTarget: / resumeAllActionsForTarget:

基礎動作分類速查

位置移動

動作類型說明
MoveBy相對相對當前位置位移
MoveTo絕對移動至絕對座標
JumpBy相對抛物線跳躍位移
JumpTo絕對跳躍至絕對座標
Place即時瞬間移至指定位置(無時間概念)

程式碼範例

// MoveBy:相對移動
id moveByAction = [MoveBy actionWithDuration:2 position:ccp(30,50)];

// MoveTo:移動至觸控點
id moveToAction = [MoveTo actionWithDuration:3 position:[[Director sharedDirector] convertCoordinate:point]];

// JumpBy:3秒內相對位移(100,100),跳躍高度20,跳20次
id jumpByAction = [JumpBy actionWithDuration:3 position:ccp(100,100) height:20 jumps:20];

// Place:即時移動
id placeAction = [Place actionWithPosition:[[Director sharedDirector] convertCoordinate:point]];
// 等同於 MoveTo duration:0

縮放

動作類型說明
ScaleBy相對相對當前縮放比例
ScaleTo絕對縮放至指定比例
// 3秒內縮放至原本一半
id scaleByAction = [ScaleBy actionWithDuration:3 scaleX:0.5 scaleY:0.5];
id scaleToAction = [ScaleTo actionWithDuration:3 scaleX:0.4 scaleY:0.5];

旋轉

動作類型說明
RotateBy相對相對當前角度旋轉
RotateTo絕對旋轉至指定角度
// 3秒內向右旋轉30度
id rotateByAction = [RotateBy actionWithDuration:3 angle:30.0];
id rotateToAction = [RotateTo actionWithDuration:3 angle:30.0];

可見度、透明度、著色

  • 可見度:Show / Hide / Blink / ToggleVisibility
  • 透明度:FadeIn / FadeOut / FadeTo
  • RGB著色:TintBy / TintTo

記住口訣: 以 By 結尾 = 相對動作;以 To 結尾 = 絕對動作。

綜合範例

CGSize s = [[Director sharedDirector] winSize];
id actionTo = [MoveTo actionWithDuration:2 position:ccp(s.width-40, s.height-40)];
id actionBy = [MoveBy actionWithDuration:2 position:ccp(80,80)];
[sprite1 runAction:actionTo];
[sprite2 runAction:actionBy];

反轉動作

幾乎所有動作皆實作 reverse 方法,產生相反行為的新動作:

id move = [MoveBy actionWithDuration:2 position:ccp(80,80)];
id move_reverse = [move reverse];
// move_reverse 為 MoveBy,duration=2,position=ccp(-80,-80)

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

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