2010年2月22日 星期一

Smartfox Notes


AS3 API:http://www.smartfoxserver.com/docs/docPages/as3/html/

Server Side API:http://www.smartfoxserver.com/docs/docPages/serverSideApi/index.htm

Doc: http://www.smartfoxserver.com/docs/index.htm

Delete Room Variables

var
varList:Array = []
var roomVar:Object = {name:"test", value:null}

varList.push(roomVar)

smartFox.setRoomVariables(varList)

Smartfox Notes


AS3 API:http://www.smartfoxserver.com/docs/docPages/as3/html/

Server Side API:http://www.smartfoxserver.com/docs/docPages/serverSideApi/index.htm

Doc: http://www.smartfoxserver.com/docs/index.htm

Delete Room Variables

var
varList:Array = []
var roomVar:Object = {name:"test", value:null}

varList.push(roomVar)

smartFox.setRoomVariables(varList)

2010年2月19日 星期五

Loader vs URLLoader

SRC


Loader:圖片、swf


URLLoader:圖片、swf以外


Loader vs URLLoader

SRC


Loader:圖片、swf


URLLoader:圖片、swf以外


TextField

1.background color不能設alpha,只能自己在textfield後面畫背景。


2.裝置字體:安裝在使用者電腦中的字體。


3.套用樣式表限制


4.指定特定範圍format:myTextField.setTextFormat(myformat, 49, 65);


4.Multiline vs Wordwrap


TextField

1.background color不能設alpha,只能自己在textfield後面畫背景。


2.裝置字體:安裝在使用者電腦中的字體。


3.套用樣式表限制


4.指定特定範圍format:myTextField.setTextFormat(myformat, 49, 65);


4.Multiline vs Wordwrap


Application Domain

SRC1


SRC2


SRC3




總之,有三種用法:


1.LoaderContext.applicationDomain = ApplicationDomain.currentDomain;


2.LoaderContext.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);


3.LoaderContext.applicationDomain = new ApplicationDomain();


Application Domain

SRC1


SRC2


SRC3




總之,有三種用法:


1.LoaderContext.applicationDomain = ApplicationDomain.currentDomain;


2.LoaderContext.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);


3.LoaderContext.applicationDomain = new ApplicationDomain();


Application Domain

SRC1


SRC2


SRC3




總之,有三種用法:


1.LoaderContext.applicationDomain = ApplicationDomain.currentDomain;



  • 與主程式同一domain。

  • 共用庫。

  • 如果子swf有跟主程式同樣的東西時,以主程式為主。


 


2.LoaderContext.applicationDomain = new
ApplicationDomain(ApplicationDomain.currentDomain);



  • 主程式的子階層。

  • 如果子swf有跟主程式同樣的東西時,以主程式為主。


 



3.LoaderContext.applicationDomain = new ApplicationDomain();



  • 新建獨立的一個domain。

  • 與主程式完全分離。


 



呼叫
1.ApplicationDomain.currentDomain.getDefinition("Greeter"); //ApplicatinDomain為靜態物件
2.loaderInfo.applicationDomain.getDefinition("Greeter"); //loaderInfo為load時所傳入之LoaderInfo物件
後,就可以使用Greeter類別。


如要獲得新的Greeter物件可以用
1.ApplicationDomain.currentDomain.getDefinition("Greeter") as Class;
2.loaderInfo.applicationDomain.getDefinition("Greeter") as Class;


Application Domain

SRC1


SRC2


SRC3




總之,有三種用法:


1.LoaderContext.applicationDomain = ApplicationDomain.currentDomain;



  • 與主程式同一domain。

  • 共用庫。

  • 如果子swf有跟主程式同樣的東西時,以主程式為主。


 


2.LoaderContext.applicationDomain = new
ApplicationDomain(ApplicationDomain.currentDomain);



  • 主程式的子階層。

  • 如果子swf有跟主程式同樣的東西時,以主程式為主。


 



3.LoaderContext.applicationDomain = new ApplicationDomain();



  • 新建獨立的一個domain。

  • 與主程式完全分離。


 



呼叫
1.ApplicationDomain.currentDomain.getDefinition("Greeter"); //ApplicatinDomain為靜態物件
2.loaderInfo.applicationDomain.getDefinition("Greeter"); //loaderInfo為load時所傳入之LoaderInfo物件
後,就可以使用Greeter類別。


