Flex 常用代码收集

来源:互联网 发布:c语言中单引号 编辑:程序博客网 时间:2024/05/16 07:00
Flex 常用代码收集 
打开网址: navigateToURL(new URLRequest('http://www.duzengqiang.com'),'_blank')
页面重载: navigateToURL(new URLRequest("javascript:location.reload();"),"_self")
关闭浏览器:navigateToURL(new URLRequest("javascript:window.close()"),"_self");
编译as -keep-generated-actionscript
最上层 parent.setChildIndex(this,parent.numChildren-1);
随机颜色 :lbl.setStyle('color', 0xffffff*Math.random());
mxmlc -link-report=report.xml Main.mxml
mxmlc -load-externs=report.xml ChartModule.mxml
DataGrid自适应高度:
dg.height=dg.measureHeightOfItems(0,dg.dataprovider.length)+dg.headerHeight+2;
+2 for 1 pixel border at top and bottom                             
                 
判断数据类型:getQualifiedClassName(数据)

复制ArrayCollection:(From: http://blog.shiue.net/?p=490)
//dummy solution( well, it works )
var bar:ArrayCollection = new ArrayCollection();
for each ( var i:Object in ac ){
bar.addItem( i );
}
// fantastic ! //
var bar:ListCollectionView = new ListCollectionView( ListCollectionView( ac ).list );
Alert背景透明:
Alert{
  modalTransparency:0.0;
  modalTransparencyBlur:0;
}
[size=2]------------------------------------------------------------------------------
以下转自:http://www.zhuoqun.net/article.asp?id=216
如 何限制TextInput中的输入。其实文本输入控件TextInput和TextArea都有一个restrict属性,它可以控制TextInput 的输入。这个东西挺有用,可以防止输入恶意字符串。不过Flex 帮助文档中对这个属性介绍的不够全面,经过我实验N次,总结出了几条新的经验:
1. 如果你想要控制用户只能输入字母和数字,就这样写:restrict="a-zA-Z0-9"。帮助中只给出了一个例子说"a-z"就是只允许输入小写字 母,但是没有说如何多重限制,自己实验了一下,终于成功。你按照我上面写的那样做就可以多重限制了,中间不用加空格,我实验过了。
2.帮助文档中 写了“^”符号可以限定不允许输入的字符串,比如"^0"就是不允许输入0。同样,帮助中也没有说明如何限定多个字符。实验结果如下:想要控制多个字符的 时候需要加括号,这样歇restrict="^(';:)",就可以限定多个字符了。另外,你想控制的字符有<>这样在MXML中有特殊意义 的字符的话,请转换成 <的形式。至于每个符号的编码是怎么样的,请打开DreamWeaver,在代码编辑器中输入&,然后查看代码提示,方便又快捷!

三. DataGrid的labelFunction。我需要在DataGrid中现实时间,但是后台传回的是格林威治时间,很长,我得需要格式化,这就要用到 labelFunction属性。这个属性的值是一个函数,这些都在帮助文档中有说明,我就不多说了,我想说的是如何用这个东西。先说一下这个函数需要的 两个参数:item:类型Object,column:类型DataGridColumn。其中item保存的是显示在DataGrid中的每一个对象的 引用,而column表示的就是当前列,这个column好像没什么用。我一直以为必须要用到column才可以,结果总是显示错误。最后终于成功。代码 如下:
           
程序代码
private function formatLabel(item:Object,column:DataGridColumn):String
      {
        return df.format(item.dates);// df是一个DateFormatter,item中
                                      //的dates放的是格林威治时间
      }


-------------------------------------------------------------------------


转自:http://www.duzengqiang.com/blog/article.asp?id=215

 (1)  InteractivePNG类

使PNG图像中的透明像素不再响应鼠标交互。

          用法,在Flash库中,把包含png图片的MovieClip“链接属性”基类设为InteractivePNG类

    下载:InteractivePNG_1_0.zip

 (2)Stats 类

 方便查看swf当前的状态:fps,内存占用。很方便。

AS3代码
  1. addChild( new Stats() );   
  2. addChild( new Stats( { bg: 0x202020, fps: 0xC0C0C0, ms: 0x505050, mem: 0x707070, memmax: 0xA0A0A0 } ) );  

 

(3) FontLoader类

如果想对SWF中的动态文本应用非系统的字体,方法当然是在本身的SWF中嵌入相应的字体,另外一种方法是把字体嵌入到另外的SWF中,当需要对应的字体时,把这个SWF载入,并引用相应的字体。FontLoader是一个字体载入类,它帮助你实现这个过程。

用法,假设把字体编译在fonts.swf中:

AS3代码
  1. var _loader:FontLoader = new FontLoader();   
  2. _loader.load( new URLRequest'fonts.swf') );  

