摘要 Flash仿真課件設計與制作過程中,大量涉及對象的準確定位問題。以Flash 8.0為例,對其中各個不同的坐標系進行詳細分析與比較,并針對其在應用中的不同作用及適用范圍進行闡述,為Flash仿真課件設計制作過程中對象的準確定位提供比較系統的參考。
關鍵詞 課件;仿真;坐標;Flash
中圖分類號:G434 文獻標識碼:A 文章編號:1671-489X(2008)24-0107-03
Flash作為當今流行的網絡動畫設計軟件,已經成為課件設計與制作者的首選工具,而且不少人已經使用了很長時間,積累了豐富的Flash作品設計與制作經驗,用于教育領域的Flash作品質量也越來越高,這并不僅僅體現在畫面的精美與動畫的絢麗等方面,更重要的是不少作品已經逐漸擺脫了簡單的“示意”,向著“仿真”的高度靠近,也就是說動畫展現出來的,已經是科學原理的真實再現,而不是簡單的“示意”圖了。
要達到“仿真”的效果,那么許多形狀以及運動都不能憑借設計者“想當然”地去描繪了,而是要根據嚴謹的數學公式生成。比如作品中有物體的運動,那么運動的速度變化以及運動軌跡等,都要在一定的比例下嚴格地符合現實中的真實情況,要達到這個目的,實際上就是要控制運動物體的坐標,使其每時每刻都要與反映自身運動規律的嚴密的數學公式相符合。再比如,現在越來越受到人們重視的非傳統幾何學——分形幾何,它可以很好地描述諸如小腸絨毛、大腦皮層的結構,海岸線、閃電的路徑等[1],如果要用課件精確展示,那么圖形中的每一點的位置,即每一點的坐標值,都是要根據嚴密的數學公式實時計算出來的。
上述情況都說明“仿真”作品對“坐標”的要求,而當用Flash設計作品時,對Flash自身獨特的坐標系統的理解就成為了關鍵,本文以Flash8.0為例,對Flash自身的各種坐標系以及不同的坐標值詳加說明。
1 Flash坐標的種類
在Flash中,根據坐標系所處的位置不同,可分為位于主場景中的坐標和位于影片剪輯中的坐標兩大類。

