apache-flex - Actionscript 对象(类?)语法

标签 apache-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 = .... 

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

第三种方法是创建一个

 new Object();
在函数中,添加您想要的所有内容并返回它。看起来合乎逻辑。但我读过各种提到原型(prototype)的东西,似乎以这种方式创建的对象不适合成为原型(prototype)。但实际上我只是很困惑。

我还发现 AS2 和 AS3 之间的对象语法不同,但仅此而已。

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

最佳答案

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

关于apache-flex - Actionscript 对象(类?)语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/282856/

相关文章:

flash - 获取 ActionScript 3 字典的大小

apache-flex - 使用 CSS 定义 Flex 4 皮肤

ios - ApplicationDomain.getDefinition 在适用于 iOS 的 Release Build 中不起作用

java - flex ant 任务中的 flex 编译器错误(警告)消息

apache-flex - IE9 崩溃并重新打开

android - 如何使用 ActionScript 3 访问 APK 文件中的资源? (土坯空气)

flash - 使用Flash Builder创建AS3类的集合

linux - Linux下用Flex SDK创建构建纯 "ActionScript project"

flash - 调用 stage.width 和 stage.stageWidth 的区别?

javascript - Flowplayer 重叠播放同一轨道两次