`
longgangbai
  • 浏览: 7331262 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Flex 常用技巧

阅读更多

有关flex的用法和优化,感觉还是很有用的。在这里把它门记下来,防止以后忘了。
一 、System.setClipboard("给系统剪切板赋值 "); 用于给系统的剪切板赋值。
二、var objectid =  ExternalInterface.objectID; //在 Internet Explorer 中返回 object 标签的 id 属性,或者在 Netscape 中返回 embed 标签的 name 属性。
三、如果要创建一个自定义组件,你需要重写 UIComponent 类的某些方法,最少需要重写如下方法(按先后顺序):构造函数 , createChildren(), commitProperties(), measure(), layoutChrome(), updateDisplayList() 。
四、改变输出swf的尺度,背景颜色或帧频
在”Navigator”窗框里右键你的项目>选中”Properties”>选中”ActionScript Compiler”>在”Additional compiler arguments”里输入你所需要的命令
如想改变背景颜色,请输入: -default-background-color 0xffffff
五、是数字但不是有效数字问题
var quantity:Number = 15 - “rabbits”;
trace(typeof quantity); //显示: “number” , 但它是NaN (not a number)
trace(quantity is Number); //true
trace(quantity != NaN); //false
//使用isNaN()函数检测:
isNaN(quantity); //true
//检测变量是否内含有效数字:
!isNaN(quantity); //false
六、Timer类注意事项
不要认为Timer可以极其准确;使用Timer时间间隔不要低于10毫秒.
七、for…in与for each…in的区别
与for…in循环不同的是,for each…in循环中的迭代变量包含属性所保存的值,而不包含属性的名称(或主键,索引)
八、隐藏Flash Player的右键菜单
stage.showDefaultContextMenu = false;
九、让其它域的.swf访问本域的.swf
在本域的.swf文件里加上:flash.system.Security.allowDomain()
或 者使用安全策略文件”crossdomain.xml”.在Flash 8以前,这个文件必须放在.swf所在域的根目录,现在,你可以使用flash.system.Security.loadPolicyFile(),指 定安全策略文件所在的位置.拒绝任何域的做法是在<cross-domain-policy>标签内什么也不填,安全策略文件也支持通用字符 “*”:
<?xml version=”1.0″?>
<!– http://www.mydomain.com/crossdomain.xml –>
<cross-domain-policy>
<allow-access-from domain=”www.riahome.cn” />
<allow-access-from domain=”*.Y-boy.cn” />
<allow-access-from domain=”210.38.196.48″ />
<allow-access-from domain=”*” />
</cross-domain-policy>
十、把数字取至最近的小数点位,即指定精确度
1. 决定你要取的数字的小数点位数:例如,如果你想把90.337取成90.34,就表示你要取到两位小数点位,也就是说你想取至最近的0.01;
2. 让输入值除以步骤1所选的数字(此例为0.01);
3. 使用Math.round()把步骤2所计得的值取成最近的整数;
4. 把步骤3所得的结果乘以步骤2用于除法的那个值.
例如,要把90.337取成两个小数点位数,可以使用:
trace(Math.round(90.337/0.01)*0.01); //输出:90.34

十一、把数字取成一个整数的最接近倍数值
例1,这样会把92.5取成5的最近倍数值:
trace(Math.round(92.5/5)*5); //输出:95
例2,这样会把92.5取成10的最近倍数值:
trace(Math.round(92.5/10)*10); //输出:90

十二、在指定数值范围内获得随机数
//可取范围:[min, max]
private function randRange(min:Number, max:Number):Number {
var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min;
return randomNum;
}
十三、把数组转成字符串
使用String.join()方法:
var myArr:Array = new Array(”one”, “two”, “three”);
var myStr:String = myArr.join(” and “);
trace(myArr); //输出: one,two,three
trace(myStr); //输出: one and two and three
十四、在数组中获取最小或最大值
var scores:Array = [10, 4, 15, 8];
scores.sort(Array.NUMERIC);
trace(”Minimum: ” + scores[0]);
trace(”Maximum: ” + scores[scores.length - 1]);

十五、使用for … in语句读取关联数组元素
var myObject:Object = new Object();
myObject.name = “YoungBoy”;
myObject.age = 20;
for(var i:String in myObject) {
trace(i + “: ” + myObject[i]);
}
//输出: name: YoungBoy
//       age: 20
注意: for … in循环不会显示对象所有的内建属性.例如,循环会显示执行期间新增的特殊属性,但是,不会列出内建对象的方法,即使都是储存在对象属性内。
十六、过滤文字输入
TextField.restrict = “此处为可输入的内容”;
field.restrict = “^此处为禁止输入的内容”;
restrict属性支持一些类似正则表达式的样式:
field.restrict = “a-zA-z”; //只允许大小字母
field.restrict = “a-zA-z “; //只允许字母和空格
field.restrict = “0-9″; //只允许数字
field.restrict = “^abcdefg”; //除了小写字母abcdefg不允许外,其它都允许
field.restrict = “^a-z”; //所有小写字母都不允许,但是,其它内容都允许,包括大写字母
field.restrict = “0-9^5″; //只允许数字,但5例外
让restrict字符包含具有特殊意义的字母(例如-和^):
field.restrict = “0-9\\-”; //允许数字和破折号
field.restrict = “0-9\\^”; //允许数字和^
field.restrict = “0-9\\\\”; //允许数字和反斜杠
你也可以使用Unicode转义序列,指定允许的内容.例如:
field.restrict = “^\u001A”;
注意:ActionScript有区分大小写的,如果restrict属性设为abc,允许字母的大写形式(A,B和C)输入时会变成小写对待形式(a,b和c),反之亦然.restrict属性只影响用户可以输入的内容,脚本可将任何文本放入文本字段中.
十七、SystemManager
SystemManager 是Flex应用的主控者, 它控制着应用窗口, Application实例, 弹出窗口, cursors, 并管理着ApplicationDomain中的类. SystemManager是FlashPlayer实例化的第一个类, 它存储了主应用窗口的大小和位置信息, 保存其子组件比如:浮动弹出窗口和模态窗口的痕迹. 通过SystemManager可以获得内嵌字体,样式和document对象.
自定义的可视化组件(UIComponent的子类)只有在调用过addChild()后, 才会有一个SystemManager赋给他们, 之前是Null. 所以在自定义可视化组件的构造函数中不要使用SystemManager。
十八、Flex Application 初始化顺序
通常, Application对象创建时, 发生如下事件:
1. 实例化Application对象
2. 初始化Application.systemManager
3. Application在初始化过程之前, 派发预初始化事件.
4. 调用createChild(). 此时, 所有应用组件被创建, 所有组件的createChild()被调用.
5. Application派发初始化事件, 表明所有的组件初始化完毕.
6. 派发creationComplete事件
7. Application对象添加到显示列表中
8. 派发applicationComplete事件
Flash 包含的是一个时间线上的多个帧, 而Flex的SWF只包含2个帧. SystemManager, Preloader, DownloadProgressBar和少量工具类都在第一帧, 剩下的包括应用代码/ 内嵌资源全都在第二帧中. 当Flash Player下载下载SWF时, 只要接收到第一帧内足够的数据, 就会实例化SystemManager, 由它来创建Preloader, 然后创建DownloadProgressBar, 这两个对象会察看剩余字节的传输过程. 当第一帧的所有字节传输完毕后, SystemManager发送enterFrame到第二帧, 然后是其他事件. 最后Application对象派发applicationComplete事件。
十九、FLEX 与 JSP 传递中文的问题
情况分析:Flex默认使用的都是utf-8编码,包括Get、Post等方法。而Tomcat服务器端接收request对象默认是ISO_8859_1编码。
1.FLEX to JSP:
情况一:MXML源代码文件中写入中文字符
    Flex使用 System.useCodepage = true; //即使用本地操作系统编码(GBK)设置Flex的处理编码。Jsp中用依然用ISO_8859_1编码来处理,并转化为GBK。这样Jsp可以正确解释Flex传递的中文字符。这个时候可以认为Flex对mxml源代码文件进行编译时候,源代码中的中文字符已经混乱了,所以要加上System.useCodepage = true;,按GBK编码将中文字符从Flex发送到Tomcat。同时Tomcat中Jsp应该按GBK重新编码。(如下,categoryID 在FLEX 中赋值为中文字符)
String categoryID = request.getParameter("categoryID");
String strOut = new String(categoryID.getBytes("ISO8859-1"), "GBK");
情况二:FLEX 运行时由输入框输入中文字符
       输入框输入的中文字符是一定为utf-8编码的,所以Flex中System.useCodepage = false; 或者不设置,就默认utf-8编码格式传递数据,而Tomcat中Jsp使用下面语句按utf-8来重新编码。
String categoryID = request.getParameter("categoryID");
String strOut = new String(categoryID.getBytes("ISO8859-1"), "utf-8");
2.JSP to FLEX:
情况一:FLEX 接收 JSP 页面的中文参数
Jsp页面用页面指令<%@ page contentType="text/html;charset=utf-8"%>设置,返回结果是utf-8编码,Flex接收后成功解释并正确显示。
情况二:将MXML文件中的<mx:application>标签内容复制到JSP页面中,
(页面中含有中文字符)
    Jsp页面使用指令<%@ page contentType="text/html;charset=gb2312/gbk"%>设置即可。
二十、在Flex中添加右键菜单及页面跳转
var myContextMenu : ContextMenu = new ContextMenu();
var GoUrl : ContextMenuItem = new ContextMenuItem("欢迎您!");
GoUrl.addEventListener(ContextMenuEvent.MENU_ITEM_Select,GoUrlClick);
myContextMenu.customItems.push(GoUrl);
myContextMenu.hideBuiltInItems();
this.contextMenu = myContextMenu;

private function GoUrlClick(event:ContextMenuEvent):void {
       navigateToURL(new URLRequest("http:// dragonfly.autodesk.com"),"_blank");
 }

 

分享到:
评论

相关推荐

    Flex常用教程及库

    这个“Flex常用教程及库”压缩包文件可能包含了丰富的资源,帮助开发者深入理解和使用Flex技术。 在Flex开发中,皮肤是一个关键的概念,它定义了应用程序或组件的外观和感觉。Flex允许开发者自定义组件的外观,以...

    12个Flex常用功能代码

    以下是根据标题和描述中的12个Flex常用功能代码的详细说明: 1. **复制内容到系统剪贴板**:通过`System.setClipboard(strContent)`,你可以将任何字符串`strContent`复制到用户的系统剪贴板中,方便用户进行粘贴...

    Flex 常用实现小功能的语句

    其他常用技巧 - **更改元素层级**: ```actionscript parent.setChildIndex(this, parent.numChildren - 1); ``` 这段代码将当前组件(`this`)移动到最后一个位置,即将其放置在父容器的所有子元素的最后面。 ...

    FlexBuilder3常用快捷键

    ### FlexBuilder3常用快捷键详解 #### 一、概述 FlexBuilder3是Adobe推出的一款用于开发Flex和ActionScript应用程序的专业集成开发环境(IDE...希望本文介绍的这些快捷键能够帮助您更好地掌握FlexBuilder3的使用技巧。

    FLEX设计师基础(图文案例教学)

    《Foundation Flex for Designers》 FLEX设计师基础一书是对FLEX设计操作的入门书籍,通读本书你可以对FLEX设计有一个全面的认识并掌握一些常用技巧。本书并没有用大量篇幅描述设计细节,但本书基本涵盖了大部分常见...

    Flex中文帮助 学习Flex的好资料

    通过这份"Flex中文帮助"资料,你可以系统地学习Flex的基础概念、编程技巧和高级特性,无论是入门还是提高,都能从中受益。结合实例和练习,相信你会对Flex有更深入的理解,并能够熟练运用到实际项目中去。

    adobe flex例程源码

    3. **Flex Builder或Flash Builder**: 这些是开发Flex应用程序常用的集成开发环境(IDE)。源码可能包含在Flex Builder或Flash Builder中创建的项目结构,包括配置文件、库引用和编译设置。 4. **组件库**: Flex...

    Flex第一步

    通过实际案例的学习,可以更深入地理解Flex在不同场景下的应用技巧: - **在线视频播放器**:利用Flex的多媒体支持,可以开发出流畅的视频播放体验。 - **企业级管理系统**:结合服务器端技术,如Java或.NET,可以...

    [Flex与ActionScript.3程序开发].陈爽,付凯.扫描版

    《Flex与ActionScript 3程序开发》由易到难、由浅人深、循序渐进地介绍了Flex与ActionScript 3程序开发的一般步骤与常用的程序技巧,内容通俗易懂,使用大量实例贯穿全书,力求以实战的形式让读者快速掌握知识点。...

    《Flex与ActionScript程序开发》[PDF]

     本书由易到难、由浅人深、循序渐进地介绍了Flex与ActionScript3程序开发的一般步骤与常用的程序技巧,内容通俗易懂,使用大量实例贯穿全书,力求以实战的形式让读者快速掌握知识点。相信读者在学习完本书后,在...

    Flex4 in Action

    ### Flex4 in Action #### 知识点概览 1. **Flex 技术简介** 2. **Flex4 的新特性** 3. **MVC 架构与 Flex 的结合** ...无论是初学者还是有经验的开发者,都能从中获得宝贵的 Flex 开发技巧和实践经验。

    Java与Flex开发入门

    Flex Builder或Adobe Animate(前身为Flex SDK和Flash Professional)是常用的开发工具,它们提供了强大的图形用户界面设计和代码编辑功能。Flex应用程序通常运行在Adobe Flash Player或Adobe AIR(Adobe Integrated...

    做flex项目的小技巧

    在Flex开发中,弹出新窗口是一项常用的功能。通常我们会使用`PopUpManager`类来实现这一点。 **具体步骤:** 1. **准备弹出窗口的页面:** - 首先需要设计并准备好要弹出的新窗口的界面。 2. **创建弹出窗口的...

    Flex完全自学入门手册

    3. **调试技巧**:介绍常用的调试工具和方法,帮助开发者快速定位并解决问题。 4. **错误处理**:建立合理的错误处理机制,提高应用的健壮性和用户体验。 #### 七、总结 通过以上内容的学习,相信读者已经掌握了...

    foundation_flex_for_developers

    **PHP与Flex的数据交换方法**:PHP是一种常用的服务器端脚本语言,它同样可以通过AMF或JSON等方式与Flex应用程序通信。本书将讲解如何使用PHP构建RESTful服务,以及如何处理Flex应用程序发送过来的请求。 **ASP.NET...

    Adobe Flex Builder 3.0官方使用教程

    在这一章节里,我们将深入了解Flex Builder的工作台布局、常用工具栏和菜单选项。此外,还将介绍如何自定义工作台以满足个人的开发需求,例如调整窗口布局、设置快捷键等。通过本章的学习,用户可以更加灵活地操作...

    FlexCode

    Flex Builder或现在的Adobe Flash Builder是常用的集成开发环境(IDE),它为Flex应用提供了强大的代码编辑、调试和构建功能。 "Flex Source"标签可能暗示我们要关注Flex项目的源代码管理。在软件开发中,源代码...

Global site tag (gtag.js) - Google Analytics