怎樣用Flash CS4製作撲克牌切換效果
本例思路:
<1>建立例項背景。
<3>建立一個牌的容器,轉換為元件類“Card”,將正反面牌分別放置於第1、2幀。
例項步驟:
(1)新建一個空白文件,舞臺大小設定為500*250,幀頻設定為120,繪製一個與舞臺大小同樣大小的矩形,並填充放射狀漸變色,設定第一色標顏色為(R:0,G:246,B:93)Alpha: 100%,設定第二色標顏色為(R:0,G:131,B:49)Alpha: 100% ,設定第三色標顏色為(R:0,G:62,B:23)Alpha: 100% ,如下圖15-1所示。
圖15-1 繪製背景
(2)使用“漸變變形工具”進行調整高光位置和漸變分佈模式,如下圖15-2 所示。
圖15-2 漸變調整
(3)分別建立兩個圖形元件,命名為“back”和“9”。簡單繪製撲克牌“9”的`正反面,註冊點在中心位置且大小必需相同,如下圖15- 3所示。
圖15-3 撲克牌正反面
(4)新建一個影片剪輯,命名為“Card” ,命名元件類名也為“Card”,如圖3-所示。將上面步驟中建立的撲克牌“9”的正反面分別放置於第1、2幀處正中心位置,如下圖15-4所示。
圖15-4 建立“Card”物件
(5)建立文件類Main類,如圖3-所示,首先建立一個牌的容器“container”,並將其放置於舞臺中心位置,如建構函式第20到23行程式碼所示,然後建立撲克牌容器物件並新增到容器“container”中,如第25、26行程式碼所示,並將撲克牌容器物件停止播放(也就是停留在第1幀)、啟動按鈕模式和註冊偵聽器函式,如第27到29行程式碼所示。
AS3程式碼
package
{
import flash.display.*;
import flash.events.*;
import caurina.transitions.Tweener;
/**
* ...
* @author lbynet (Tools -> Custom Arguments...)
*/
public class Main extends Sprite {
private var container:Sprite;
private var pane:MovieClip;
private var isback:Boolean;
private var currentPlane:MovieClip;
private var currentRotationY:Number;
public function Main():void {
container = new Sprite();
container.x=stage.stageWidth/2;
container.y=stage.stageHeight/2;
addChild(container);
pane = new Card();
container.addChild(pane);
pane.stop();
pane.buttonMode=true;
pane.addEventListener(MouseEvent.CLICK, onClick);
}
(6)當撲克牌容器物件被單擊時呼叫onClick偵聽器函式,為stage註冊事件偵聽來控制何時切換為正面或是反面,透過判斷變數isback 來重新設定被單擊撲克牌的rotationY屬性,如第36到44行程式碼所示,在第38、42行程式碼,透過Tweener 來切換撲克牌的rotationY值在0與-180度之間,如下原理圖15-5 所示。
AS3程式碼
private function onClick(event:MouseEvent):void {
stage.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
currentPlane = MovieClip(event.currentTarget);
if (isback) {
Tweener.addTween(currentPlane, { rotationY:0,time:1 } );
//Tweener.addTween(currentPlane, { z:0,time:1 } );
} else {
Tweener.addTween(currentPlane, { rotationY:-180,time:1 } );
//Tweener.addTween(currentPlane, { z:-200,time:1 } );
}
isback = ! isback;
}
private function enterFrameHandler(event:Event):void {
currentRotationY = currentPlane.rotationY;
if (currentRotationY >= -90 && currentRotationY <= 10) {
if (isback) {
currentPlane.gotoAndStop(2);
} else {
currentPlane.gotoAndStop(1);
}
stage.removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
trace("已清除事件偵聽");
}
}
}
圖15-5 文件類
(7) 當用戶單擊撲克牌容器物件,在第34行程式碼中註冊的偵聽器後,執行偵聽器函式enterFrameHandler ,並透過時時判斷撲克牌容器物件的rotationY的值來判斷撲克牌容器物件要切換跳轉到哪一幀,如第50到59行程式碼所示,最後,清除無用的偵聽器,如第57行程式碼所示。
(8)把onClick偵聽器函式中第39、43兩行程式碼放開,釋出測試,當用戶單擊撲克牌容器物件後,撲克牌切換翻轉並放大(其實際是物件的z軸值減小),如下圖3- 所示,當再次單擊後,撲克牌切換翻轉並縮小致原始狀態。
【怎樣用Flash CS4製作撲克牌切換效果】相關文章: