Archive for 09月, 2008

  • 原来describeType是这么用的…

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
    creationComplete="init()">
    <mx:Script>
    <![CDATA[
    import mx.controls.Alert;
    public function init():void{
    
    var description : XML = describeType( this );
    var accessors : XMLList = description.accessor.( @access == "readwrite" ).@name;
    
    var str:String;
    for ( var i : uint = 0; i < accessors.length(); i++ )
    {
    var name : String = accessors[ i ];
    
    str += (name+”\n”);
    }
    Alert.show(str);
    }
    ]]>
    </mx:Script>
    </mx:Application>
  • 作用:返回name所指向的类的引用

    示例:

    package {
        import flash.display.DisplayObject;
        import flash.display.Sprite;
        import flash.utils.getDefinitionByName;
    
        public class GetDefinitionByNameExample extends Sprite {
            private var bgColor:uint = 0xFFCC00;
            private var size:uint = 80;
    
            public function GetDefinitionByNameExample() {
                var ClassReference:Class = getDefinitionByName("flash.display.Sprite") as Class;
                var instance:Object = new ClassReference();
                instance.graphics.beginFill(bgColor);
                instance.graphics.drawRect(0, 0, size, size);
                instance.graphics.endFill();
                addChild(DisplayObject(instance));
            }
        }
    }

    说白了,就是要实例化Sprite的时候不写new Sprite()的另外一种方法,再延伸一点,就是可以用字符串来决定创建什么类。或者可以用来读取共享库中的类。

  • 作用就是为当前类添加一个事件类型。

    例如:

    package
    {
    import flash.events.EventDispatcher;
    
    import mx.events.FlexEvent;
    [Event(name="add", type="mx.events.FlexEvent")]
    public class customEvent extends EventDispatcher
    {
    public function customEvent()
    {
    this.addEventListener(FlexEvent.ADD,***);
    }
    }
    }

    如果不加上[Event(name="add", type="mx.events.FlexEvent")]的话,addEventListener();中就不会出现FlexEvent.ADD这个代码提示。

  • crossdomain.xml需要加入另外的内容,具体如下:

    <?xml version="1.0"?>
    <cross-domain-policy>
    <site-control permitted-cross-domain-policies="all" />
    <allow-access-from domain="*.czbin.com" />
    <allow-http-request-headers-from domain="*.czbin.com" headers="*"/>
    </cross-domain-policy>
  • removeEventListener,默认的是需要2个参数,一个是type:string,另外一个是listener:function

    如果是正常情况下,我们为一个EventDispatch的子类removeEventListener时,只写一个参数编译时会报错。

    但是,如果是一个编译器未知的对象类型,执行removeEventListener,只输入第一个参数的话,编译可以过去,并且,在运行时可以正常工作。