【发布时间】:2011-01-31 17:32:53
【问题描述】:
我有以下火花应用程序:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955"
minHeight="600" xmlns:local="*">
<local:TestComponent objects="{[new TestObject()]}">
</local:TestComponent>
</s:Application>
测试组件:
package
{
import mx.core.UIComponent;
public class TestComponent extends UIComponent
{
public function TestComponent()
{}
public function set objects(array:Array):void
{}
}
}
测试对象:
package
{
public class TestObject
{
public function TestObject()
{}
public function set objs(value:Array): void
{}
}
}
我观察到TestObject的构造函数被调用了2次,创建了两个TestObject实例。
创建顺序如下:
- TestObject 构造函数
- TestComponent 构造函数
- TestObject 构造函数
- TestComponent.objects 被调用(参数值只包含一个对象)。
如果我在mxml中使用“元素”方式实例化TestObject:
<local:TestComponent>
<local:objects>
<local:TestObject>
</local:TestObject>
</local:objects>
</local:TestComponent>
只创建了一个 TestObject 实例。
任何人都可以解释为什么使用属性语法而不是元素语法(我认为是相同的)时创建了两个对象?
【问题讨论】:
标签: apache-flex actionscript-3