查看完整版本: AS3 技巧和提示

未來時間 2008-5-16 21:50

AS3 技巧和提示

[font=新細明體]在 AS3 中你可以通過 Stage 類動態改變影片的幀速[/font]
d:QK.f&c'P3x [font=新細明體]所有的 DisplayObject 都有一個 stage 內容, 通過他可以存取目前 DisplayObject 所在案例的 Stage.[/font]}JcFVJY
[font=新細明體]修改 stage 的 frameRate 內容就可以改變幀速, 他的值可以是 0.01 ~ 1000[/font]
| q8K'aU+n[~J [font=新細明體]package {[/font]
5K&IMx5U+B W*YK(V [font=新細明體]import flash.display.Sprite; public class MySprite extends Sprite[/font]
3C+]w?X6hET [font=新細明體]{[/font]7nn,Z-T(qY0f4`'pZm
[font=新細明體]public function MySprite () {[/font]WB)g+K u;R7n)]3z
[font=新細明體]// 修改影片幀速到 12 幀 / 秒[/font]6Pb,M5{0yD4X"eX
[font=新細明體]stage.frameRate = 12;[/font]\'B Bk*e f^
[font=新細明體]}[/font]
s-e@A b a4[;[ n [font=新細明體]}[/font]
RF UUZ/Wd}9b| [font=新細明體]}[/font]D r5\*iv\ke'b
[font=新細明體]還記得 as2 中被大量使用的 Delegate 麼, as3 中他已經不那麼重要了, 因為函式可以記住自己的作用域[/font]
x/nM9q4] w)z"h"~ [font=新細明體]as2 的例子: [/font][font=新細明體]import mx.utils.Delegate;[/font]$NGSI-NGn
[font=新細明體]var obj = new Object();[/font]
7W*a#\,q1kI2Sm [font=新細明體]obj.traceThis = traceThis;[/font]
n:X]-A V4jvF [font=新細明體]obj.traceThis(); // 輸出 true, 也就是 obj 自己[/font]B$`4nm&]h4r!] ] D
[font=新細明體]obj.traceThis = Delegate.create(this, traceThis);[/font]
|2LS@ms ] [font=新細明體]obj.traceThis(); // 輸出 false, 因為我們已經手動把函式作用域指向到了 _root, (as3 中是 Timeline0)[/font] U0hV6V @,tQ3W
[font=新細明體]function traceThis () {[/font]
4LwKoy'| [font=新細明體]trace(this == obj);[/font]
n p.fZ-h t'w [font=新細明體]}[/font]q/`/@k5B i/pzt7q
[font=新細明體]as3 的例子, 在 flash 9 alpha 中測試 [/font][font=新細明體]var obj = new Object();[/font]
D.v:S8y:Y.p;@? [font=新細明體]obj.traceThis = traceThis;[/font]a3e;h}@ S }v
[font=新細明體]obj.traceThis(); // 輸出 false, 沒有作用域的問題了~[/font]#ja~%QP.B]
[font=新細明體]function traceThis () {[/font]b)L#}'Ph9n
[font=新細明體]trace(this == obj);[/font]8G$afROnkkc/Jx)}
[font=新細明體]}[/font]
"@Gl"IB-I [font=新細明體]與 as1, 2 一樣, as3 也有一套畫圖接口 (Drawing API) 使得我們能夠動態的使用 as 在 Sprite* 和 MovieClip 中畫向量圖。[/font]H%b6I7ovUW9LqqZ&M
[font=新細明體]不過在 as3 中這些方法都沒有被定義在 DisplayObject 中 (如 Sprite, MovieClip 等), 而是在他們的 graphics (flash.display.Graphic) 內容中, 這個 graphics 相當於一個動態繪圖層。[/font]
&Ew{D`}] [font=新細明體]同時 as3 也提供了一組讓我們更方便繪制矩形, 圓, 甚至遠郊邊框的函式, 他們包含[/font]
/|tbUV!R [font=新細明體]drawCircle(x:Number, y:Number, radius:Number):void [/font]
Q V&fxWr}8G.b [font=新細明體]drawEllipse(x:Number, y:Number, width:Number, height:Number):void [/font]
2})N!N5d2n6Zj [font=新細明體]drawRect(x:Number, y:Number, width:Number, height:Number):void [/font]WJ,uvV"K8cR
[font=新細明體]drawRoundRect(x:Number, y:Number, width:Number, height:Number, ellipseWidth:Number, ellipseHeight:Number):void[/font]
OA [:D.G)e? [font=新細明體]繪制一個藍色圓角邊框: [/font][font=新細明體]var square:Sprite = new Sprite();[/font]
d9k;[:ut G [font=新細明體]square.graphics.beginFill(0xFF);[/font]wy/n.P GoM.K#Y
[font=新細明體]square.graphics.drawRoundRect(0, 0, 100, 50, 10, 10);[/font]
{'oj.D7D:@;b3w [font=新細明體]square.graphics.endFill();[/font]
m.CG.G7g]-x%w9ql [font=新細明體]addChild(square);[/font] B3^^0V#e1v3I;?X'Z%nH
[font=新細明體]Sprite 是 MovieClip 的簡化版本, 可以理解成只有一幀的 MovieClip 。[/font] |(P#ai%Svr[ X0WN
[font=新細明體]as3 中新增了一些變數類型, 基本類型 (頂級類, Top Level Class) 包括簡單類型:[/font]mR+GSU v,Tq
[font=新細明體]Boolean [/font]
RK2lg&LA M7E [font=新細明體]int [/font]
y%R'I2|x t [font=新細明體]null [/font]
GN oW0ea+G [font=新細明體]Number [/font]
M2HSg6k\4g6A$FM5p{ [font=新細明體]String [/font]
bh-zy?#HE` [font=新細明體]uint [/font]5K$I;W]!K^!AFG
[font=新細明體]undefined[/font]mJ$h e _/VM
[font=新細明體]復合類型 (或許叫做類會比較順口):[/font]
9V.mW4g._qq(? [font=新細明體]Object [/font]
t:uU#y8p vBw^ [font=新細明體]Array [/font]]6r%f u1U R.?/z
[font=新細明體]Date [/font]6Aly"T'h
[font=新細明體]Error [/font]niB8xg
[font=新細明體]Function [/font]
_"R(s!XW!]g f2b [font=新細明體]RegExp [/font]
Z#F,_Uf [font=新細明體]XML [/font]
4hXX]7~Ip [font=新細明體]XMLList[/font]MzdT7I9qE4AgR
[font=新細明體]另外還有一些分類到各個包中的諸如 Matrix (flash.geom.Matrix), Shape (flash.display.Shape), URLRequest (flash.net.URLRequest), 等等[/font]
A a&k \ Y2Q)~G [b][font=新細明體]一些提示:[/font][/b]
?'^/O7fPE [font=新細明體]Void 類型在 as3 中使用小寫, Void -> void [/font]
h%EHflT2Z%xB [font=新細明體]新增了萬能類型 * 用來表示所有類型. 如果你沒有為變數指定類型, 那麼他即是預設類型。[/font]
BmE*RO [font=新細明體]var anyThing:*[/font].pyNhbV ?m(GgU
[font=新細明體]XML 類不再是 as1, 2 中的 XML. as3 中的 XML 基於 E4X, 允許你像動作普通變數一樣動作 XML (置頂帖中的教程有介紹) [/font]
+l^w7},]lI [font=新細明體]新增 int 和 uint 類型, 他們在陣列遍曆等不需要小數的場合相當有用. int 類型會比使用 Number 快一點點, 而 uint 通常用來表示顏值等 (據測試 uint 比 Number 慢, int 比 Number 快不了多少)[/font]
頁: [1]
查看完整版本: AS3 技巧和提示