易截截图软件、单文件、免安装、纯绿色、仅160KB

flex开发中关于内存释放几个注意的地方

1.监听事件时用弱引用方式(特别是对Applicatiion.applicaion和Stage的事件监听),方式如下:第五个参数值为true
Application.application.addEventListener(MouseEvent.CLICK,doClick,false,0,true);
2.集合类如Array和Dictionary里的元素,在不用的时候要设置为null;(尤其是主页面上的集合类),如:myMap[o]=null;
3.方法中创建的变量引用必须用var修饰,否则将被认为是全局变量,永远不会释放内存。
4.所有的css类都定义到css.css文件里,不要在模块里定义css,不然会导致gc不干净
5.moduelLoader的内存泄露问题:
经过初步测试,在debug版的flashplayer里,ModuleLoader的unload方法有严重的内存泄露问题(用moduleLoader不断地加载不同的url);但是在release版中表现正常;
如果需要在debug版的方法里规避此问题可用以下方法加载url,不要用unloader方法:
/**
*为了解决moduleLoader的内存泄露问题
* @param oldMLoader 需要改变url的moduleLoader
* @param url 指定的url
*
*/
static public function fixLoadForModuleLoader(oldMLoader:ModuleLoader,url:String):void{
var tparent:Container=oldMLoader.parent;
var index=oldMLoader.parent.getChildIndex(oldMLoader);
var newMLoader:ModuleLoader=new ModuleLoader();
newMLoader.url=url;
tparent.removeChildAt(index);
tparent.addChildAt(newMLoader,index);
newMLoader.name=oldMLoader.name;
newMLoader.percentWidth=oldMLoader.percentWidth;
newMLoader.percentHeight=oldMLoader.percentHeight;
oldMLoader=newMLoader;
if(oldMLoader.parent is ViewStack){
(oldMLoader.parent as ViewStack).selectedIndex=index;
}else if(oldMLoader.parent is TabNavigator){
(oldMLoader.parent as TabNavigator).selectedIndex=index;
}
}
复制代码


相关文档:

flex 客户端缓存 module swf(转)

flex或者flash客户端的缓存,并不是指浏览器的缓存,浏览器的缓存在一定时间后会过期,先作此声明。
使用flex或者flash开发出来的网站最大的问题就是swf文件过大,国内网速有限,导致加载时间过长,这样会丢失很多潜在的客户。
flex使用RSL技术,可以解决框架的缓存与共享,很大程度的解决了加载问题。但是如果项目过大, ......

关于跳过flex的sandbox实现访问本地资源的解决方案

需求: 
开发flex的过程中遇到一个问题。flex的项目需要在客服端显示一个局域网类的一台服务器的文件目录结构,并且要能够点击访问。
预想:
flex在以前的版本里面没有file类,这个可以用java代码在后台进行处理,生成xml文件。前台的flex到相应目录下面读取数据即可。
困难:
flash被下载到客服端,有严格的安全 ......

关于flex lib project的使用情况心得

最近遇到了和别人分享某些模块代码的情况,因此想到了flex lib project,结果如下:
    首先,在看很多文章中关于swc的介绍时,都基本说成是用于flex的 component或者assets的打包文件。类似于java 的jar包。当时就很奇 怪,难道他只能在flex project中使用?于是做了如下测试:
     ......

Flex国际化(I18N )

最简单的方法是本地化编译,即编译不同的语言版本
,然后使用
Application Server
来判定客户使用的是哪种语言,并自动指向对应的
swf
文件。
具体做法如下:
在项目上点击右键,选择
Properties

然后选择
Flex Compiler
,在
Additional Compiler arguments
下面已经配置好语言包了,默认为
-locale en_ ......

Flex 中解决 stage为null的方法


flex中在DisplayObject里直接用stage,可能会是null,原因不是太清楚,找到了解决办法,当接收到ADDED_TO_STAGE事件时,stage肯定被创建出来了,这个时候再使用就没有问题。
addEventListener( Event.ADDED_TO_STAGE, function( e:Event ):void ??
{
    stage.addEventListener(KeyboardEvent.KEY_DO ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号