萬盛學電腦網

 萬盛學電腦網 >> 圖文處理 >> Flash教程 >> flash中AS的使用技巧匯總

flash中AS的使用技巧匯總

   都是在項目中總結的,經過實踐的,在flex2 as3下使用的。

  as調js

  ExternalInterface.call("js函數名",參數:數組);(可以接收返回值)

  js調as

  as:ExternalInterface.addCallback("js中使用的函數名(字符串)", as中的函數(函數類型));

  js:SWF名.js中使用的函數名(參數);

  對象清理:

  as中如果某個對象不被使用,且沒有任何對象引用它,則此對象會被回收器回收(不一定什麼時候),所以用完的對象一定要處理(比如加的監聽要刪除等等),否則會長占內存。

  重繪:

  flash中被擋住的對象也會被重繪,比如在一個位置不停的畫圓,畫到幾百或幾千層,當鼠標經過這塊的時候會感覺到速度變慢,查看cpu狀態會看到cpu被占滿,但不會占內存。

  判斷對象類型:

  if(a is 類型){}

  獲得對象類型:

  trace(typeof 對象)輸出對象類型

  類型轉化:

  var a:類型 = b as 類型;

  強轉:

  var a:類型 = 類型(b);

  判斷數字:

  isNaN(表達式),注意是數字時返回false

  Timer

  不要認為Timer可以極其准確;使用Timer時間間隔不要低於10毫秒.

  private,protected,internal,public訪問權限

  private:只能在類本身內部訪問

  protected:可以由類本身或任何子類訪問.

  internal:可以由類本身或者相同包內的任何類訪問;

  public:可以在類內部訪問,也可以由類實例訪問

  for...in與for each...in的區別

  與for...in循環不同的是,for each...in循環中的迭代變量包含屬性所保存的值,而不包含屬性的名稱(或主鍵,索引).

  例如:var obj:Object={name1:value1,name2:value2};

  for...in取出的是name,for each...in取出的是value

  對象:

  AS中所有對象可默認互相轉換,如數組可以當作Map來用。

  但是作為數組來用時,就不能保證順序了。

  比如:

  var array:Array = new Array();

  array["a"] = new Object();

  ToolTip

  如果禁止ToolTip顯示,

  1.this.truncateToFit = false;(不會出現...)

  2.重寫updateDisplayList,並最後super.toolTip = null;(會出現...)

  反射:

  classType = flash.utils.getDefinitionByName(className) as Class;

  new classType();

  格林尼治時間 格式化時出錯。(如中國 時區,1970/01/01 08:00時出錯,已經確認是flex的bug)

  replace所有

  AS中沒有replaceAll 函數,要實現這個函數可以用正則表達式

  如: 將 00:00:00 中的 ’:‘替換成  ‘ ‘ 可如下實現

  var testStr : String = "00:00:00";

  var repedStr : String = testStr.replace(/:/g, " ");

  /:/g 後面的g不能少, g 表示全局

  AS對象深Clone方法:

  private function clone(_source:Object):* {

  var copier:ByteArray = new ByteArray();

  copier.writeObject(_source);

  copier.position = 0;

  return(copier.readObject());

  }

  mx_internal類型的方法也可以重載:(不推薦)

  需要在import的最下面進行如下聲明-

  use namespace mx_internal

copyright © 萬盛學電腦網 all rights reserved