一、Flash Player 7 在效能方面,根據Macromedia網頁資料,Flash Player 7在執行Action Script、播放Video、以及一般的映像顯示等方面都有明顯的改進。這對要用Flash來做比較複雜編程應用的人來說,絕對是個好訊息。
除了錯誤修正和運行效率提高,Flash Player 7也多了許多使用者可以控制的東西。例如,瀏覽使用者可以通過右鍵菜單點擊一個串連開啟一個新視窗。(現在Flash Player 7有新的選項:開啟、在新視窗開啟、拷貝串連。)
此外,為了協助使用者保持最新版本的補丁,Flash Player 7包含了自動更新特性,播放器每隔一段時間都會檢測一次新版本並指導使用者更新版本,這意味著使用者們將非常容易地升級播放器,從而得到最新版本的執行效率和安全性的提高。
二、Action Script 2.0 在新版本中,Action Script的編程面板和編程特性都改動非常大。
A. 編程面板 為了提高編程的效率和易用性,Action Script的編程面板在很多方面都做了改進,這裡列出的只是一些比較明顯的特性。
1. 編程時文字的自動匹配:在Script面板、Debugger面板、Output面板,輸入某個關鍵字的一部分時,都會有一個快顯視窗,顯示匹配的單詞。
2. 關聯的協助資訊:當游標移動到Action Script的關鍵字上的時候,在菜單上會顯示相關的說明主題,這對Action Script不是很熟練的人來說很有用。
3. 匯入Scripts:在Action面板的快顯功能表上選取“Import Script”功能時,匯入的Scripts會插入到相應的地方。之前版本的Flash在匯入Scripts後會覆蓋原先的Script。
4. 斷點設定:在面板的左邊點擊一下,就可以設定一個斷點。所謂的斷點就是偵錯工具的時候,運行到斷點所在的位置就會停下來,這對監視程式運行中的變數很有用。
5. Action 面板不再區分“普通模式”和“專家模式”:在新版本中,只能在Script面板中直接輸入命令。
6. Action面板中顯示多個Scripts:這有是一個非常有用的功能,不用再跳來跳去,從而大幅度提高開發效率。
B. 編程特性 Action Script一直都在發展,每次Flash新版本的發布,都會加入新的關鍵字、對象、方法、元素等等。但與之前的Flash版本不同,Flash MX 2004實現了更標準的物件導向編程方法,改動的地方非常之大,所以就出現了一個新的Action Script版本:Action Script 2。
如果說Action Script 1.0是JavaScript,那2.0就是Java,嚴謹的Data Type,完全Class Based,非常類似Java! Action Script 2.0的出現,並不表示舊的Action Script 1.0被淘汰,因為Action Script 2.0隻是給開發人員一個更嚴謹的程式設計語言,方便開發,方便編譯時間Debug等。用Action Script 2.0寫的Flash,也可以給Flash Player 6支援,因為1.0和2.0都是編譯為同一類Byte-code。2.0除了編程文法、概念分別外,它必須寫在*.as外部檔案中,只被專業版支援。傳統程式員可能會更喜歡用Action Script 2.0。下面我們來看看Action Script 2的編程特性。
1. 嚴格的資料類型
在使用一個變數之前要先定義它。變數的類型不符會很容易導致很多的錯誤,嚴格的資料類型可以防止在一個變數上面賦與錯誤類型的值。嚴格的資料類型還有一個好處就是當Action面板會針對變數顯示編程提示,比如方法,值之類的。
2. 新的語言元素
在Flash MX 2004中加了不少新的語言元素,要注意的是,在編程中用了新的語言元素,必須要在Flash Player 7中才有效。
Button.menu, MovieClip.menu 和 TextField.menu
這些屬性基於ContextMenu類,在給對象加入新菜單選項時用。
ContextMenu 和 ContextMenuItem
這兩個類可以定製右擊Flash Player時contextmenu的顯示。
Error, Throw 和 Try..Catch..Finally
通過這幾個激動人心的東西可以更有效地處理異常。
LoadVars.addRequestHeader() 和 XML.addRequestHeader()
這兩個方法可以添加或更改HTTP的POST要求標頭(像Content-Type 和 SOAP Action)。
MMExecute()
這個函數可以在Action Script中引用Flash JavaScript API,比如,在Text Field中點擊一個HTML串連,可以在Action Script中引發一個函數。
Mouse.onMouseWheel
這個不用說了吧?滾動滑鼠滾輪的時候就會觸發它。
MovieClip.getNextHighestDepth()
這個函數返回一個Movie Clip的最大深度。
MovieClip.getSWFVersion()
這個方法可以決定發布的SWF檔案支援哪個版本的Flash Player。
MovieClip._lockroot
這個屬性可以讓你指定一個Movie Clip做為一個_root,這樣你就可以在其他的Clip中引用這個Clip,也可以鎖定一個_root的Clip被Load到其他Clip中也不會改變。
Sound.onID3 和 Sound.ID3
Sound.onID3事件提供了一種途徑去操作包含MP3檔案的ID3資料。Sound.ID3屬性可以存取MP3檔案的中繼資料。
TextField.condenseWhite
這個屬性可以去除文本域中多餘的空格。
TextField.StyleSheet
通過這個類可以建立一個style sheet對象,style可以來自CSS 1.0文檔,也可以通過Action Script添加。
System 和 System.capabilities
System多了新的對象和方法,System.capabilities對象中也多了幾個新的屬性。
3. 新的關鍵字
Action Script 2中支援Action Script 1中的所有標準關鍵字。在Action Script 2可以用更物件導向的方法去編程。
下面這些關鍵字是在Action Script 2中新增的。
class
extends
implements
interface
dynamic
static
public
private
get
set
import
C. ActionScript 2 編程例子 這裡不可能完整地講解Action Script 2。Action Script 2完全符合ECMA 262 第四版的規範(http://www.mozilla.org/js/language/es4/) 。下面我們來看看幾個Action Script 2的編程例子。
Class
這是一個介紹如何在Flash MX2004中用classes的簡單例子。
// class declaration:
class TPoint
{
// class properties:
var _x:Number = 0;
var _y:Number = 0;
// class contructor
function TPoint() {
}
}
這是一個稍微複雜一點的例子。
// class declaration:
class TPoint
{
// class properties:
var _x:Number = 0;
var _y:Number = 0;
// class contructor
function TPoint(x:Number, y:Number)
{
if (arguments.length > 0)
{
_x = x;
_y = y;
}
}
// function to overwrite properties with new values
function SetPoint(x:Number, y:Number)
{
_x = x;
_y = y;
}
}
下面是調用剛剛定義的類。
var Point0:TPoint = new TPoint();
var Point1:TPoint = new TPoint(5,5); // default values
Extends
這是繼承的簡單例子。
class TPoint3D extends TPoint
{
var _z:Number = 0;
function TPoint3D(x, y, z:Number)
{
if (arguments.length > 0)
{
super(x, y);
_z = z;
}
}
}