| 至從使用as2後,所有的功能新增都是利用繼承的方式撰寫,但是prototype的設定並沒有因此不見囉!!,下面有兩個範例可以參考....
ps.關於ASSetPropFlags這個函數,主要是用來影藏方法或屬性使用的..
//====新增 movie clip 的位置屬性 ===============
// 設定mc的get和set 位置函數
function $setLocation(pt) {
this._x = pt.x;
this._y = pt.y;
}
function $getLocation() {
return {x:this._x, y:this._y};
}
//增加mc的get和set的屬性
MovieClip.prototype.addProperty("_location",
$getLocation, $setLocation);
// 設定ASSetPropFlags,防止利用for(i in mc)取得訊息
var HIDDEN:Number = 1;
var PROTECT_DELETE:Number = 2;
var PROTECT_OVERWRITE:Number = 4;
ASSetPropFlags(MovieClip.prototype,"_location",
HIDDEN | PROTECT_DELETE | PROTECT_OVERWRITE, 0);
//如此movie clip就可以利用_location定位了!!
my_mc._location = {x:20, y:40};
//====新增取得 movie clip 祖父層資訊 ===========
// 設定mc的get和set 上兩層的函數
function $setGrandpa(mc) {
this.$grandpa = mc;
}
function $getGrandpa() {
return this._parent._parent;
}
MovieClip.prototype.addProperty("_grandpa",
$getGrandpa, $setGrandpa);
// 設定ASSetPropFlags,防止利用for(i in mc)取得訊息
var HIDDEN:Number = 1;
var PROTECT_DELETE:Number = 2;
var PROTECT_OVERWRITE:Number = 4;
ASSetPropFlags(MovieClip.prototype, "_grandpa",
HIDDEN | PROTECT_DELETE | PROTECT_OVERWRITE, 0);
//建立兩層movie clip然後測試_grandpa屬性
createEmptyMovieClip("dad_mc", 0);
dad_mc.createEmptyMovieClip("sonofa_mc", 0);
trace(dad_mc.sonofa_mc._grandpa);
|