Flex——IDispose接口
前言
C/C++的开发,内存的管理是十分重要的课题,分配内存使用后要及时释放,否则内存泄漏导致内存耗尽。进入托管环境后,内存能够自动管理和回收,已经不用开发者太操心内存管理方面的问题了,在托管环境,开发者仍然可以做一些工作,提供内存回收的效率,例如,把类内部的引用对象设置为null是最基本的。借鉴在.net环境下的IDispose模式,现在,在Flex/AS3里实现。
IDispose接口
首先定义控制资源释放的接口。
package cwn.core
{
/*
* 释放资源接口
*/
public interface IDispose
{
function Dispose():void;
}
}
实现IDispose接口
public class ClassA implements cwn.core.IDispose
{
private var _RefObject:Object;//引用高级对象
public function ClassA()
{
}
private var _Disposed:Boolean = false;//释放控制标志
protected function Disposing():void
{
}
public function Dispose():void
{
if (_Disposed)
return;
Disposing();//释放派生类的资源
_RefObject = null; //释放ClassA资源
}
}
Disposing方法是派生类释放资源时按需要重写的,例如下面的ClassB
public class ClassB extends ClassA
{
private var _RefObject2:Object;
public function ClassB()
{
super();
}
override protected function Disposing():void
相关文档:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" >
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
private function onSuccess(evt:Re ......
需要3个文件。一个是样式类,一个样式文件,一个是mxml文件。
●MyToolTip.as
package{
import mx.core.UITextField;
import mx.skins.halo.ToolTipBorder;
import mx.controls.ToolTip;
public class MyToolTip extends ToolTipBorder {
override ......
//获得屏幕的分辨率
var x:Number=Capabilities.screenResolutionX;
var y:Number=Capabilities.screenResolutionY;
Alert.show("x="+x+"y="+y);
第二种方法
Alert.show(stage.fullScreenWidth+"=="+stage.fullScreenHeight);
//获得stage(工作区)的宽、高
Alert.show(stage.stageWidth+"=="+stage.stageHei ......
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="myInit()">
<mx:Script>
<![CDATA[
import flash.events.*;
import flash.net.URLRequest;
import flash.me ......
flex控件对象、RemoteObject等都有一个共同的方法addEventListener。
addEventListener方法如下:
public function addEventListener(type:String, listener:Function,
useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
{
eventDispatcher.addEventListener(type, listener, us ......