2010-07-26 66 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]