学学习网 手机版

学学习网

学习路径: 学习首页 > 应用开发 > AS3 >

第四节 反射的方式加载库里的MC

设置字体:
----------------------------------
   在上一节中我们用到了在库中加载一个元件,我们还有另一个方法来加载一个元件,就是用"反射"的方法,反射就是用库中元件的名字(字符串)去得到我们想要的元件,用代码去把它变成一个类.
    我们在库中建立两个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时,我们只需要改变循环变量的范围就可以了。
----------------------------------
课程列表
重点难点
赞助链接