载入完成后,可以引用字体:

AS3代码
  1. var fonts = _loader.fonts;var tf:TextFormat = new TextFormat(fonts[0].fontName, 20);  

下载:http://code.google.com/p/collisiondetectionkit/

 

(4) Collision Detection Kit

AS3写的一个碰撞检测工具包。可基于像素和shape检测。

下载:http://code.google.com/p/collisiondetectionkit/

 

(5)swfupload类库

swfupload是js+flash的类库,借此实现flash上传获取进度,也实现了页面无需重载的类似ajax的效果。

用法,引入js文件:

AS3代码
  1. <script src="http://www.swfupload.org/swfupload.js" type="text/javascript"></script>  

创建SWFUpload对象,指定swf,由swf通过FileReference类调出上传对话框,接下来就交给js了。

AS3代码
  1. var swfu = new SWFUpload({ upload_url : "http://www.swfupload.org/upload.php", flash_url : "http://www.swfupload.org/swfupload.swf", file_size_limit : "200 MB", upload_start_handler : uploadStartEventHandler, upload_success_handler : uploadSuccessEventHandler });  

下载:http://code.google.com/p/swfupload/downloads/list

 

(6) Bitmap Mosaic 类

创建显示对象的“像素化”位图。

AS3代码
  1. var myMoz:Mosaic = new Mosaic(yourDisplayObj);   
  2.   
  3. myMoz.pixelSize = 10;   
  4.   
  5. myMoz.render();  

下载:mosaic.zip

 

 (7) Object Pool 类

flash player中有两个开销比较大的操作:对象的创建(object creation)和垃圾回收(garbage collection)。如果我们把不需的对象存放到一个对象池,当需要同类型的对象时直接从对象池里面获取。这样可以减少“对象的创建”,垃圾回收机制对象池里也不会工作,从而减少开销。

用法:

从ObjectPool中获取一个SomeClass的实例:

AS3代码
  1. var obj:SomeClass = ObjectPool.getObject( SomeClass );  

当你不需要一个对象,把它存进对象池中:

AS3代码
  1. ObjectPool.disposeObject( obj );  

下载:objectpool.zip

 

 

(8)SWFWheel 类

解决鼠标中键与浏览器冲突的问题, 把js方法声明在as代码中, 通过ExternalInterface来调用. 完全不需要另外的js文件。

AS3代码
  1. SWFWheel.initialize(this.stage);  

下载: SWFWheel.as

 

(9) GreenThread 类

把一些需要消耗大的计算, (模拟线程的方式), 动态分配到多帧里去计算, 避免出现"卡帧"的现象. 如一些寻路算法, 图形编码算法, 大量数据解析等. 很有用.
需要自定义扩展GreenThread的子类, 把主要的循环计算放在run函数里头.

AS3代码
  1. var astar:AStarGreenThread = new AStarGreenThread();   
  2. astar.addEventListener(Event.COMPLETE, onFindPath);   
  3. astar.star();  

下载:greenthreads-1.0.zip