刚开始学习Flex。但我对基本代码感到震惊。我试图检查如何通过Action Script将组件(比如按钮)添加到Application容器中。但我无法在输出中看到按钮。以下是我的代码,
<?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"
creationComplete="init()">
<fx:Script>
<![CDATA[
import mx.controls.Alert;
import spark.components.Button;
import spark.layouts.BasicLayout;
private function init():void{
var bl:BasicLayout = new BasicLayout();
var app:Application = new Application();
var button1:Button = new Button();
var button2:Button = new Button();
button1.label ="Button one";
button1.x = 100;
button2.label = "Two";
button2.x = 30;
layout = bl;
addChild(button1);
addChild(button2);
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
我在这里做的错误是什么?
由于
答案 0 :(得分:4)
此代码甚至应该抛出运行时错误,因为此处不允许您使用addChild
从Flex 4开始,有一个新的组件集(称为Spark
)。向Spark容器添加可视项时,必须使用addElement
方法。由于s:Application
是一个Spark容器,你也应该在这里做。因此,只需在代码中将addChild
替换为addElement
即可。
你可能会问:如果我不能使用它,为什么“addChild”还在那里?
嗯,答案是:遗产。所有Flex组件(即mx和Spark)都继承自UIComponent,它实现了Flex框架的addChild
方法(addChild
实际上是DisplayObjectContainer的纯ActionScript方法类)。 addElement
会做一些额外的事情(我在这里不会太技术化),这就是为什么你不能再使用addChild
了。但是addChild
仍然存在(继承自UIComponent
)并且会抛出一个错误,告诉您不能使用此方法。
这是SkinnableComponent的相关代码:
override public function addChild(child:DisplayObject):DisplayObject
{
throw(new Error(resourceManager.getString("components", "addChildError")));
}
答案 1 :(得分:0)
我不熟悉Basic LayOut,但我认为如果你保持代码简单就可以看到按钮:
private function init():void{
// var bl:BasicLayout = new BasicLayout();
// var app:Application = new Application();
// 1. Create button
var button1:Button = new Button();
var button2:Button = new Button();
// 2. customize button
button1.label ="Button one";
button1.x = 100;
button2.label = "Two";
button2.x = 30;
// 3. add button into the container, 'this' is Applciation
// layout = bl;
addElement(button1); // addChild for Flex3
addElement(button2);
}
修改你的代码然后再试一次,祝你好运!