...[
http://www.25swf.com]
AS3 中的反射实现[工厂模式]
2007-09-01 11:06:00 / 个人分类:Flash
因项目需要,在AS3中需要再次使用工厂模式,因为要生产的产品种类很多,因而使用switch不能使我满意.上网一找,发现早有无数达人已经有实现方法了,这次的实现方法对于AS2的反射实现来得更自然,因为使用的是AS3自带的方法.关于 AS2 的反射实现的可看我以前写的文章.
AS3 中用反射来实现工厂模式的代码 ,有下划线的为关键语句.
/*
* 工厂方法
*/
package cw.Factory
{
import flash.utils.getDefinitionByName;
import flash.display.*;
public class CardFactory
{
static public function Make(_classname:String)
{
try
{
var ClassReference:Class = getDefinitionByName(_classname) as Class;
return new ClassReference() as MovieClip;
}
catch(e:Error)
{
throw("error");
}
}
}
}
工厂已经创建好,接下来就是生产了.
假设有一元件,我们做以下设置
cw.Cards.CommonClass.Cards.p1034 这个类并不存在,但是FLASH在编译时会为我们自动生成这个类,Base class 则是该类的父类,当然,以后我会从MovieClip派生一个Card类,然后让Card类作为它的父类.但这并不影响下面的结果.
在主入口类的构造方法里,敲入以下代码便可以看到最终的结果了.
var mycard:MovieClip = CardFactory.Make("cw.Cards.CommonCLass.Cards.p1034")
mycard.x = 100;
mycard.y = 100
addChild(mycard)
希望得到更多的交流
http://www.25swf.com