Actionscript对象(Class?)语法

时间:2008-11-12 02:50:11

标签: flex flash actionscript

在尝试学习如何在ActionScript中创建对象时,我没有成功。 我注意到的一件事是,似乎有十亿种不同的方式。即使他们都没有为我工作。这真让我感到困惑,我不知道尝试调试哪种方法。

最常出现的方法是:

function myClass() {
   this.val = 1;
}

var test = new myClass();
trace(test.val);

但这只是给我编译错误,无论我做多么简单,对我来说一个函数可能是一个对象是没有意义的。如果函数是一个对象,那么“this”指向函数中的函数(即被解释为对象)时的位置。

另一种似乎不太经常出现的方式是:

class myClass {
   function myClass() {
       this.val = 1;
   }
}

var test = .... 

这也给我编译错误,看起来更正式。但我可以找到很少的文档comparitivley。大多数指南要么非常简单,要么假设您在谈论内置对象。

第三种方法是在函数中创建

 new Object();
,添加所需的所有内容并将其返回。似乎合乎逻辑。但我已经阅读了各种提到原型的东西,看起来像这样创建的对象不适合成为原型。但实际上我很困惑。

我还发现了一些东西,说AS2和AS3之间的Object语法不同,但仅此而已。

我应该如何创建对象?什么是最佳实践,对于上帝的爱,有人知道我在哪里可以找到深入的教程吗? (我的谷歌显然很弱)

1 个答案:

答案 0 :(得分:5)

AS2和AS3之间的类语法确实不同。对于AS3,语法如下所示:

package somePackage {

    public class SomeClass {
        public function SomeClass() {

        }
    }
}

作为解释,包是一个包装器,可以包含多个类,因此您必须声明包含每个类定义的包。

一个类需要一个构造函数。在大多数语言中,构造函数的名称与类的名称相同。 ActionScript就是这种情况。

调用类的实例看起来像这样:

package somePackage {

    public class OtherClass {
        public function OtherClass() {
            var something = new SomeClass();
        }
    }
}

我已经将AS3参考放在了我面前,所以我对上面的代码片段非常有信心,但不幸的是我的AS2参考工作正在运行,但代码看起来应该如下所示:

class ThirdClass {
    public function ThirdClass() {

    }
}

然后实例化变量应该看起来像这样:

var third = new ThirdClass();

请注意,所提供的示例不使用强类型,我建议您尽可能在ActionScript工作中使用。

虽然我强烈建议您选择Essential ActionScript 2.0和/或Essential ActionScript 3.0的副本,但我找到了以下指向初学教程的链接:

Beginning Flash and ActionScript Tutorials

More Beginner Tutorials