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

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

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

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

 

获得某个实例对象的类:

实例名["constructor"];

实例名.constructor;

 

根据类名获得类:

getDefinitionByName(类名);

 

用得到的类实例化对象:

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

如:

var i=0;

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

var myClass:*=new c();


此文 AS3动态获得类名及类的方法 首发在:魔力谷-flash风 作者:电介质

版权所有,欢迎转摘,转摘请注明作者和出处!

文章分类: 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)。截图


此文 Adobe AIR应用之帝国cms计划任务助手 首发在:魔力谷-flash风 作者:电介质

版权所有,欢迎转摘,转摘请注明作者和出处!

文章分类: 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);

}

没有实验。


此文 Adobe AIR监测网络链接状态 首发在:魔力谷-flash风 作者:电介质

版权所有,欢迎转摘,转摘请注明作者和出处!

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

flash的坐标系

电介质 发布于 2009年05月14日 星期四

对于习惯于中学数学坐标系的AS3编程者来说,flash的坐标系总是个令人头疼的问题,player10带来的第三轴z,更把事情搅和的让人头晕,前两天把它整理了一下,绘了图示如下,箭头方向都为正向,包括旋转方向。

flash-coordinate

仔细思考可以发现旋转方向,适用于右手法则,既大拇指代表要旋转的坐标轴方向,四个手指代表旋转的正向,这个图也适合与每个显示对象和现实容器自生的坐标系统。

对于角度还有一个要人头疼的问题,就是零度是从哪里开始的,同样绘了一张图如下。flash-coordinate-a

可以看到在不同的平面中,零度的起始坐标轴是不同的,xy轴平面,是x轴,yz平面是y轴,zx平面是z轴,可谓风水轮流转明年到我家,每个轴都是平等的,都有做起点的机会。


此文 flash的坐标系 首发在:魔力谷-flash风 作者:电介质

版权所有,欢迎转摘,转摘请注明作者和出处!

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

flash10中3D特性之PerspectiveProjection属性设置

电介质 发布于 2009年04月08日 星期三

PerspectiveProjection类提供了一种在 3D 空间中移动显示对象时应用基本透视的简单方式,它有下列三个主要属性:

fieldOfView 视野属性

projectionCenter 投影中心属性

focalLength 焦距属性

默认的 PerspectiveProjection 对象是基于视野和舞台的高宽比(尺寸)为 root 对象的透视转换定义的框架。要改变透视投影设置,可以通过对root 对象的DisplayObject.transform 属性来更改。但在编程时要改变这些属性,在文档类的构造函数中直接设置是不起作用的,因为这时swf文件还没有完全载入,也就是root显示对象还未完全载入完成,所以要通过this.loaderInfo.addEventListener (Event.COMPLETE, init)方式监听载入完成事件,在swf载入完成后按如下方式来设置:

this.transform.perspectiveProjection.projectionCenter = new Point(0,0);

注:类似的与根显示对象相关的部分其他基本属性的获取和修改都有这个问题需要注意。

要为其他显示对象设置这些透视属性,不能直接用类似上面的DisplayObject.transform.perspectiveProjection.projectionCenter = new Point(0,0)这种直接赋值方式,因为DisplayObject.transform.perspectiveProjection为空,包括root显示对象在内的其他显示对象的透视属性设置可以通过如下方式设置:

var p=new PerspectiveProjection();
      p.projectionCenter = new Point(0,0);
      p.fieldOfView=55;
      DisplayObject.transform.perspectiveProjection=p;

这样你可以为不同的显示对象设置不同的透视投影设置。


此文 flash10中3D特性之PerspectiveProjection属性设置 首发在:魔力谷-flash风 作者:电介质

版权所有,欢迎转摘,转摘请注明作者和出处!

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