(2)返回到“場(chǎng)景1”,新建一個(gè)AS圖層,然后在第1幀輸入代碼。本例用到緩沖原理,所以要先導(dǎo)入Tweener類;第3~6行代碼是經(jīng)常使用到的一種編程方式,首先創(chuàng)建一個(gè)容器來存儲(chǔ)所有的對(duì)象,便于統(tǒng)一控制,然后使用for()循環(huán)語句創(chuàng)建12個(gè)按鈕元件類對(duì)象(如第15~20行代碼)。
AS3代碼
| import caurina.transitions.Tweener;//導(dǎo)入Tweener類 //創(chuàng)建一個(gè)容器,用于存儲(chǔ)本例中的所有創(chuàng)建的對(duì)象 var container_mc:Sprite = new Sprite(); container_mc.x = stage.stageWidth/2; //定位在舞臺(tái)中心 container_mc.y = stage.stageHeight/2; addChild(container_mc); var angle:uint=0; //角度 var R:Number = 100; //圓的半徑 var _length:uint = 12; //按鈕個(gè)數(shù) var newX = 0; //被單擊的按鈕X坐標(biāo) var newY = 0; //被單擊的按鈕Y坐標(biāo) 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; //指定此對(duì)象禁止接收鼠標(biāo)消息 _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; } |
(3)第22~29行代碼是利用三角函數(shù)來進(jìn)行精確定位,首先通過for()循環(huán)創(chuàng)建_length個(gè)按鈕對(duì)象,然后進(jìn)行角度上的遞增30(angle += 30),在已知半徑和角度后,便可以通過三角函數(shù)來求得各不同角度的按鈕坐標(biāo)位置,其主要原理如圖9-8所示。

圖9-8 三角函數(shù)原理
(4)創(chuàng)建后的按鈕排序原理圖和發(fā)布影片后的效果如圖9-9和圖9-10所示,其中原理圖中的坐標(biāo)原點(diǎn)為container_mc容器的原點(diǎn)位置。

圖9-9 按鈕排序原理圖

圖9-10 發(fā)布效果
(5)下面進(jìn)一步判斷和定位按鈕的位置,第23~29行代碼,判斷i的值是否等于按鈕的總個(gè)數(shù),如果等于就將按鈕的坐標(biāo)設(shè)置為(newX,newY),即(0,0),也就是將按鈕位置設(shè)置在container_mc容器的原點(diǎn)位置,并使用Tweener類的addTween()方法將其寬/高縮放比例(scaleX, scaleY)都設(shè)置為2,影片的發(fā)布效果如圖9-11所示。
AS3代碼
| import caurina.transitions.Tweener;//導(dǎo)入Tweener類 //創(chuàng)建一個(gè)容器,用于存儲(chǔ)本例中的所有創(chuàng)建的對(duì)象 var container_mc:Sprite = new Sprite(); container_mc.x = stage.stageWidth/2; //定位在舞臺(tái)中心 container_mc.y = stage.stageHeight/2; addChild(container_mc); var angle:uint=0; //角度 var R:Number = 100; //圓的半徑 var _length:uint = 12; //按鈕個(gè)數(shù) var newX = 0; //被單擊的按鈕X坐標(biāo) var newY = 0; //被單擊的按鈕Y坐標(biāo) 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; //指定此對(duì)象禁止接收鼠標(biāo)消息 _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ā)布效果
情非得已
Flash CS4教程:制作調(diào)入式聲音控制的按鈕2009-10-22
Flash CS4教程:詳細(xì)解析抓喜慶游戲教程2009-10-13
Flash AS3.0教程:制作3D旋轉(zhuǎn)動(dòng)畫效果2009-09-01
Flash繪制漂亮的中國風(fēng)駿馬圖教程
相關(guān)文章92282014-03-26
Flash制作可愛吹泡泡動(dòng)畫效果教程
相關(guān)文章154212014-03-22
Flash制作文字的電影序幕效果動(dòng)畫教程
相關(guān)文章43802014-03-22
Flash特效實(shí)例之文字沖擊波動(dòng)畫效果
相關(guān)文章51392014-03-22
Flash特效與實(shí)例之可愛的彈性球效果
相關(guān)文章37262014-03-22
Flash特效之書本翻頁效果教程
相關(guān)文章178332014-03-22
Flash制作晶瑩剔透的沙漏反轉(zhuǎn)動(dòng)畫
相關(guān)文章59362013-12-21
Flash基礎(chǔ)教程:繪制逼真的蜘蛛網(wǎng)效果圖
相關(guān)文章29892012-08-07
