ActionScript 3 0的物件鍵和記憶體管理

2022-03-21 11:57:45 字數 1222 閱讀 3448

下面一段摘自《programming actionscript 3.0 中文版》

adobe flash player 使用垃圾**系統來恢復不再使用的記憶體。當物件不具有指向它的引用

時,即可對其進行垃圾**,並會在下次執行垃圾**系統時恢復記憶體。例如,以下**創

建乙個新物件,並將對此物件的引用分配給變數 myobject:

var myobject:object = new object();

只要有對此物件的引用,垃圾**系統就不會恢復此物件占用的記憶體。如果更改 myobject

的值以使其指向其它物件或將其設定為值 null,並且沒有對原始物件的其它引用,則可以對

原始物件占用的記憶體進行垃圾**。

如果將 myobject 用作 dictionary 物件中的鍵,則會建立對原始物件的另乙個引用。例如,

以下**建立兩個物件引用(myobject 變數和 mymap 物件中的鍵):

import flash.utils.dictionary;

var myobject:object = new object();

var mymap:dictionary = new dictionary();

mymap[myobject] = "foo";

要使 myobject 引用的物件能夠進行垃圾**,您必須刪除對它的所有引用。在此情況下,

必須更改 myobject 的值並從 mymap 中刪除 myobject 鍵,如以下**所示:

myobject = null;

delete mymap[myobject];

此外,它可以使用 dictionary 建構函式的 useweakreference 引數,以使所有字典的鍵成

為「弱引用」。垃圾**系統忽略弱引用,也就是說只具有弱引用的物件可以進行垃圾**。

例如,在以下**中,要使物件能夠進行垃圾**,您不需要從 mymap 中刪除 myobject 鍵:

import flash.utils.dictionary;

var myobject:object = new object();

var mymap:dictionary = new dictionary(true);

mymap[myobject] = "foo";

myobject = null; // 使物件能夠進行垃圾**。

感覺這句可以省略,直到程式結束被自動**,當然,寫上更好

ActionScript 3 0工廠模式例項

研究了一段時間工廠模式,順便把書裡面的例子敲一下,大概效果就是這樣。示例效果 說明 運用了兩個工廠模式,乙個是簡單工廠 shipcreator.as 建立飛行器,乙個是工廠方法 weapon.as 建立 子彈。飛機裝載的 過於耦合,如果要開發成小遊戲,還要改善。用這個例子說明工廠方法實在適合不過,飛...

ActionScript 3 0 事件機制小結

這次先把actionscript 3.0 事件機制總結一下先吧,這裡只說一下自定義類傳送事件的3中方式,因為在設計模式中是比較常用的。例如mvc。關於自定義事件,主要由於兩個類 事件類 event 事件傳送類 eventdispatcher 我們討論的自定義傳送事件,就是如何使物件能夠傳送事件。方式...

actionscript 3 0 理解冒泡事件

關於冒泡事件的理解,主要有3個階段 1.捕獲階段,eventphase的屬性值1 2.目標階段,eventphase的屬性值2 3.冒泡階段,eventphase的屬性值3 以上為黑羽所著的 actionscript3殿堂之路 中描述為。讓我們來看下面的例子 比如點選以上倒數第3個容器,事件流過程如...