2009年6月 的存档

AS3动态获得类名及类的方法

电介质 发布于 2009年06月12日 星期五

获得某个实例对象的类名:

getQualifiedClassName (实例名字符串表达式);

 

获得某个实例对象的类:

实例名["constructor"];

实例名.constructor;

 

根据类名获得类:

getDefinitionByName(类名);

 

用得到的类实例化对象:

一般中间要用一个无类型变量传递类,进行实例化;

如:

var i=0;

var c:*=getDefinitionByName(getQualifiedClassName ("MyClass"+i));

var myClass:*=new c();

文章分类: AS3 ->发表评论 »

Adobe AIR应用之帝国cms计划任务助手

电介质 发布于 2009年06月08日 星期一

Please upgrade your Flash Player This is the content that would be shown if the user does not have Flash Player 9.0.115 or higher installed.

帝国CMS有个计划任务功能,可以设置一些需要定时自动执行的任务,因为不能在后台直接运行,所以每天都要在浏览器里,登录打开运行计划任务,感觉比较繁琐,顺手用Adobe AIR做了个,只要设置好用户名,密码,和cms登录地址如“http://youcms/e/admin”,设置好运行起止区间,点登录运行即可;
另外还可以选中,每次启动系统自动运行;这样每次开机它会自动检测是否在计划的时间段内,然后自动运行,到时间就自动退出,如果不关机,到第二天还会按计划自动运行。
如果断网了,它也会在网络恢复后自动按计划运行。
东西很简单,没有做什么界面设计,只是实现了功能。有使用帝国cms计划任务的,可以试试,当然 基于Adobe air的应用都是跨平台的了(mac,windows,linux)。截图

文章分类: AIR ->2 条评论 »

Adobe AIR监测网络链接状态

电介质 发布于 2009年06月05日 星期五

Adobe AIR应用程序要实现根据网络是否连接,来处理相应的操作,查了下官方文档和手册,发现相关的内容如下:

检测网络连接更改

监听事件方法

NativeApplication.nativeApplication.addEventListener(Event.NETWORK_CHANGE, onNetworkChange);

此事件只是确定网络连接的状态发生改变,而不能告诉你网络是否可用。要进一步确定网络的可用性还需要下面的类。

检测 HTTP 连接

实现方法

var monitor:URLMonitor;

monitor = new URLMonitor(new URLRequest(‘http://www.adobe.com’));

monitor.addEventListener(StatusEvent.STATUS, announceStatus);

monitor.start();

function announceStatus(e:StatusEvent):void {

    trace("Status change. Current status: " + monitor.available);

}

用于确定http链接是否可用,实际中还可以把URLRequest的请求方法设为HEAD,以避免下载整个页面。

通过实验发现,实际情况和文档里说的不一样,文档里说URLMonitor的pollInterval属性为0时(默认为0),则不定期轮询服务器,而仅在调用 start() 后和网络状态发生更改时立即轮询。但实际测试结果,当网络状态发生改变时,并不能触发状态改变事件,什么原因还不清楚。

最后的解决办法是,在上面的检测网络连接更改事件中创建URLMonitor实例并监听状态改变事件,然后调用start()方法,在状态改变事件里判断链接是否可用,进一步处理相关操作。实现代码如下:

private var monitor:URLMonitor;

NativeApplication.nativeApplication.addEventListener(Event.NETWORK_CHANGE, onNetworkChange);

public function onNetworkChange(event:Event):void{

trace("网络连接发生改变");

//监视网络状态

var url:URLRequest=new URLRequest(“要监测的网络地址”);

url.method = "HEAD";

monitor = new URLMonitor(url);

monitor.addEventListener(StatusEvent.STATUS, onMonitor);

monitor.start();

}

private function onMonitor(event:Event):void
            {
                monitor.removeEventListener(StatusEvent.STATUS, onMonitor);
                trace("连接"+monitor.available);
                if(monitor.available){//网络连接可用

              //处理联网操作
                }
                else
                {
                     //网络连接不可用,相关处理
                }
            }

检测套接字连接

实现方法

socketMonitor = new SocketMonitor(‘www.adobe.com’,6667);

socketMonitor.addEventListener(StatusEvent.STATUS,socketStatusChange);

socketMonitor.start();

function announceStatus(e:StatusEvent):void {

   trace("Status change. Current status: " + socketMonitor.available);

}

没有实验。

文章分类: AIR ->发表评论 »