是否可以在不使用 MXML 的情况下使用 Flex 框架和组件?我非常了解 ActionScript,并且不想为了获得一些简单的 UI 而使用一些新的 XML 语言。谁能提供一个包含可以编译的 .as 文件的示例(最好通过 FlashDevelop,尽管只是告诉如何使用 Flex SDK 也可以)并使用 Flex 框架?例如,只显示一个弹出警报的 Flex 按钮将是完美的。
如果不可能,有人可以提供一个最小的 MXML 文件,该文件将引导一个自定义 AS 类,然后可以访问 Flex SDK?
是否可以在不使用 MXML 的情况下使用 Flex 框架和组件?我非常了解 ActionScript,并且不想为了获得一些简单的 UI 而使用一些新的 XML 语言。谁能提供一个包含可以编译的 .as 文件的示例(最好通过 FlashDevelop,尽管只是告诉如何使用 Flex SDK 也可以)并使用 Flex 框架?例如,只显示一个弹出警报的 Flex 按钮将是完美的。
如果不可能,有人可以提供一个最小的 MXML 文件,该文件将引导一个自定义 AS 类,然后可以访问 Flex SDK?
我做了一个类似于 Borek 的简单引导程序(见下文)。我很想摆脱 mxml 文件,但如果我没有它,我将无法获得 Flex 附带的任何标准主题(haloclassic.swc 等)。有人知道如何按照 Theo 的建议去做并且仍然应用标准主题吗?
这是我简化的引导方法:
主.mxml
<?xml version="1.0" encoding="utf-8"?>
<custom:ApplicationClass xmlns:custom="components.*"/>
应用程序类.as
package components {
import mx.core.Application;
import mx.events.FlexEvent;
import flash.events.MouseEvent;
import mx.controls.Alert;
import mx.controls.Button;
public class ApplicationClass extends Application {
public function ApplicationClass () {
addEventListener (FlexEvent.CREATION_COMPLETE, handleComplete);
}
private function handleComplete( event : FlexEvent ) : void {
var button : Button = new Button();
button.label = "My favorite button";
button.styleName="halo"
button.addEventListener(MouseEvent.CLICK, handleClick);
addChild( button );
}
private function handleClick(e:MouseEvent):void {
Alert.show("You clicked on the button!", "Clickity");
}
}
}
以下是在 Flex 4 中使用它的必要更新:
主.mxml
<?xml version="1.0" encoding="utf-8"?>
<local:MyApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:local="components.*" />
我的应用程序.as
package components {
import flash.events.MouseEvent;
import mx.controls.Alert;
import mx.events.FlexEvent;
import spark.components.Application;
import spark.components.Button;
public class MyApplication extends Application {
public function MyApplication() {
addEventListener(FlexEvent.CREATION_COMPLETE, creationHandler);
}
private function creationHandler(e:FlexEvent):void {
var button : Button = new Button();
button.label = "My favorite button";
button.styleName="halo"
button.addEventListener(MouseEvent.CLICK, handleClick);
addElement( button );
}
private function handleClick(e:MouseEvent):void {
Alert.show("You clicked it!", "Clickity!");
}
}
}
这是一个非常简单的应用程序,它只执行 MXML 中的基本引导。这是 MXML:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="onCreationComplete()">
<mx:Script source="Script.as" />
</mx:Application>
这是 Script.as:
import mx.controls.Button;
import flash.events.MouseEvent;
import mx.controls.Alert;
import mx.core.Application;
private function onCreationComplete() : void {
var button : Button = new Button();
button.label = "Click me";
button.addEventListener(MouseEvent.CLICK, function(e : MouseEvent) : void {
Alert.show("Clicked");
});
Application.application.addChild(button);
}
注意:除非您先初始化 Flex 库,否则下面的答案实际上不会起作用。有很多代码可以做到这一点。有关更多详细信息,请参阅下面的评论或其他答案。
主类甚至不必在 MXML 中,只需创建一个继承自的类(无论如何编译具有根节点mx.core.Application
的 MXML 类):<mx:Application>
package {
import mx.core.Application;
public class MyFancyApplication extends Application {
// do whatever you want here
}
}
此外,任何使用编译器编译的 ActionScript 代码mxmlc
- 甚至是 Flash CS3 创作工具 - 都可以使用 Flex 类,只需使它们在类路径中可用(在使用mxmlc
或指向文件夹时参考框架 SWC使用其中之一时包含源)。但是,除非文档类从mx.core.Application
您那里继承,否则可能会遇到一些麻烦,因为框架中的某些东西假设是这种情况。
是的,你只需要在你的类路径中包含 flex swc。您可以在 frameoworks/lib/flex.swc 的 flex sdk 中找到 flex.swc
编辑:还有一件事:如果您使用的是 Flex Builder,您可以简单地创建一个新的 ActionScript 项目,该项目基本上与上述相同。