如要獲得新的Greeter物件可以用
1.ApplicationDomain.currentDomain.getDefinition("Greeter") as Class;
2.loaderInfo.applicationDomain.getDefinition("Greeter") as Class;


Delete 注意

SRC


下列範例會刪除物件的屬性:



// create the new object "account" 
var account:Object = new Object();
// assign property name to the account
account.name = "Jon";
// delete the property
delete account.name;
trace(account.name); // undefined

// delete a nonexistent property
var fooDeleted:Boolean = delete account.foo;
trace(fooDeleted); // true


下列範例會刪除陣列元素的值,length 屬性的值則不會變更:



var my_array:Array = new Array(); 
my_array[0] = "abc"; // my_array.length == 1
my_array[1] = "def"; // my_array.length == 2
my_array[2] = "ghi"; // my_array.length == 3
// my_array[2] is deleted, but Array.length is not changed
delete my_array[2];
trace(my_array.length); // 3
trace(my_array); // abc,def,


下列範例說明如何將 delete 傳回的 Boolean
值當做條件,以供將來執行程式碼時使用。請注意,如果某個項目已遭到刪除,則針對該項目再次呼叫 delete 將會傳回 false¡C



var my_array:Array = [ "abc", "def", "ghi" ];
var deleteWasSuccessful:Boolean

deleteWasSuccessful = delete my_array[0];
if(deleteWasSuccessful) delete my_array[1];
deleteWasSuccessful = delete my_array[0];
if(deleteWasSuccessful) delete my_array[2];

trace(my_array) // outputs: undefined,undefined,ghi


Delete 注意

SRC


下列範例會刪除物件的屬性:



// create the new object "account" 
var account:Object = new Object();
// assign property name to the account
account.name = "Jon";
// delete the property
delete account.name;
trace(account.name); // undefined

// delete a nonexistent property
var fooDeleted:Boolean = delete account.foo;
trace(fooDeleted); // true


下列範例會刪除陣列元素的值,length 屬性的值則不會變更:



var my_array:Array = new Array(); 
my_array[0] = "abc"; // my_array.length == 1
my_array[1] = "def"; // my_array.length == 2
my_array[2] = "ghi"; // my_array.length == 3
// my_array[2] is deleted, but Array.length is not changed
delete my_array[2];
trace(my_array.length); // 3
trace(my_array); // abc,def,


下列範例說明如何將 delete 傳回的 Boolean
值當做條件,以供將來執行程式碼時使用。請注意,如果某個項目已遭到刪除,則針對該項目再次呼叫 delete 將會傳回 false¡C



var my_array:Array = [ "abc", "def", "ghi" ];
var deleteWasSuccessful:Boolean

deleteWasSuccessful = delete my_array[0];
if(deleteWasSuccessful) delete my_array[1];
deleteWasSuccessful = delete my_array[0];
if(deleteWasSuccessful) delete my_array[2];

trace(my_array) // outputs: undefined,undefined,ghi


依指定的角度與距離移動顯示物件

SRC


依指定的角度與距離移動顯示物件



您可以使用 Point 類別的 polar() 方法,依特定的角度將顯示物件移動特定的距離。例如,下列程式碼會將 myDisplayObject 物件依 60 度角移動 100 個像素:


import flash.geom.*; 

var distance:Number = 100;
var angle:Number = Math.PI/180 * 30; //朝30度方向移動100px
var translatePoint:Point = Point.polar(distance, angle);
myDisplayObject.x += translatePoint.x;
myDisplayObject.y += translatePoint.y;


可以少寫一點了XD


依指定的角度與距離移動顯示物件

SRC


依指定的角度與距離移動顯示物件



您可以使用 Point 類別的 polar() 方法,依特定的角度將顯示物件移動特定的距離。例如,下列程式碼會將 myDisplayObject 物件依 60 度角移動 100 個像素:


import flash.geom.*; 

var distance:Number = 100;
var angle:Number = Math.PI/180 * 30; //朝30度方向移動100px
var translatePoint:Point = Point.polar(distance, angle);
myDisplayObject.x += translatePoint.x;
myDisplayObject.y += translatePoint.y;


可以少寫一點了XD


