dav*_*avr 19 apache-flex mxml flashdevelop actionscript-3
是否可以在不使用MXML的情况下使用Flex Framework和组件?我非常了解ActionScript,并且不想乱用一些新的XML语言只是为了获得一些简单的UI.任何人都可以提供一个包含.as文件的例子,该文件可以编译(理想情况下通过FlashDevelop,虽然只是告诉如何使用Flex SDK也可以)并使用Flex Framework?例如,只显示弹出打开警报的Flex按钮将是完美的.
如果不可能,有人可以提供一个最小的MXML文件,它将引导一个自定义AS类,然后可以访问Flex SDK吗?
jgo*_*ley 13
我做了一个类似于Borek的简单引导程序(见下文).我很想摆脱mxml文件,但是如果我没有它,我就不会得到Flex附带的任何标准主题(haloclassic.swc等).有人知道如何做Theo建议并且仍然应用标准主题吗?
这是我简化的自举方法:
main.mxml
<?xml version="1.0" encoding="utf-8"?>
<custom:ApplicationClass xmlns:custom="components.*"/>
Run Code Online (Sandbox Code Playgroud)
ApplicationClass.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");
}
}
}
Run Code Online (Sandbox Code Playgroud)
以下是与Flex 4一起使用的必要更新:
main.mxml
<?xml version="1.0" encoding="utf-8"?>
<local:MyApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:local="components.*" />
Run Code Online (Sandbox Code Playgroud)
MyApplication.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!");
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个非常简单的应用程序,只执行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>
Run Code Online (Sandbox Code Playgroud)
这是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);
}
Run Code Online (Sandbox Code Playgroud)
注意:除非您首先初始化Flex库,否则以下答案实际上不起作用.这样做涉及很多代码.有关详细信息,请参阅下面的评论或其他答案.
主类甚至不必在MXML中,只需创建一个继承的类mx.core.Application
(这是一个带有<mx:Application>
根节点的MXML类,无论如何都被编译):
package {
import mx.core.Application;
public class MyFancyApplication extends Application {
// do whatever you want here
}
}
Run Code Online (Sandbox Code Playgroud)
此外,使用mxmlc
编译器(甚至是Flash CS3创作工具)编译的任何ActionScript代码都可以使用Flex类,只需在类路径中使它们可用(在使用mxmlc
或指向文件夹时参考框架SWC)在使用时包含来源).但是,除非文档类从mx.core.Application
您继承,否则可能会遇到一些麻烦,因为框架中的某些内容会假设情况就是这样.