Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 AS3 OOP常见实践示例?_Actionscript 3_Oop - Fatal编程技术网

Actionscript 3 AS3 OOP常见实践示例?

Actionscript 3 AS3 OOP常见实践示例?,actionscript-3,oop,Actionscript 3,Oop,我正试图更好地理解AS3 OOP的结构和组织,但我在这方面遇到了一些问题。我想创建多个类文件,而最佳实践似乎不是将所有类放在一个文件中?我在网上搜索了几个小时,没有找到好的例子。也许在使用AS3时,分离文件不是一种可行的方法,但对我来说,它只适用于模块化。我一直在玩的文件有: 佛罗里达州 Main.as(文档类) TestOne.as test2.as test3.as TestFour.as TestFive.as 我已经创建了一个名为classes的文件夹来存放除Main.as之外的所有

我正试图更好地理解AS3 OOP的结构和组织,但我在这方面遇到了一些问题。我想创建多个类文件,而最佳实践似乎不是将所有类放在一个文件中?我在网上搜索了几个小时,没有找到好的例子。也许在使用AS3时,分离文件不是一种可行的方法,但对我来说,它只适用于模块化。我一直在玩的文件有:

  • 佛罗里达州
  • Main.as(文档类)
  • TestOne.as
  • test2.as
  • test3.as
  • TestFour.as
  • TestFive.as
我已经创建了一个名为classes的文件夹来存放除Main.as之外的所有类文件,Main.as与FLA一起驻留

除了文件名和类名之外,所有五个测试类都是相同的代码

以下是我导入文件的方式:

梅因

package classes
{
import flash.display.MovieClip;

import classes.TestOne;
     import classes.TestTwo;
     import classes.TestThree;
     import classes.TestFour;
     import classes.TestFive;

public class Init extends MovieClip
{
    trace("This is Main Class");
    var testOne : TestOne = new TestOne;
}
}
TestOne.as

package classes
{
import flash.display.MovieClip;

public class TestOne extends MovieClip
{
    trace("This is TestOne");

    public function testing():String
    {
        return "This is the testing method";
    }
}
}
上面的例子是我创建的良好AS3 OOP实践吗?我知道这些是真正的基本类,但我认为应该把重点放在这一点上


我正在使用CS3

OOP是一个大主题,但是。

OOP是一个大主题,但是。

正如内森所说,是一个大主题

将所有类放在一个文件中与主题“类的可见性”和“访问修饰符”相关

修饰符是在class关键字之前写入的内容。它可以是公共的,也可以是内部的。内部意味着,只有放在内部类的同一目录(包)中的代码才能创建它的对象。公共意味着,任何代码都可以创建类的实例。通过谷歌随机链接:

允许在一个文件中包含多个类。但是只有一个修改器可以是public。所有其他的都必须是内部的。如果省略修饰符,则默认情况下类在内部可见。只能从此文件中访问多个类文件中的内部类


还有两个修改器:protected和private。两者都仅适用于属性或方法。作为一名高级开发人员,您甚至可以使用名称空间来定义自己的修饰符。

正如Nathan所说,这是一个大问题

将所有类放在一个文件中与主题“类的可见性”和“访问修饰符”相关

修饰符是在class关键字之前写入的内容。它可以是公共的,也可以是内部的。内部意味着,只有放在内部类的同一目录(包)中的代码才能创建它的对象。公共意味着,任何代码都可以创建类的实例。通过谷歌随机链接:

允许在一个文件中包含多个类。但是只有一个修改器可以是public。所有其他的都必须是内部的。如果省略修饰符,则默认情况下类在内部可见。只能从此文件中访问多个类文件中的内部类


还有两个修改器:protected和private。两者都仅适用于属性或方法。作为一名高级开发人员,您甚至可以使用名称空间来定义自己的修饰符。

最好看看这个。这是一个关于如何使用ActionScript3的逐点概述。有相当多的面向对象的东西散布在各处,所以好好浏览一下。我认为任何新的或有经验的AS3开发人员都值得一读,因为那里有很多有用的信息。

最好看看。这是一个关于如何使用ActionScript3的逐点概述。有相当多的面向对象的东西散布在各处,所以好好浏览一下。我认为任何新的或有经验的AS3开发人员都值得一读,因为那里有很多有用的信息。

面向对象的规则仍然适用于AS3
1) 封装。
2) 继承。
3) 抽象。
4) 多态性。

是否应用它们是您的选择,但这是一种良好的做法。
别忘了最重要的规则“吻”(保持简单愚蠢)

我还想指出您的代码有一个错误

package classes
{
import flash.display.MovieClip;

public class TestOne extends MovieClip
{
    trace("This is TestOne");// this line is not inside a function and will most undoubtly error out your app.

    public function testing():String
    {
        return "This is the testing method";
    }
}
}

面向对象的规则仍然适用于AS3
1) 封装。
2) 继承。
3) 抽象。
4) 多态性。

是否应用它们是您的选择,但这是一种良好的做法。
别忘了最重要的规则“吻”(保持简单愚蠢)

我还想指出您的代码有一个错误

package classes
{
import flash.display.MovieClip;

public class TestOne extends MovieClip
{
    trace("This is TestOne");// this line is not inside a function and will most undoubtly error out your app.

    public function testing():String
    {
        return "This is the testing method";
    }
}
}

我认为您要么在将代码复制到SO中时出错,要么没有正确放置跟踪语句。您需要放置
跟踪(“这是TestOne”),如下所示:

public function TestOne() {
    trace("This is TestOne");
}
Init类中的代码也是如此,它现在的内容如下:

trace("This is Main Class");
var testOne : TestOne = new TestOne;
但是应该是(注意新TestOne后面的大括号):

运行SWF时,类的构造函数
Init
将:

1) 将“这是主类”跟踪到您的控制台

2) 它将通过调用类
TestOne
的构造函数来构造一个新对象(因此称为构造函数)

如果要将此行添加到类
Init
中构造函数的末尾:

testOne.testing();
您应该在控制台中看到:“这是测试方法”

如果您现在要注释掉以下行:
var testOne:testOne=newtestone()testing

我确实意识到这主要是为了修复您的一些编码错误,而不是帮助您理解OOP。但希望您能获得一些关于对象构造的帮助。我看到一些答案已经提到了关键的OOP原则,你们真的应该研究一下

编辑:

请记住,复制代码从来都不是一件好事,所以如果您发现所有的类TestOne-TestFive都是contai
package classes {
    import flash.display.MovieClip;

    public class TestOne extends MovieClip {

        private var message : String;

        public function TestOne(myMessage:String) {
            message = myMessage;

            trace("This is TestOne");
        }

        public function testing() : String {
            return message;
        }
    }
}