CCAction
對於一個遊戲來說,動作是非常重要的,好的動作可以使遊戲的可玩性大大提高,在cocos2d引
擎中有一個動作類,CCAction是動作類的基類,動作是定義在節點(CCNode)上的,以節點爲
目標,主要分爲兩類瞬時動作和延時動作
CCIntervalAction(延時動作)
Cocos2d提供的基本延時類動作都提供了ActionTo和ActionBy兩種(七種) :
ActionTo是指動作結束的狀態,也就是動作的終點。
ActionBy是指動作執行的狀態,也就是動作的執行過程。
常用的延時動作類包括:
移動動作:CCMoveBy CCMoveTo
縮放動作:CCScaleBy CCScaleTo
旋轉動作:CCRotateBy CCRotateTo
跳躍動作:CCJumpBy CCJumpTo
貝賽爾曲線動作:CCBezierBy CCBezierTo
淡入淡出動作:CCFadeTo CCFadeIn CCFadeOut
移動(CCMoveBy與CCMoveTo)
創建對象:利用CCMoveBy(To).action(float duration, CGPoint pos) 。
參數說明: duration持續時間,pos代表目標點
不同點:
①CCMoveBy指定的CGPoint 是相對座標即相對於當前的需要移動的精靈。 CCMoveTo指定CGPoint 是絕對座標。
② CCMoveBy將reverse()方法進行了處理,而CCMoveTo返回null值。當我們需要實現精靈的反覆移動時使用CCMoveBy將很輕鬆的完成。
應用場景:如遊戲過關後會有一個箭頭反覆提示你前進的路線。首先我們需要使用CCSequence將一組移動的效果添加到一起,實現單次往返,
再利用CCRepeatForever實現反覆動作。
示例代碼:
private void moveBy() {
CCSprite sprite = getSprite();
// 參數1 移動的時間 單位秒 參數2 移動的目的地
CCMoveBy ccMoveBy=CCMoveBy.action(2, CCNode.ccp(400, 440));
CCMoveBy reverse = ccMoveBy.reverse();
CCSequence actions = CCSequence.actions(ccMoveBy, reverse);
sprite.runAction(actions);
}
private void moveTo() {
CCSprite sprite = getSprite();
// 參數1 移動的時間 單位秒 參數2 移動的目的地
CCMoveT
彈跳(CCJumpBy與CCJumpTo)
創建對象: CCJumpBy (To).action(float time, CGPoint pos, float height, int jumps)
參數說明: time代表持續時間, pos代表目標點, height代表回落高度,jumps代表跳動次數
區別: CCJumpBy將 reverse()方法進行了處理,可以用於實現重複動作;
private void jumpBy() {
CCSprite sprite = getSprite();
//參數1:時間 參數2:跳到的點 參數3:跳的最高點 參數4:跳的次數
CCJumpBy ccJumpBy=CCJumpBy.action(3, CCNode.ccp(300, 300), 500, 10);
CCJumpBy reverse = ccJumpBy.reverse();
CCSequence actions = CCSequence.actions(ccJumpBy, reverse);
sprite.runAction(actions);
}
縮放(CCScaleBy與CCScaleTo)
創建對象:CCScaleBy(To).action(float t, float s)
參數說明:t代表持續時間,s代表縮放比例
區別: CCScaleBy將 reverse()方法進行了處理,可以用於實現重複動作
應用場景:心跳
private void scaleBy() {
// 參數1 時間 參數2 縮放的比例
CCScaleBy ccScaleBy=CCScaleBy.action(1f, 1.65f); //基於錨點進行縮放
CCScaleBy reverse = ccScaleBy.reverse();
CCSequence sequence=CCSequence.actions(ccScaleBy, reverse);
CCRepeatForever forever=CCRepeatForever.action(sequence);//無限循環
getHeart().runAction(forever);
}
貝塞爾曲線運動(CCBezierBy)
創建對象:CCBezierBy(To).action(float t, CCBezierConfig c)
參數說明: t代表持續時間, c曲線參數, CCBezierConfig.controlPoint_1起始點、CCBezierConfig.controlPoint_2頂點、CCBezierConfig.endPosition終點
應用場景:子彈,pvz中屋頂關卡
private void bezierBy() {
CCBezierConfig c=new CCBezierConfig();
c.controlPoint_1=ccp(0, 0);
c.controlPoint_2=ccp(300, 300);
c.endPosition=ccp(500, 0);
CCBezierBy bezierBy=CCBezierBy.action(2, c);
getSprite().runAction(bezierBy);
}
漸快(CCEaseIn)
對象創建:CCEaseIn.action(CCIntervalAction action, float rate)
參數說明: action被控制的動作, rate加速度,如果爲1就勻速了
漸慢:CCEaseOut與CCEaseIn參數一致,動作相反
private void ease() {
CCMoveTo ccMoveTo=CCMoveTo.action(10, CCNode.ccp(200, 0));
CCEaseIn easeOut=CCEaseIn.action(ccMoveTo,3); // 讓移動按照有一定加速度去移動
getSprite().runAction(easeOut);
}
旋轉(CCRotateBy與CCRotateTo)
創建對象:CCRotateBy(To).action(float t, float a)
參數說明:t代表持續時間,a代表旋轉角度
區別:① CCScaleBy將 reverse()方法進行了處理,可以用於實現重複動作;② CCRotateTo以最便捷的方式旋轉到指定角度,
如旋轉角度爲300時,使用CCRotateTo來實現的話會逆時針旋轉60度
應用場景:進度條旋轉、旗子的左右擺動等
特別注意:旋轉動作是沿着錨點完成的,所以需要結合錨點統一協調旋轉動作
顏色漸變動作(CCTintBy與CCTintTo)
創建對象: CCTintBy(To). action(float t, ccColor3B c)
參數說明:t:時間間隔, c:RGB三色值封裝對象
區別:① CCTintBy對reverse()方法實現;② CCTintBy需要設置的RGB三色值是相對值,即相對於當前的RGB值進行變動。
應用場景
private void tint() {
// 專門顯示文字的精靈
// 參數1 顯示的內容 參數2 字體的樣式 3 字體的大小
CCLabel label=CCLabel.labelWithString("夏浩軒 ,那些年在陌陌約到的妹子", "hkbd.ttf", 24);
label.setColor(ccc3(50, 0, 255));
label.setPosition(200,200);
this.addChild(label);
ccColor3B c=ccc3(100, 255, -100);
// 參數1 時間 參數2 變化後的顏色
CCTintBy by=CCTintBy.action(1, c);
CCTintBy reverse = by.reverse();
CCSequence actions = CCSequence.actions(by, reverse);
CCRepeatForever forever=CCRepeatForever.action(actions);
label.runAction(forever);
}
閃爍(CCBlink)
對象創建:CCBlink.action(float t, int b)
參數說明:t間隔時間,b閃爍次數
private void blink() {
// 三秒鐘閃爍3次
CCBlink blink=CCBlink.action(3, 3);
getSprite().runAction(blink);
}
播放序列幀
CCAnimation加載
CCAnimate
如果要停止播放,可以採用stopAction
連續動作CCSequence
對象創建:CCSequence.actions(CCFiniteTimeAction action1, CCFiniteTimeAction... actions)
對象說明:用於按順序執行一連串動作
並發動作CCSpawn
對象創建:CCSpawn.actions(CCFiniteTimeAction action1, CCFiniteTimeAction... params)
參數說明:指定一連串動作同時觸發,如在跳躍過程中執行一個翻轉動作。
間歇動作(CCDelayTime)
對象創建:CCDelayTime. action(float t)
參數說明:t 停止時間
即時動作(CCInstantAction)
瞬時動作:就是不需要時間,馬上就完成的動作。
Cocos2d提供以下瞬時動作:
放置 – Place效果類似於 node.Position = ccp(x, y)。之所以作爲一個動作來實現是爲了可以與其他動作形成一個連續動作。
隱藏 – Hide效果類似於 [node setVisible:NO]. 之所以作爲一個勱作來實現是爲了可以與其他動作形成一個連續動作。
顯示 – Show效果類似於 [node setVisible:YES]. 之所以作爲一個動作來實現是爲了可以與其他動作形成一個連續動作。
可見切換 – ToggleVisibility
可見性(CCHide與CCShow )
對象創建:調用action方法即可,無參數
無限動作CCRepeatForever
無限制的執行一個延時動作,通常用於連續執行一連串的重複動作,這些動作多放置在CCSequence中進行定義。
SoundEngine處理聲音
聲音類型:音樂和音效
可以從長短上來做區分,音樂一般用於遊戲的背景聲音,音效主要是短小的聲音,如植物發射子彈,殭屍喫植物時發出的聲音
聲音控制,如播放、暫停、聲音大小調節、靜音
通過緩存音樂和音效文件來提高聲音處理的效率
源碼:http://download.csdn.net/detail/qq_27280457/9612812