首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

Flex常见有关问题

2012-10-14 
Flex常见问题一、AIR和普通Flex工程的区别。AIR可以访问系统里的资源,比如C盘,D盘文件,而普通Flex工程不能。

Flex常见问题
一、AIR和普通Flex工程的区别。
AIR可以访问系统里的资源,比如C盘,D盘文件,而普通Flex工程不能。
二、Flex的默认编码
UTF-8
三、后台传回Flex乱码
request.getParameter("name").getBytes("ISO8859-1"), "utf-8"); 或 request.charaterset("UTF-8").
四、flex如何被外部访问.
crossdomain.xml:
<?xml version="1.0" encoding="utf-8"?>
<cross-domain-policy>
<allow-access-from domain="*"/>
</cross-domain-policy>
存放在服务器和项目一起根目录下.*代表全部可以访问.
命名为crossdomain,flex默认读取.
五、判断某个对象(包括组件)是什么类型可以使用is
如:if(myButton is Button)
六、Flex 事件机制
1、AS3事件流可以分为三个阶段:
1)、捕获阶段(即由根节点流向子节点,检测每个节点是否注册了监听器)
2)、目标阶段(激发在目标对象本省注册的监听程序)
3)、冒泡阶段(从目标节点到根节点,检测每个节点是否注册了监听器)
当中涉及了两个属性target和currentTarget,target是事件派发者,currentTarget是正在检测的对象,当开始了事件流,事件的currentTarget属性处于不断变化中。
注:注册事件时捕获阶段默认是关闭的,无论事件是否开启了捕获,事件流只会二选一去执行注册的监听程序。
2、关于EventDispatcher三个函数的参数:
1)、addEventListener( type:String,
listener:Function,
                  useCapture:Boolean = false,
                  priority:int = 0,
                  useWeakReference:Boolean = false)
注:对于同一个对象注册了多个相同的事件监听且优先级相同时,先被注册的监听程序先被执行

2)、removeEventListener( type:String,
listener:Function,
                  useCapture:Boolean = false)
注:type 和listener 参数是必须的。它们与 addEventListener() 方法的必须的参数相同。useCapture 参数同样与 addEventListener() 方法中的 useCapture 参数相同。

3)、dispatchEvent(new Event(type:String,
bubbles:Boolean=false,
cancelable:Boolean=false))
关于Event扩展有两点要注意:
1)、可以定义字符串常量代表事件类型。
2)、构造函数必须调用父类的构造函数,super(type,bubbles, cancelable)
3)、扩展Event可以使Event带自定义变量,从而可以传递数据。
七、Flex中绑定数据对象的方式
绑定的原理就是事件,在被绑定的对象上增加了改变事件的监听,一旦某个被绑定对象改变后,就会分发一个“propertyChange”事件(默认的,也可以改变成自己定义的事件),在其他组件中,会有propertyChange的事件监听,当捕捉到该事件后,则会去更新组件的属性并显示。
对自己的类或者变量添加绑定功能
1)、类前使用[Bindable]表示所有属性都支持绑定,此类必须实现IEventDispatcher接口。
2)、可以给变量声明前或变量getter setter 前使用[Bindable]。如果getter setter方法同名,那么给其中一个[Bindable],相当于给两个都用了[Bindable]。
使用拥有绑定功能的属性
1)、MXML的 {} 方式,如:{myInput.Text}、{myVar1+myVar2}。
2)、MXML的<mx:Binding>方式。,可以双向绑定。如<mx:Binding source="myInput.text"destination="myBtn.label">
3)、AS.mx.binding.utils.BindingUtils类的bindProperty()方法或bindSetter()方法。
4)、AS的mx.binding.utils.ChangeWatcher的watch()方法。
八、Flex和后台交互方式
通过以下三种方式交互1)、remoteobject  2)、httpservice  3)、webservice
九、在Flex应用程序中注册服务器端数据类型
在声明中将这个VO标记为RemoteClass,如[RemoteClass(alias="com.model.User")]
也可以使用flash.net.RegisterClass方法
十、Listerner在处理Event事件的时候,是同步还是异步的。
答案应该同步的。
测试代码如下:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"layout="absolute"mouseDown="clickFunction();" creationComplete="initApp();"><mx:Script><![CDATA[import flash.events.MouseEvent;private function traceAndDispacth():void{dispatchEvent(new MouseEvent("Click")); for(var i:int = 0;i<100;i++){trace("trace in trace function");}}private function eventHandler(event:Event):void{for(var i:int = 0;i<100;i++){trace("trace in trace eventHandler");}}private function initApp():void{this.addEventListener("Click", eventHandler);}private function clickFunction():void{         traceAndDispacth();}]]></mx:Script></mx:Application>

鼠标点击后,先输出trace in trace eventHandler 后输出trace in trace function

热点排行