- + P A

- AS3.0中的类反射

      as3.0专区 2008-7-26 20:6

获取类名: 传进一个object,返回类的全名
var loader:URLLoader = new URLLoader( );
var className:String = getQualifiedClassName(loader);
trace(className); // Displays flash.net.URLLoader

获取父类的类名:传进一个object,返回父类的类名
var loader:URLLoader = new URLLoader( );
var className:String = getQualifiedSuperclassName(loader);
trace(className); // Displays flash.events.EventDispatcher

根据类名取类
var classReference:Class = Class(getDefinitionByName(”flash.net.URLLoader”));
//一但你得到了类的引用后,就可以这样
var instance:Object = new classReference( );

getQualifiedClassName( ) 或 getQualifiedSuperclassName( ) 与 getDefinitionByName() 结合使用的例子:
var loader:URLLoader = new URLLoader( );
var className:String = getQualifiedClassName(loader);
var classReferenc

标签集:TAGS:
我要留言To Comment 阅读全文Read All | 回复Comments() 点击Count()

- as3数据存取方式效率比较

      as3.0专区 2008-7-26 14:16

  通常我们存取数据有如下几种方式:Array, Object, 自定义类, 比较特殊的还有 Point, Rectangle 等。效率依次为(后面的数字是100万次存取运算平均所需时间):

  • 自定义类public属性135 | Point140 | Rectangle(x等属性)140
  • Array270
  • Object500 | 自定义动态类动态属性550
  • Rectangle(left等属性)700
  • 自定义类getter/setter1000 | 自定义类Function1000

  出乎意料,最快的是自定类的public属性,速度是Array的两倍Object的四倍getter/setter的八倍——很整的倍数关系。另外存取坐标要用Point和Rectangle,比Array快的多。Object还是少用吧,多用自定义类。
  另外自定义密封类(sealed,默认)和自定义动态类(dynamic)的public属性、getter/setter速度几乎一样,而动态类动态添加的属性和Object相若。

标签集:TAGS:
我要留言To Comment 阅读全文Read All | 回复Comments() 点击Count()

- 有关AS3跨域读取图片文件报错“checkPolicyFile”的解决方法

      as3.0专区 2008-7-5 17:37

昨天晚上有人问我他在里用到Loader调用外部图片文件,总是报“...沙箱...checkPolicyFile”错误信息,但是他说在服务器上已经设置了crossdomain.xml文件了,我给他看了看具体的解决方法如下:

Flash Player 9在安全策略问题比以前更麻烦了! import flash.display.Loader; import flash.net.URLRequest; import flash.system.LoaderContext; var lc:LoaderContext = new LoaderContext(true); var loader:Loader = new Loader(); loader.load(new URLRequest("http://xxxxxxxx/xxxx.jpg"),lc); //需要在原来的调用基础增加LoaderContext类;

标签集:TAGS:
我要留言To Comment 阅读全文Read All | 回复Comments() 点击Count()

- 使用RSL进行AS瘦身编程

      as3.0专区 2008-7-4 8:27

前几天一个很偶然的机会跟我们天津的一个也是做as开发的技术聊了一下午.在聊天的过程中我们就谈到了一个问题,就是如何给flex生成的swf进行减肥.因为我在公司做开发用的时候都是写cs版的软件用flex来完善界面所以不用太多考虑这样的问题.当时我想了一下认为只要少套用一些容器这样就一定可以减肥了.回来又看了看感觉这样做只是其中的一部分而已还可以通过优化来进行.好了不说废话了,呵呵.

RSL是什么??RSL是 Runtime Shared Library的简称。我个人的理解时是在swf编译的时候,不把在该swf中使用的一些类库 编译进swf中去,而是在该swf运行的时候动态加载,该swf是要使用的类库,从而达到减小swf体积的目的。
做as编程的人都知道,如果每个swf都引用了同一个类的话,那么你编译每个swf的时候,都会把那个类编译进去,也是就是说,无形中对整个应用而言,就多了几份类库而增大了内容
例 如你有 a.swf,b.swf,c.swf,同时引用了sodaTest.as这个类,传统的做法是每个swf都把sodaTest编译进去。而使用 RSL技术的话,则把sodaTest.as这个类编译进一个特殊的swf进去(lib.swf,该swf包含sodaTest),在a,b,c运行的时 候,把lib.swf这个swf加载进去就可以了。三个swf共享一个,从而减小了体积
下面,看具体的设置步骤吧(下面提供的方法只是多种方法的其中之一:),使用工具是FlexBuilder,以asiwng代码库为例子

首先我们需要制作一个被多个swf需要加载swf代码库
1.把需要的代码打包进一个swf里去,该步骤前需要一个你需要打包进代码库的swc
(可以在FB中建立

标签集:TAGS:
我要留言To Comment 阅读全文Read All | 回复Comments() 点击Count()

- 一个Loader加载多个swf

      as3.0专区 2008-7-4 8:9

着几天在群里有人问关于能不能通过一个loader来装载多个swf当时我想可能能实现吧,经过晚上的研究的出一下结果,那就是一定没有问题,呵呵不说废话了.
通过调试器观察.........发现Loader.content属性为空时.才能够正确地加载一个swf.否则会抛出"提供的 DisplayObject 必须是调用者的子级错误"
偏偏Loader.content是只读属性,不能认为改变.....
没办法,只好利用它的报错功能,来实现一个一个Loader加载多个swf,不过始终觉得有点不完美....两次加载,还扑捉异常
不知道这捕捉异常的消耗能不能抵上重新创建一个Loader,呵呵,有兴趣的人可以研究研究

                      if(loader.content !=
标签集:TAGS:
我要留言To Comment 阅读全文Read All | 回复Comments() 点击Count()