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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值