Actionscript 3 AS3 OOP常见实践示例?
我正试图更好地理解AS3 OOP的结构和组织,但我在这方面遇到了一些问题。我想创建多个类文件,而最佳实践似乎不是将所有类放在一个文件中?我在网上搜索了几个小时,没有找到好的例子。也许在使用AS3时,分离文件不是一种可行的方法,但对我来说,它只适用于模块化。我一直在玩的文件有: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之外的所有
- 佛罗里达州
- Main.as(文档类)
- TestOne.as
- test2.as
- test3.as
- TestFour.as
- TestFive.as
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实践吗?我知道这些是真正的基本类,但我认为应该把重点放在这一点上
我正在使用CS3OOP是一个大主题,但是。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()再次运行SWF,您将得到一个错误,告诉您某些内容为空。这是因为您试图对不存在的对象调用方法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;
}
}
}