1.1 位于主場景中的坐標系
1) 坐標描述。此類坐標位于所設計作品的主場景中,以整個舞臺為基本作用范圍,如圖1所示,原點位于舞臺的左上角,x軸以左為正,y軸以下為正。
2)實例驗證。如圖1中兩點A、B,在動作面板中輸入以下代碼:
trace (\"A._x=\"+A._x);
trace (\"B._x=\"+B._x);
trace (\"A._y=\"+A._y);
trace (\"B._y =\"+B._y);
在輸出面板中顯示A、B兩點坐標值如下 (具體數值因A、B兩點位置不同而變) :
A._x=249.9
B._x=165.55
A._y=57.5
B._y=238.7
對比x、y坐標值,可知坐標軸方向。
需要注意的是此處所說的坐標與圖中標尺所顯示出的坐標并非完全一致,第四部分中會涉及到。
1.2 位于元件中的坐標系
1)坐標描述。此類坐標位于設計者所建立的“元件”內,如圖2所示,坐標原點位于編輯區中的“+”符號處,這個“+”符號會一直顯示在編輯區中,x軸以左為正,y軸以下為正。

2)實例驗證。如圖2中兩點C、D,同樣在動作面板中輸入相應代碼,在輸出面板中會顯示C、D兩點坐標值如下:
C._x=115.35
D._x=64.35
C._y=50.2
D._y=120.35
2 坐標與注冊點
2.1 注冊點的概念設計作品過程中所用的“元素”,如圖形、圖像等,一般都是有實際大小的,要確定它們的坐標,必須把這些有實際大小的“元素”縮小成一個點,這個點的坐標就是這個“元素”的坐標,而這個點就是注冊點。

2.2 實例的坐標與注冊點的關系一個實例的注冊點外在表現是一個“+”符號,例如一個圓,如圖3中(a)所示,“+”符號中心的坐標即整個實例的坐標。而“+”符號并不一定是在整個實例的中心位置,設計者可以對它進行調整,如圖3中(b)所示。“+”符號外圍的小圓圈指示的是整個實例的旋轉中心,它與注冊點也是可以隨設計者的意愿而分離的,如圖3中(c)所示。
并不是任何“元素”都有注冊點,只有元件或具有元件特性的對像才具有注冊點。那么,沒有注冊點的那些“元素”,在設計作品時是無法實時、精確地控制其位置的。這也是為什么經常用元件在舞臺上生成的實例來設計作品,而不是直接用普通圖形、圖像的原因之一。
圖形元件所生成的實例,雖然有注冊點,但沒有實例名,所以也不可能調用其坐標值。
2.3 普通圖形的坐標普通圖形泛指不具有元件特性的“元素”,它本身根本沒有注冊點,也就是說它根本沒有可供在設計作品的過程中調用的坐標值。
3 兩種不同的坐標值
拋開在第一部分中提到的兩種不同的坐標系所造成的原因不談,一個元件在舞臺上形成的實例往往仍有兩組不同的坐標值,即屬性坐標值和Action坐標值。
3.1 屬性坐標值這種坐標值顯示在屬性面板或信息面板中,只需選中舞臺上的對像就可查看,如圖4所示。這種坐標值與圖1和圖2中的標尺數值是相一致的,是任何對像都具有的,也即在Flash中所涉及的一切“元素”都具有這種坐標值。

這種坐標值是以對像最小外切矩形左上角的位置為基點來確定的,與注冊點無關[2]。
3.2 Action坐標值這種坐標值在ActionScript中用到,并且只有“元件”在舞臺上生成的實例才具有(圖形元件除外),其調用的方法是instanceName._x,instanceName._y,在屬性面板中卻是不能顯示出來的。這種坐標值是以注冊點為基點來確定的。
3.3 兩種坐標值的比較上述兩種坐標值大小是不同的,因為這兩種坐標值確定的基點就各不相同,當然,驗證也很方便:一元件在舞臺某處生成實例,實例名取為myInstance,選中此實例,則在屬性面板中會顯示出它的屬性坐標值。而Action坐標值則可通過運行如下腳本代碼調出:
trace(“x=”+myInstence._x);
trace(“y=”+myInstence._y);
比較所得到的兩組坐標值,就可明顯看出截然不同。
在作品設計制作過程中,涉及到坐標值,在一般情況下,多指Action坐標值[3],它在作品運行過程中可實時改變,靈活多變。例如通過編程隨時控制運動對象的運動路徑、方向等。而屬性坐標多用于幫助設計者在設計過程中定位對象在舞臺上的位置,只是針對于設計者的一種輔助工具而已。
4 嵌套坐標
4.1 嵌套坐標的含義嵌套坐標是指一個對象嵌入另一個對象之內,嵌入對像的坐標。例如,舞臺上有一個元件生成的實例,實例名為inStanceA,inStanceA中又包含另一個元件生成的實例inStanceB,inStanceB的坐標值即是嵌套坐標。此處之嵌套在實際應用中可層層相嵌,即A中包含B,B中包含C,C中包含……
4.2 嵌套坐標值的表示如上所述,實例A在主場景中,而B在A中,則B的坐標值(Action坐標值)一般有兩種表示:一種是本地坐標,即B在A坐標系中的坐標值,俗稱相對坐標;另一種是全局坐標,即B在主場景中的坐標值,俗稱絕對坐標。
本地坐標與全局坐標是可以相互轉換的,分別用到如下兩個函數:全局坐標轉換成本地坐標:globalToLocal( );本地坐標轉換成全局坐標:localToGlobal( )。
在實際的設計制作中,大多用本地坐標,語句instinceName._x,instenceName._y調用的就是這種坐標值。全局坐標較少用到[4]。
5 結束語
對Flash本身坐標系統的理解,并非是所有Flash課件設計與制作的必要條件,但是,對于Flash“仿真”課件來說,它卻不僅是必要的,而且對坐標系統的理解程度,直接關系到設計制作過程中的算法分析以及作品最終的檔次高低。因此,坐標系統對Flash“仿真”課件來說,是一個“基石”。
參考文獻
[1]劉華杰.分形藝術[M].長沙:湖南電子音像出版社,1997
[2]徐建志.Flash圖形中心問題剖析[J].海南師范學院學報:自然科學版,2004(2):120-124
[3]繆亮,張愛文.Flash多媒體課件制作實用教程[M].北京:清華大學出版社,2007
[4]章精設,繆亮,白香芳.Flash ActionScript2.0編程技術教程[M].北京:清華大學出版社,2005