flex知识点
日期:2014-11-06 18:15:45
最后更新日期:2014-11-06 18:27:15
整理下近期零碎学习到的flex/action script技术。
1.编译。flex的编译工具mxmlc,编译package这些与java类似,假设你src下,编译一个server的packeage,只需要在src下建立一个server文件夹,该package下的类文件放里面。类文件开始注明: [code lang="cpp"]
package server
{
//your code
}
[/code]
编译1个mxml文件和多个as文件(mxml文件引用as代码),只需要编译mxml文件即可。
2.mxml与as代码分离
对于我而言,这样看起来整洁。
[code lang="cpp"]
//方法1:
<mx:Script>
<![CDATA[
include "server/main.as";
]]>
</mx:Script>
//方法2:
<mx:Script source="server/main.as" />
[/code]
3.选择皮肤包
常见的三种皮肤包
[code lang="cpp"]
<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"
creationComplete="saveOriginalImageData(event)" >
</s:Application>
[/code]
4.air运行环境
为创建桌面窗体程序提供的运行环境
[code lang="cpp"]
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
creationComplete="saveOriginalImageData(event)" >
</s:WindowedApplication>
[/code]
即application类型改为WindowedApplication。编译需要添加额外的命令参数。对此就没有试验了。
5.as代码里面怎么引用mxml里面定义的控件
mxml里面定义的控件,编译后会转化为全局变量。对于flex 4的引用方法:
[code lang="cpp"]
import mx.core.FlexGlobals;
FlexGlobals.topLevelApplication.xxx
//xxx可以为控件id名或全局函数名
[/code]
对于操作控件,倾向于main.as写对于控件的操作函数,在其他地方调用函数来操作控件。而不是通过FlexGlobals.topLevelApplication.控件id引用。
6.访问网络服务
这里以http服务为例,若对于不同于swf地址的外部地址,则需要在该地址上根目录放一个crossdomain.xml文件,准许其访问。若不是根目录,则先加载crossdomain.xml文件。
[code lang="cpp"]
var urlRequest:URLRequest = new URLRequest(PATH);
urlLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.TEXT; // default
urlLoader.addEventListener(Event.COMPLETE, urlLoader_complete_showgcid);
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, urlLoader_error_showgcid);
urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, urlLoader_error_showgcid);
urlLoader.load(urlRequest);
[/code]
7.flash 线程 ?
反正笔者捣鼓两天,写了两个例子,都没试验成功。flash 版本不是官网要求的11.4,而是15.0。应该可以前向支持的。后面咨询了flex同事是flash对线程支持是有限的。有个开源的利用分时的AsyncThreading_2.1,利用它可以后台做一些任务,同时兼顾刷界面,而不会卡死。