Flex setter 陷阱
这样的陷阱,谁能不中招?
Flex的setter大家都用过吧,看例子:
主程序:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
<mx:Script>
<![CDATA[
function init():void{
var c:Card = new Card;
c.count=0;
}
]]>
</mx:Script>
</mx:Application>
Card.as:
package
{
import flash.events.EventDispatcher;
[Bindable]
public class Card extends EventDispatcher
{
private var _count:int=0;
public function get count():int{
return _count;
}
public function set count(n:int):void{
trace("Card count setter called");
this._count=n;
}
}
}
够简单吧,陷阱已经出现。
setter不能被调用!
如果把[Bindable]去掉,就可以了。
为什么呢?
纯BUG!
大概是因为[Bindable]属性的setter是依据 PropertyChangeEvent 驱动的,由于此例的默认值是0,赋值操作也是0,就干脆不调用了。
害了我一个小时啊!
相关文档:
Flex里面,DataGrid的column的width属性不接受百分比,只接受一个具体的像素值,所以,如果想按照比例来设置列宽需要费些周折。Google了一下,有两种方法可以做到: 第一种方法,不要设置width为百分比,而设置为一个小数,所有列的小数值的和必须为1。 <mx:DataGrid width="100%" height="100%" ......
Learning Flex in a week – Day1
Flex,Flash,Flash
Player,AIR概述
了
解Flex Builder
Flex
Builder工作空间
了
解Flex预编译组件
了
解MXML
组
件的数据绑定
处
理用户事件
了
解事件对象
使
用ActionScript添加事件侦听器
使
用HttpService获取数据 ......
用Flex4加载Flex3的组件时,发现了这个问题:
当用spark添加一个mx组件时不会有问题,但当这个mx组件中还有其他组件
例如<mx:HBox><mx:Canvas/></mx:HBox>被添加到<s:Group></s:Group>
(注:通过AS代码使用addElement()添加,而不是直接写到mxml中)
stage.frameRate会瞬间达到1000!
之 ......
1:http://bbs.9ria.com/viewthread.php?tid=44441
2:http://help.adobe.com/en_US/flex/using/WSA95C9644-B650-4783-B5C0-D2C7F95A23E3.html#WS46970071-A39D-49de-B881-66F639787305
3:http://flex4jiaocheng.com/blog/268
4:http://www.k-zone.cn/zblog/post/flash-builder-gumbo-customer-sparkskin.html
5:htt ......