About

<#TEMPLATE_INCLUDE_NINEPAGE_ABOUTME#>
  • Oct

    31

    ActionScript3 支持了E4X标准来处理XML数据,非常方便;但在ActionScript2 中只能使用DOM标准来处理XML数据(事实上ActionScript3 支持两种标准来处理XML数据,除了E4X之外,仍然支持传统的DOM标准来处理XML数据)。以下为XML数据解析方法的实例截图:

    Oct

    29

    取得外部被加载的SWF对象的类引用方法, 取得类引用后就可以通过 new 来实例化生成多个对象了:

    var contentMc:MovieClip = e.target.content as MovieClip;
    var moduleClassName:String = getQualifiedClassName(contentMc);
    var appDomain:ApplicationDomain = contentMc.loaderInfo.applicationDomain;
    var ModuleClass:Class = appDomain.getDefinition(moduleClassName) as Class;

    一个更简单的方法是利用 constructor 属性来取得文档类的引用:

    var contentMc:MovieClip = e.target.content as MovieClip;
    var ModuleClass:Class = contentMc.constructor as Class;

    More...

    Oct

    26

    Flex Builder 3.x 升级 SDK 方法

    • 0 Comments
    • Flash Platform
    1、

    进入 http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex3sdk 页面;

    2、

    下载 Adobe Flex 3.x SDK,并解压至Flex Builder安装路径(如默认位置为 X:\Program Files\Adobe\Flex Builder 3\sdks\3.x);

    3、

    下载 Adobe Flex 3.x Data Visualization Components for Flex Builder,并全部解压至第2步相同目录;

    4、

    下载 Adobe Flex 3.x Automation Libraries for Flex Builder,并全部解压至第2步目录中的 frameworks 目录;

    5、

    启动 Flex Builder, 点菜下拉菜单 Window / Preferences 打开属性对话框,打开 Flex 选项卡,选中 Installed Flex SDKs 子选项卡,单击Add按扭,添加SDK路径与名称;

    6、

    将新装 SDK 设为默认值,完成。

    More...

    Oct

    21

    AdvancedDataGrid 组件虽然与 Tree 组件一样能支持树型结构的数据,但 AdvancedDataGrid 组件并没有像 Tree 组件那样拥有 openItems 属性,所以在判断 AdvancedDataGrid 组件所有层级数据是否全部被打开或全部被关闭需要通过其它类来实现。一般 AdvancedDataGrid 的source属性在使用树型数据结构时可通过 HierarchicalData 类的包装解析。此时 AdvancedDataGrid  类的属性 dataProvider 为实现了 IHierarchicalCollectionView 接口类的数据类型。IHierarchicalCollectionView 拥有 openNodes 属性,此时可以用来判断 AdvancedDataGrid 组件树型数据判断是否所有节点被打开方法。样例代码如:

    //myADG 为 AdvancedDataGrid 的一个实例
    //myOpenNodes 为 myADG 打开的节点数
    //执行该函数后,如 myOpenNodes 为 0,表所所有点节被关闭,否则有节点被打开
    //如需枚举所有被打开的节点,使用for each … in 遍历 obj 对象
    function getOpenNodes():void {
     myOpenNodes = 0;
     if(myADG.dataProvider is IHierarchicalCollectionView){
         var obj:Object = IHierarchicalCollectionView(myADG.dataProvider).openNodes;
      for ( var i:* in obj){
       myOpenNodes++;
      }
     }
    }

    Oct

    21

    FLEX 没有了 FLASH 的 getIsBranch() 方法,可以通过以下方法判断一个树型结构数据是否为叶子节点:

    length= XML(mx.controls.Tree(event.target).selectedItem).children().length();

    如果 length为0 ,说明是叶子节点,否则就不是。

    Oct

    19

    SharedObject  的 data 属性默认只能保存原始对象,如字符串、数组、数字、布尔值、二进制对象、XML,等等。如果要保存 ArrayCollection 或自定义对象就需要利用一些其它类的实现。由于原始对象数组本身可以包含任何数据类型,所以当数组中也包含了 ArrayCollection  或自定义对象时,也需要利用其它一些类的实现。

    一个普通的包含原始对象字符串或数字等数据的 ArrayCollection  直接通过 ByteArray 的 writeObject方法先转换成二进制再保存。

    var bytes : ByteArray = new ByteArray(); 
    bytes.writeObject(arrayCollection); 
    var sharedObject : SharedObject = SharedObject('myAC'); 
    sharedObject.data.ac  = bytes;

    当取需要回该 ArrayCollection  对象时:

    var ac : ArrayCollection = (SharedObject('myAC').data.ac as 
    ByteArray).readObject() as ArrayCollection;

    如果数组或集合中包含了自定义对象,那么在将它们转换成二进制序列化对象之前,还需要先使用 registerClassAlias() 方法对类进行别名注册。

    Oct

    11

    在 AS3 中当显示对象被分配鼠标事件时不再是全局的,比如拖动一个对象或画线时,如果鼠标指针移动的过快,并超出屏幕时,它是会意外中止的;再如当鼠标指针在显示对象外释放时无法侦听到 mouseUp 事件。

    对此,官方给出的建义是通过侦听 stage 的鼠标事件,就可以成为全局鼠标事件对象。如:

    stage.addEventListener(MouseEvent.MOUSE_MOVE, dragObject); 

    Fora global mouseMove event, assign listeners to the stage object. The stage object will always receive mouseMove events despite what other displayobjects the mouse is over (as long as the mouse moves within the Flash Player window). This way ifan object is being dragged,and the mouse moves off the object, the mouseMove event will still fire and the object will continue to follow the mouse.

    Sep

    28

    火车站人来人往,八公在人群中因迷失而随波逐流;人们都显的忽忽忙忙,没有人刻意的为一只小狗而停留脚步。

    当帕克教授出现时,它们彼此停留了。所以既不是八公找到了教授,也不是教授找到了八公,这是在茫茫人海中最唯美的因缘份而相遇。 

    Aug

    25

    When you use lastChild or firstChild as the position value, the target value is interpreted as the container to which you want to add the child component(s). When you use a value of before or after for the position attribute, the target is interpreted as a sibling of the component(s) you are adding. If you want to add the child component(s) immediately before or after an existing component, you can specify the sibling component as the target and then use the value of before or after for the position attribute.

    More...

    Aug

    25

    When components are removed by changing states, the components are still stored in memory. Once a component has been created, moving away from the state in which it is created is the equivalent of calling the removeChild() method in ActionScript:the component is removed from the display list, but is still exists in memory.

    More...