Flash CS4制作切換放大菜單效果(2)_Flash教程
推薦:Flash cs3教程:位圖動畫的表現(xiàn)本例為Flash CS3仿真藝術(shù)設計系列教程,在上一課中我們學習了關(guān)閉缺口_完善角色肢體連接,這一課我們來學習位圖動畫的表現(xiàn),在這個教程中,你將被教導怎樣制作布什總統(tǒng)來回地舞蹈。你需要一張布什總的頭像的圖片,一個照像機和一個明白的補間,引導層和角色動畫基礎,
(5)下面進一步判斷和定位按鈕的位置,第23~29行代碼,判斷i的值是否等于按鈕的總個數(shù),如果等于就將按鈕的坐標設置為(newX,newY),即(0,0),也就是將按鈕位置設置在container_mc容器的原點位置,并使用Tweener類的addTween()方法將其寬/高縮放比例(scaleX, scaleY)都設置為2,影片的發(fā)布效果如圖9-11所示。
AS3代碼
import caurina.transitions.Tweener;//導入Tweener類
//創(chuàng)建一個容器,用于存儲本例中的所有創(chuàng)建的對象
var container_mc:Sprite = new Sprite();
container_mc.x = stage.stageWidth/2; //定位在舞臺中心
container_mc.y = stage.stageHeight/2;
addChild(container_mc);
var angle:uint=0; //角度
var R:Number = 100; //圓的半徑
var _length:uint = 12; //按鈕個數(shù)
var newX = 0; //被單擊的按鈕X坐標
var newY = 0; //被單擊的按鈕Y坐標
for (var i=0; i<=_length; i++) {
var _mc:Sprite = new button();
_mc.buttonMode = true;
_mc.name = "mc" + i;
_mc.addEventListener(MouseEvent.CLICK,clickHandler);
container_mc.addChild(_mc);
if (i == _length) {
_mc.x = newX;
_mc.y = newY;
//指定此對象禁止接收鼠標消息
_mc.mouseEnabled = false;
Tweener.addTween(_mc, {scaleX:2, scaleY:2, time:1, transition:"easeInOutQuint"});
} else {
angle += 30;
var radians:Number = angle * Math.PI / 180;
var X:Number = Math.cos(radians) * R;
var Y:Number = Math.sin(radians) * R;
_mc.x = X;
_mc.y = Y;
}

圖9-11 發(fā)布效果
(6)下面創(chuàng)建動態(tài)文本對象,為按鈕添加文字。第39~47代碼創(chuàng)建一個不能被選擇且禁止接收鼠標消息的動態(tài)文本,并設置樣式和文本位置。其中第42行代碼禁止接收鼠標事件(如指針經(jīng)過或單擊等事件);第43行代碼是設置字體樣式并調(diào)用 defaultTextFormat()方法,該方法返回一個文本格式對象(TextFormat),然后賦給defaultTextFormat屬性(指定應用于新插入文本的格式)。
AS3代碼
var X:Number = Math.cos(radians) * R;
var Y:Number = Math.sin(radians) * R;
_mc.x = X;
_mc.y = Y;
}
var _text:TextField = new TextField();
_text.width = _text.height = 40;//因為默認情況下寬高都為100
_text.selectable = false; //文字不被選擇
_text.mouseEnabled = false; //指定此對象禁止接收鼠標消息
_text.defaultTextFormat = defaultTextFormat(); //設置字體樣式
_text.text = i;
_text.x = -_text.textWidth/2 - 2; //設置字體位置
_text.y = -_text.textHeight/2;
_mc.addChild(_text); //字體添加到對應按鈕中
}
function defaultTextFormat():TextFormat {
var format:TextFormat = new TextFormat();
format.font = "黑體";
format.color = 0xFFFFFF;
format.size = 20;
format.bold = true;
return format
}
function clickHandler(e:MouseEvent) {
var _mc:Sprite = e.target as Sprite;
newX = _mc.x;
newY = _mc.y;
Tweener.addTween(_mc, {x:0, y:0,scaleX:2, scaleY:2, time:1, transition:"easeInOutQuint"});
Tweener.addTween(container_mc.getChildAt(_length), {x:newX, y:newY,scaleX:1, scaleY:1, time:1, transition:"easeInOutQuint"});
_mc.mouseEnabled = false;
var mc:Sprite = container_mc.getChildAt(_length) as Sprite
mc.mouseEnabled = true;
container_mc.swapChildren(container_mc.getChildAt(_length),_mc);
}
技巧與提示:
因為本例所編寫的代碼有70多行,為了更好地幫助用戶理解,因此分塊進行展示,用戶可以打開源文件來查看所有的代碼,關(guān)于更多文本格式(TextFormat)的詳細信息可參考幫助文檔。
步驟(5)中的第20行代碼是為按鈕注冊事件偵聽,偵聽器函數(shù)為步驟(6)中的第59行代碼clickHandler()函數(shù),該函數(shù)的作用是當按鈕被鼠標單擊后,與中間按鈕進行位置的切換,其原理如圖9-12所示。

圖9-12 clickHandler()函數(shù)原理圖
(7)在clickHandler()函數(shù)中,首先取得被單擊按鈕的坐標位置(如步驟(6)中的第61和62行代碼),當按鈕被單擊時,被單擊按鈕緩沖運動到container_mc容器的中間(也就是原點(0,0))時會縮放2倍(如步驟(6)中的第64行代碼中的Tweener類方法),同時位于舞臺中間的按鈕會運動到被單擊按鈕的坐標位置(newX,newY),這樣就會產(chǎn)生切換效果(如步驟(6)中的第65行代碼),如圖9-13所示,這里還通過container_mc.getChildAt(_length)方法來取得中間按鈕,并通過69行代碼中的swapChildren()方法來進行交換z軸順序(也稱深度)。

圖9-13 按鈕的切換效果
技術(shù)看板:深度設置
重新設置容器列表中對象所在的深度,可以使用顯示對象容器.setChildIndex的方法來設置,下面列出幾種最為常用的方法,用戶可直接套用。
AS3代碼
//(1):用于將“要顯示的對象”進行置頂
顯示對象容器.setChildIndex(要顯示的對象,要顯示對象容器.numChildren-1)
//(2):用于將“要顯示的對象”進行置底
顯示對象容器.setChildIndex(要顯示的對象,0)
//(3):用于將“要顯示的對象A”插入“顯示對象B”之前
var target:DisplayObject = 顯示對象容器.getChildByName("顯示對象B")
顯示對象容器.setChildIndex(顯示對象A,顯示對象容器.getChildIndex(target))
//(3):用于將“要顯示的對象A”插入“顯示對象B”之后
var target:DisplayObject = 顯示對象容器.getChildByName("顯示對象B")
顯示對象容器.setChildIndex(顯示對象A,顯示對象容器.getChildIndex(target)-1)
分享:Flash CS4教程:制作切換撲克牌效果本例思路: 1 創(chuàng)建實例背景。 2 繪制牌的正面和反面并轉(zhuǎn)換為圖形元件。 3 創(chuàng)建一個牌的容器,轉(zhuǎn)換為元件類Card,將正反面牌分別放置于第1、2
- 相關(guān)鏈接:
- 教程說明:
Flash教程-Flash CS4制作切換放大菜單效果(2)
。