AS3的新手,长期的程序员。基本上我创建了无数的对象,所有对象都具有相同的功能,尽管每个对象(包括艺术作品)之间的属性会有所不同。我相信他们都会成为影片剪辑,因为他们会互动,我相信他们会感动。
我想知道创建这些对象的最佳方法是什么。我假设我创建了一个具有功能和属性的对象类,我只是不确定如何实例化具有不同属性的多个副本,如果这是有道理的。
对不起我的措辞不好,如有必要,我可以帮忙详细说明,并提前感谢您的帮助! :)
答案 0 :(得分:3)
创建一个类。
package {
import flash.display.MovieClip;
public class MyMovieClip extends MovieClip {
}
}
添加可能不同的属性。
package {
import flash.display.DisplayObject;
import flash.display.MovieClip;
public class MyMovieClip extends MovieClip {
private var _borderColor : uint;
private var _artWork : DisplayObject;
}
}
添加修改属性的可能性。您可以使用构造函数参数或显式getter / setter,也可以将属性声明为公共属性。
package {
import flash.display.DisplayObject;
import flash.display.MovieClip;
public class MyMovieClip extends MovieClip {
private var _borderColor : uint;
private var _artWork : DisplayObject;
// using constructor parameters
public function MyMovieClip(borderColor : uint, artWork : DisplayObject) {
_borderColor = borderColor;
_artWork = artWork;
}
// using setter/getter
public function set borderColor(borderColor : uint) : void {
_borderColor = borderColor;
}
public function get borderColor() : uint {
return _borderColor;
}
public function set artWork(artWork : DisplayObject) : void {
_artWork = artWork;
}
public function get artWork() : DisplayObject {
return _artWork;
}
}
}
创建类的实例并使用不同的值设置它们:
package {
import flash.display.Shape;
import flash.display.Sprite;
public class Main extends Sprite {
public function Main() {
var myMc1 : MyMovieClip = new MyMovieClip(0xFF0000, new Shape());
var myMc2 : MyMovieClip = new MyMovieClip(0x0000FF, new Shape());
var myMc3 : MyMovieClip = new MyMovieClip(0x00FF00, new Shape());
myMc1.borderColor = 0xFF0000;
myMc3.artWork = new Shape();
}
}
}
答案 1 :(得分:1)
在AS3中,Object类在其修饰符中标记为动态,随后您可以动态添加您想要的任何属性。此外,类似地,您可以创建自己的类并将其标记为动态,然后动态添加属性...为了正确评估如何使用这些属性虽然可能不值得复杂化,而是最好做出不同的不同类型对象的类。如果它们共享一些基本功能,那么您可以先创建一个基类并为每个特定类型的对象扩展它。
然而,正如我上面所说,我认为扩展可能是一种更好的方法来实现你想要做的事情......而且我是使用Flex框架使AS3更容易使用的一个主要倡导者,无论如何更多OOP与AS3在这里: http://www.adobe.com/devnet/actionscript/articles/oop_as3.html
请告诉我这是否有帮助,或者您正在寻找其他内容。