2010年2月18日 星期四

關於遊戲狀態儲存

呼呼~


總算搞定了~


原始檔


用到了不少東西:


1.ByteArray


2.Flex Framework 的 Base64Encoder/Decoder


3.registerClassAlias


 


使用時有以下限制:


1.不能儲存constructor必需參數的class,否則byteArray.readObject時會出錯。constructor包括需儲存class的任一內容class。


2.只能儲存public的variables(任何function皆可正常運作)


 


狀態儲存設計策略:


另設SaveData物件,避免使用private/protected的variables。如需使用,必須與所要儲存的資料無關。


 


獲益匪淺~


關於遊戲狀態儲存

呼呼~


總算搞定了~


原始檔


用到了不少東西:


1.ByteArray


2.Flex Framework 的 Base64Encoder/Decoder


3.registerClassAlias


 


使用時有以下限制:


1.不能儲存constructor必需參數的class,否則byteArray.readObject時會出錯。constructor包括需儲存class的任一內容class。


2.只能儲存public的variables(任何function皆可正常運作)


 


狀態儲存設計策略:


另設SaveData物件,避免使用private/protected的variables。如需使用,必須與所要儲存的資料無關。


 


獲益匪淺~


2010年2月17日 星期三

Useful Proxy

http://www.dailile.com/


比我8M直接連還快是怎樣...


Useful Proxy

http://www.dailile.com/


比我8M直接連還快是怎樣...


啟用快取的時機

http://help.adobe.com/zh_TW/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7dea.html





啟用快取的時機

http://help.adobe.com/zh_TW/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7dea.html





Loader

要存取Loader讀進來的東西的屬性,要等到收到Event.COMPLETE事件後才能讀,否則只會讀到原本的0(什麼都沒有當然是0)。


而event listener則須設在Loader.contentLoaderInfo。














Loader.fla



import flash.display.Loader;


import flash.net.URLLoader;


import flash.events.*;


var _loader:Loader=new Loader();


_loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoadingComplete);


//_loader.addEventListener(Event.COMPLETE,onLoadingComplete); // Doesn't work


_loader.load(new URLRequest("http://shoujomagic.game-host.org/touhou/imgs/yuyuko2.jpg"));


addChild(_loader);


 


trace(_loader.width, _loader.height); //0 0


function onLoadingComplete(evt:Event) {


    trace(_loader.width, _loader.height); //400 491


}




Loader

要存取Loader讀進來的東西的屬性,要等到收到Event.COMPLETE事件後才能讀,否則只會讀到原本的0(什麼都沒有當然是0)。


而event listener則須設在Loader.contentLoaderInfo。














Loader.fla



import flash.display.Loader;


import flash.net.URLLoader;


import flash.events.*;


var _loader:Loader=new Loader();


_loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoadingComplete);


//_loader.addEventListener(Event.COMPLETE,onLoadingComplete); // Doesn't work


_loader.load(new URLRequest("http://shoujomagic.game-host.org/touhou/imgs/yuyuko2.jpg"));


addChild(_loader);


 


trace(_loader.width, _loader.height); //0 0


function onLoadingComplete(evt:Event) {


    trace(_loader.width, _loader.height); //400 491


}




