2010-07-26 91 views
0

,如果我想返回/檢查類值有什麼辦法可以模仿我們在AS3頂級類例如相同的行爲:的ActionScript 3 - 申報

var myArray:Array = [1,2,3,4]; 
trace(myArray) // [1,2,3,4]; 

正如你可以看到它在追蹤時返回自己的對象。
但如果我創造我自己的類,extends Array我得到

var queue:Queue = new Queue([1,2,3,4]); 
trace(queue) // no output 

所以這裏有2個問題。

是有可能創建一個自定義的類的實例,就像我喜歡創建一個數組:

var queue:Queue = [1,2,3,4]; 
//instead 
var queue:Queue = new Queue([1,2,3,4]); 

,我怎麼能要求對象時返回的超級對象等;

trace(queue) // [1,2,3,4]; 

我不知道這是否可能在AS3做

感謝您的幫助

+1

相關:http://stackoverflow.com/questions/3090406/extending-array-in-actionscript-3-flex – 2010-07-26 20:02:21

+0

非常感謝傑米[Quasimondo回答](http://stackoverflow.com/questions/3090406/extending-array-in-actionscript-3-flex/3092347#3092347)真的是我一直在尋找:) – zanona 2010-07-26 22:12:04

回答

0

@ jamie-wong指出正確的答案@quasimondo回答權利here

這不是我的答案,而是@quasimondo,但由於沒有辦法將評論歸類爲正確的答案,所以我寧願回答此問題。 所有學分都適用於他們。

1

livedocs.adobe.com

「你可以擴展Array類並覆蓋或添加方法,但是,您必須將子類指定爲動態的,否則將失去將數據存儲在數組中的能力。「

也許你沒有明確指定子類爲動態的(聲明爲public dynamic class Queue)?

+0

嘿Robusto非常感謝你幫助這個基本上是所有事情的開始:) Jamie在上面發佈了他的問題,我可以找到答案。謝謝你的幫助 – zanona 2010-07-26 22:13:49

0

要做到這一點,最好的方法是覆蓋類的toString方法,當你用一個字符串連接類或只是跟蹤它時,可以輸出任何你想要的內容。

public class MyClass 
{ 
    private var _values:Array = [1,2,3,4]; 
    . 
    . 
    . 
    override public function toString():String 
    { 
     return 'MyClass[' + _values.join(',') + ']'; 
    } 
} 

var mc:MyClass = new MyClass(); 
trace(mc); 

這將輸出:

MyClass[1,2,3,4]