理解Actionscript / Flash对象的“实例化”

时间:2009-07-28 20:41:26

标签: flash actionscript-3 actionscript instantiation

有人可以扩展并澄清动作中对象的不同逻辑实例吗?到目前为止,由于缺乏更好的术语,似乎有3层实例化。

第一个是声明变量/类型。

接下来是在代码中用固定的东西来实例化该变量,比如方法或函数?这只是一种将事物粘合在一起的方法吗?

然后你在舞台上实例化它,这是你必须明确做的事情,还是副作用?

这个“3层”概念是否正确看待它,有点像Flash应用逻辑的MVC?

2 个答案:

答案 0 :(得分:0)

我认为你混淆了'常规'对象和扩展DisplayObject的对象,可以添加到舞台上。

你是正确的,假设你必须声明并实例化每个对象。

如果它正在扩展DisplayObject,您可以使用以下方法将其添加到舞台:

stage.addChild(new ObjectName());

要在MVC环境中应用它:您应该只在代码的View部分中使用DisplayObject。

答案 1 :(得分:0)

你可以实例化对象而不将它们分配给变量...而不是在变量中存储对象的引用,你可以直接将它传递给函数,作为参数,或者你可以传递一些其他对象作为参数到构造函数,这将允许对象在其他地方自己注册...例如,这段代码将完美地工作:

(new URLLoader(new URLRequest("someURL"))).addEventListener(Event.COMPLETE, someEventHandler);

此代码实例化2个对象,其中没有一个存储在变量...

所以实例化与变量完全没有关系,也就是说,为什么“第一步”不是实例化过程的一部分......对象的实例化是new SomeClass(someParam_1,...someParam_n) ...

正如Epskampie指出的那样,“第三步”也不是实例化的一部分,因为它只适用于DisplayObject ...它不是“在舞台上实例化”,它是“放置”他们在展示名单上“...也是,大部分时间,你把他们放进舞台的(大)孩子,而不是舞台本身...你也可能只是决定不放DisplayObject在显示列表上(有几种情况,有意义)...

所以是的,我不会谈论“图层”......你所描述的是在显示列表上创建DisplayObject的可能方法,包括3个“步骤”(第一个是可选的) ,但不是“层”......并且没有类似于MVC ... flash DisplayObject是创建视图的基础...... ActionScript中的MVC与任何其他语言一样工作...你可以像在任何其他语言中一样创建模型,控制器和视图对象...实例化对于所有人都是一样的,但对于后者,它需要一个额外的步骤来显示它们......

希望有所帮助...

格尔茨

back2dos