【发布时间】:2011-03-04 16:50:01
【问题描述】:
我正在开发一个简单的任务/日历工具,可以将任务动态添加到画布中。这是 Main.mxml 中定义的主应用程序,它本质上只是一个 Canvas 和一个用于添加任务的按钮:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Canvas id="MainCanvas" borderStyle="solid" width="300" height="300">
<mx:Button click="CreateTask();" label="create task" />
</mx:Canvas>
<mx:Script>
<![CDATA[
import Task;
private function CreateTask( ) : void
{
// create the task object
var thisTask:Task = new Task();
// add the task to the canvas
var taskUI : DisplayObject = MainCanvas.addChild( thisTask );
// position the task ui
taskUI.y = 50;
}
]]>
</mx:Script>
</mx:Application>
我希望我的任务是带有标签和按钮的 BorderContainers,在外部 mxml 中定义,可以简单地实例化并添加到 Main.mxml 中的画布中。这是Tasks.mxml:
<?xml version="1.0" encoding="utf-8"?>
<s:BorderContainer xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:s="library://ns.adobe.com/flex/spark" cornerRadius="10">
<s:layout>
<s:HorizontalLayout/>
</s:layout>
<s:Label id="NameLabel" text="task name" />
<s:Button label="Button 1"/>
</s:BorderContainer>
问题是当我向 Canvas 添加一个 Task 实例时,子项(按钮和标签)不会出现。我尝试在 Canvas 和 BorderContainer 上设置 creationPolicy="all",但它仍然不起作用。我已经阅读了一堆关于人们在类完全加载之前访问他们的类成员时遇到问题的帖子,但我想做的只是看到标签和按钮出现在 BorderContainer 中。
谢谢。
【问题讨论】:
-
您使用 mx 应用程序和画布而不是 Spark 应用程序和组是否有某些原因?我认为您的部分问题可能是在 Spark 中您使用 addElement 而不是 addChild。不过不太确定,因为我尽量避免混合和匹配 mx 和 Spark。
标签: apache-flex class mxml children instantiation