flex3权威指南学习记录一

5月20日

1.removePopUp()方法,它一定是个静态方法,不必创建PopUpManager类的实例就能使用removePopUp()方法。

 

2.<mx:model>标签必须要有五个根节点,根节点的名称的并不重要。

 

3.XML中的数据是没有类型的,使用的时候要设置数据类型。

 

4.给一个对象创建属性,必须使用方括号表示法来创建属性。如:categorizedProducts[c.@catID]

 

5.tree中属性:showroot

设置根项目的可见性。如果 dataProvider 数据包含根节点,并且根节点的设置为 false,则 Tree 控件不会显示根项

目。仅显示根项目的后代。此标志不会对非根项目的 dataProvider(如 List 和 Array)产生任何效果。

 

 5月21日

 

6.注意horizontalList中有一个labelFunction属性,可以指定方法(方法得有返回值),和labelField差不多。

 

7.HorizontalList和TileList都只许显示文字,使用itemRenderer属性可以忽略 这种默认行为。当为itemRenderer提供值时不是输入文件名的扩展名,而是输入itemRenderer相对主应用程序文件的路径。

 

8.Repeater可遍历数据集,并使你能访问其中的每一项。在循环时有两个属性能帮你访问数据:currentItem属性引用了所有数据中当前正处理的部分,而currentIndex代表从零开始进行的一个计数,指定了数据集中当前项的位置。currentItem和currentIndex属性都只在实际循环时有意义。 getRepeaterItem()方法也很有作用:返回dataProvider属性中的一项数据。 如:event.target.getRepeaterItem().cost(cost是属性)

 

5月22日

 

9.自定义事件为什么要重载clone()方法:一个定义事件如果不重载clone方法一般情况下不出问题,但是如果这个事件要进行中继的话,也就是说被继续派发下去的情况下,重载就非常有必要了。

private function relay(customEvent:CustomEvent):void

{   dispatchEvent(customEvent);    }
这个relay方法就是对CustomEvent的第一次响应,然后在这个方法里继续向外派发这个事件,由另一个事件处理器来继续处理;在重新派发事件的过程中,flash内部的事件框架将会调用事件的clone方法来生成这个事件的一个新实例,如果没有重载clone方法,也就是说使用的是默认的重载方法,那么新的事件实例就是一个普通的event,而不是自定义事件,这时,在下一个事件监听器中如果期待的是自定义事件的话,就会发生:Error #1034: 强制转换类型失败:无法将 flash.events::Event@5e514f1 转换为.....的错误;

 

10.根据事件的冒泡机制,如果自定义事件的组件处于最里层。可以在事件建立时多声明一个bubbles参数(默认就为空):

public function ProductEvent(prod:Product,type:String,bubbles:Boolean=false){
   super(type,bubbles);
   this.product = prod;
  }

 public override function clone():Event{
   return new ProductEvent(product,type,bubbles);
  }

发布事件用到时,把bubbles设置为true,这样最上层就可以收到,中间层不用转发了:

var e:ProductEvent = new ProductEvent(prod,'itemAdded',true);
 this.dispatchEvent(e);

 

 

 

 

你可能感兴趣的:(xml,框架,Flash)