反射方法载入库元件到场景-ActionScript3菜鸟教程

By:arrowyoung Date:2009-12-23

    在上一节中我们用到了在库中加载一个元件,我们还有另一个方法来加载一个元件,就是用"反射"的方法,反射就是用库中元件的名字(字符串)去得到我们想要的元件,用代码去把它变成一个类.

    我们在库中建立两个MC,并用上一节的方法将它们导出,名字分别为:Mc1和Mc2,我们要将这两个元件加载到场景上,按照上一节的方法,我们应该这样做:

package net.smilecn{
   
    import flash.display.Sprite;
    import flash.display.MovieClip;
   
    public class MainForm extends Sprite{
       
        public function MainForm(){
           
            var mc1:MovieClip = new Mc1();
           
            addChild(mc1);
           
            var mc2:MovieClip = new Mc2();
           
            addChild(mc2);
           
        }
    }
}

那么如果用反射的方法应该怎样做呢,看下面的代码:

package net.smilecn{
   
    import flash.display.Sprite;
    import flash.display.MovieClip;
    import flash.utils.getDefinitionByName;
   
    public class MainForm extends Sprite{
       
        public function MainForm(){
           
            var ClassReference:Class = getDefinitionByName("Mc1") as Class;
           
            var instance:MovieClip = new ClassReference();
           
            addChild(instance);
           
        }
    }
}

这段代码只加载了Mc1这个元件,而且我们发现代码比上一种方法更复杂一些,那为什么要使用反射这种方法呢,我们在看一段代码:

package net.smilecn{
   
    import flash.display.Sprite;
    import flash.display.MovieClip;
    import flash.utils.getDefinitionByName;
   
    public class MainForm extends Sprite{
       
        public function MainForm(){
           
            for(var i=1;i<=2;i++){
           
                var ClassReference:Class = getDefinitionByName("Mc"+i) as Class;
           
                var instance:MovieClip = new ClassReference();
           
                addChild(instance);
           
            }
           
        }
    }
}

我们发现现在这种写法是不是更简单的一种写法,当库中有名字为Mc1,Mc2,Mc3……这种更多的MC时,我们只需要改变循环变量的范围就可以了。

参与讨论去: 艾睿(Airia) 交朋友去:友吧推荐文章去:网站贴吧
企业招聘

北京中视力天文化传媒有限公司

公司简介:北京中视力天文化传媒有限公司,是CCTV.com央视国际网络有限公司投资的互联网研发团队。我们是天使的使者。。。

招聘FlashAS程序员详情点击

Copyright 2007-2008 51AS.com Extended in kingcms 鲁ICP备06001158号