[東方Vocal] [SoundOnline]Hydrangea & [SYNC.ART'S]WhiteMagic





兩張白蓮的vocal~







公式


01. Heat of Bramble

 法界の火 / 東方星蓮船

 Arranged by Tsukasa


02. Hydrangea

 感情の摩天楼 / 東方星蓮船

 Arranged by Tsukasa

 Vocal and Lyrics : 三澤 秋


03. Anthurium Breakable

 東方緋想天 / 東方緋想天

 Arranged by Tsukasa

 (Re-Collection from "EN")


04. Calamus Erection

 平安のエイリアン / 東方星蓮船

 Arranged by Lo-Fi Socks


05. Rosmarinus

 クリスタライズシルバー / 東方妖々夢

 Arranged by Tsukasa

 Vocal and Lyrics : 佳織 みちる

 Guitar : a2c


06. Datura Syndrome

 少女さとり / 東方地霊殿

 Arranged by Tsukasa


07. K Lobelia

 恋色マスタースパーク / 東方永夜抄

 Arranged by Tsukasa


08. Fragrant Olive

 ほおずきみたいに紅い魂 / 東方紅魔郷

 Arranged by Tsukasa

 Vocal and Lyrics : 佐伯 佑佳


09. Cineraria

 幽霊客船の時空を越えた旅 / 東方星蓮船

 Arranged by ROSIVO (sonorounds)


10. Eleven Snowdrops

 魔界地方都市エソテリア / 東方星蓮船

 Arranged by Tsukasa

















公式


































































































































































TitleVocalLyricsArrange 
01Emotional Rule仲村芽衣子杉田さとみ五条下位

感情の摩天楼 ~ Cosmic Mind(東方星蓮船)
 
     
02Let me be with youmikomiko五条下位

魔法少女達の百年祭~(東方紅魔郷)
 
     
03When Leaving美里HarukaMasayoshi Minoshima

亡き王女の為のセプテット(東方紅魔郷)

     
04Re:Production美里杉田さとみ五条下位

ラストリモート(東方地霊殿)
 
     
05Forever cherryblossom坂上なちやまざきさやか五条下位、琉姫アルナ

幽雅に咲かせ、墨染の桜 ~ Border of Life(東方妖々夢) 
    
06紅染-benizome-美里杉田さとみ五条下位

人恋し神様 ~ Romantic Fall(東方風神録)
 
     
07二人繋ぐ道結月そら結月そら五条下位

空の帰り道 ~ Sky Dream(東方星蓮船)
 
     
08眠りし宝美里杉田さとみ五条下位

春の湊に(東方星蓮船











[東方Vocal] [SoundOnline]Hydrangea & [SYNC.ART'S]WhiteMagic





兩張白蓮的vocal~







公式


01. Heat of Bramble

 法界の火 / 東方星蓮船

 Arranged by Tsukasa


02. Hydrangea

 感情の摩天楼 / 東方星蓮船

 Arranged by Tsukasa

 Vocal and Lyrics : 三澤 秋


03. Anthurium Breakable

 東方緋想天 / 東方緋想天

 Arranged by Tsukasa

 (Re-Collection from "EN")


04. Calamus Erection

 平安のエイリアン / 東方星蓮船

 Arranged by Lo-Fi Socks


05. Rosmarinus

 クリスタライズシルバー / 東方妖々夢

 Arranged by Tsukasa

 Vocal and Lyrics : 佳織 みちる

 Guitar : a2c


06. Datura Syndrome

 少女さとり / 東方地霊殿

 Arranged by Tsukasa


07. K Lobelia

 恋色マスタースパーク / 東方永夜抄

 Arranged by Tsukasa


08. Fragrant Olive

 ほおずきみたいに紅い魂 / 東方紅魔郷

 Arranged by Tsukasa

 Vocal and Lyrics : 佐伯 佑佳


09. Cineraria

 幽霊客船の時空を越えた旅 / 東方星蓮船

 Arranged by ROSIVO (sonorounds)


10. Eleven Snowdrops

 魔界地方都市エソテリア / 東方星蓮船

 Arranged by Tsukasa

















公式


































































































































































TitleVocalLyricsArrange 
01Emotional Rule仲村芽衣子杉田さとみ五条下位

感情の摩天楼 ~ Cosmic Mind(東方星蓮船)
 
     
02Let me be with youmikomiko五条下位

魔法少女達の百年祭~(東方紅魔郷)
 
     
03When Leaving美里HarukaMasayoshi Minoshima

亡き王女の為のセプテット(東方紅魔郷)

     
04Re:Production美里杉田さとみ五条下位

ラストリモート(東方地霊殿)
 
     
05Forever cherryblossom坂上なちやまざきさやか五条下位、琉姫アルナ

幽雅に咲かせ、墨染の桜 ~ Border of Life(東方妖々夢) 
    
06紅染-benizome-美里杉田さとみ五条下位

人恋し神様 ~ Romantic Fall(東方風神録)
 
     
07二人繋ぐ道結月そら結月そら五条下位

空の帰り道 ~ Sky Dream(東方星蓮船)
 
     
08眠りし宝美里杉田さとみ五条下位

春の湊に(東方星蓮船











2010年2月16日 星期二

關於super及extends

  在child class的constructor中,一定要用super呼叫parent的constructor,否則會跑出"1203: 基底類別 Parent 中找不到預設的建構函式。"這樣的錯誤訊息。


  另外,在child class中,就算用的是super,也只能呼叫parent class中設為protected 和 private 的 functions 和 variables。














Parent.as



package{
    public class Parent{
        private var private_var:String;
        protected var protected_var:String;
        public var public_var:String;
        
        function Parent(a:String, b:String, c:String){
            private_var = a;
            protected_var = b;
            public_var = c;
            trace("call Parent's constructor");
        }
        private function private_func(){
            trace("call private_func");
        }
        protected function protected_func(){
            trace("call protected_func");
        }
        public function public_func(){
            trace("call public_func");
        }
    }
}




 














Child.as



package{
    public class Child extends Parent{
        function Child(){
            super("A","B","C");
            trace("call Child's constructor");
            //trace(super.private_var);
            trace(super.protected_var);
            trace(super.public_var);
            //super.private_func();
            super.protected_func();
            super.public_func();
        }
    }
}

 




關於super及extends

  在child class的constructor中,一定要用super呼叫parent的constructor,否則會跑出"1203: 基底類別 Parent 中找不到預設的建構函式。"這樣的錯誤訊息。


  另外,在child class中,就算用的是super,也只能呼叫parent class中設為protected 和 private 的 functions 和 variables。














Parent.as



package{
    public class Parent{
        private var private_var:String;
        protected var protected_var:String;
        public var public_var:String;
        
        function Parent(a:String, b:String, c:String){
            private_var = a;
            protected_var = b;
            public_var = c;
            trace("call Parent's constructor");
        }
        private function private_func(){
            trace("call private_func");
        }
        protected function protected_func(){
            trace("call protected_func");
        }
        public function public_func(){
            trace("call public_func");
        }
    }
}




 














Child.as



package{
    public class Child extends Parent{
        function Child(){
            super("A","B","C");
            trace("call Child's constructor");
            //trace(super.private_var);
            trace(super.protected_var);
            trace(super.public_var);
            //super.private_func();
            super.protected_func();
            super.public_func();
        }
    }
}

 




實妹

實妹


笑歪了XDrz


實妹

實妹


笑歪了XDrz


螢幕攝

紀錄一下XD


螢幕攝1


螢幕攝

紀錄一下XD


螢幕攝1


Event Flow

Event Flow


話說AS3的官方文件真他x的難看....


Event Flow

Event Flow


話說AS3的官方文件真他x的難看....


2010年2月15日 星期一

ROLL_OVER vs MOUSE_OVER

http://www.wastedpotential.com/?p=10


ROLL_OVER只會設置到指定的物件本身,


MOUSE_OVER則會設置到每一個子物件。


ROLL_OVER vs MOUSE_OVER

http://www.wastedpotential.com/?p=10


ROLL_OVER只會設置到指定的物件本身,


MOUSE_OVER則會設置到每一個子物件。


Event Class









target 屬性


target
屬性具有物件的參考,而該物件為事件的目標。在某些情況下,這會是直接參考,例如當麥克風成為使用中狀態時,事件物件的目標就是 Microphone
物件。
過,如果該目標位於顯示清單中,您就必須將顯示清單階層列入考慮。例如,假設使用者以滑鼠按一下某個點,而且這個點包含重疊的顯示清單物件,則
Flash Player 和 AIR 就一定會選擇距離 Stage 最遠的物件做為事件目標。


對於複雜的 SWF 檔,特別是其中通常以較小子物件來裝飾的檔案,可能就不會經常使用 target
屬性,因為這個屬性通常是指向某個按鈕的子物件,而非該按鈕。在這些情況下,一般的作法就是將事件偵聽程式加入至該按鈕,並使用 currentTarget
屬性 (因為它會指向該按鈕,而 target
屬性則是指向該按鈕的子系)。




也就是說,一個有好多元件的按鈕,適合用currentTarget;而單一的clip適合用target


Event Class









target 屬性


target
屬性具有物件的參考,而該物件為事件的目標。在某些情況下,這會是直接參考,例如當麥克風成為使用中狀態時,事件物件的目標就是 Microphone
物件。
過,如果該目標位於顯示清單中,您就必須將顯示清單階層列入考慮。例如,假設使用者以滑鼠按一下某個點,而且這個點包含重疊的顯示清單物件,則
Flash Player 和 AIR 就一定會選擇距離 Stage 最遠的物件做為事件目標。


對於複雜的 SWF 檔,特別是其中通常以較小子物件來裝飾的檔案,可能就不會經常使用 target
屬性,因為這個屬性通常是指向某個按鈕的子物件,而非該按鈕。在這些情況下,一般的作法就是將事件偵聽程式加入至該按鈕,並使用 currentTarget
屬性 (因為它會指向該按鈕,而 target
屬性則是指向該按鈕的子系)。




也就是說,一個有好多元件的按鈕,適合用currentTarget;而單一的clip適合用target


super

src:http://simplistika.com/super-explained/


super(arg1, arg2, ....): 呼叫parent class的constructor


super.[method](arg1, arg2, ...) :呼叫parent class的某個method


super

src:http://simplistika.com/super-explained/


super(arg1, arg2, ....): 呼叫parent class的constructor


super.[method](arg1, arg2, ...) :呼叫parent class的某個method


static shadow

如果有在自身宣告或繼承有static的東西。


又在自身宣告另外一個一般的同名變數/方法,將以自身宣告的優先。也就是說static的那個就看不到了。


package
{
    import flash.display.MovieClip;
    
    public class StaticExample extends MovieClip
    {
        public function StaticExample()
        {
            var myExt:Extender = new Extender();
        }
    }
}
 
class Base
{
    public static function calle(){trace("Static");}
    public function calle(){trace("Regular");}
    function Base(){
        calle();
    }
}
 
class Extender extends Base {}




static shadow

如果有在自身宣告或繼承有static的東西。


又在自身宣告另外一個一般的同名變數/方法,將以自身宣告的優先。也就是說static的那個就看不到了。


package
{
    import flash.display.MovieClip;
    
    public class StaticExample extends MovieClip
    {
        public function StaticExample()
        {
            var myExt:Extender = new Extender();
        }
    }
}
 
class Base
{
    public static function calle(){trace("Static");}
    public function calle(){trace("Regular");}
    function Base(){
        calle();
    }
}
 
class Extender extends Base {}




static範圍

static的variable or method範圍包括自身及children


 


以下轉自adobe document


靜態屬性與範圍鏈


雖然靜態屬性不繼承,但它們是在定義該屬性之類別及該類別
之任何子類別的範圍鏈內,因此靜態屬性是同時位於其定義類別及任何子類別的「範圍中」。也就是說,靜態屬性可以在定義靜態屬性的類別主體及其任何子類別之
內直接存取。


下列範例修改了上一個範例中所定義的類別,以示範定義於 Base 類別中的靜態 test
變數是在 Extender 類別的範圍中。換句話說,Extender 類別可以存取靜態 test
變數,而不需要以定義 test 的類別名稱做為變數的前置詞。


package 
{
import flash.display.MovieClip;
public class StaticExample extends MovieClip
{
public function StaticExample()
{
var myExt:Extender = new Extender();
}
}
}

class Base {
public static var test:String = "static";
}

class Extender extends Base
{
public function Extender()
{
trace(test); // output: static
}

}

static範圍

static的variable or method範圍包括自身及children


 


以下轉自adobe document


靜態屬性與範圍鏈


雖然靜態屬性不繼承,但它們是在定義該屬性之類別及該類別
之任何子類別的範圍鏈內,因此靜態屬性是同時位於其定義類別及任何子類別的「範圍中」。也就是說,靜態屬性可以在定義靜態屬性的類別主體及其任何子類別之
內直接存取。


下列範例修改了上一個範例中所定義的類別,以示範定義於 Base 類別中的靜態 test
變數是在 Extender 類別的範圍中。換句話說,Extender 類別可以存取靜態 test
變數,而不需要以定義 test 的類別名稱做為變數的前置詞。


package 
{
import flash.display.MovieClip;
public class StaticExample extends MovieClip
{
public function StaticExample()
{
var myExt:Extender = new Extender();
}
}
}

class Base {
public static var test:String = "static";
}

class Extender extends Base
{
public function Extender()
{
trace(test); // output: static
}

}

AS3 private, internal

private:class自身限定


internal:package內限定


AS3 private, internal

private:class自身限定


internal:package內限定