在上一节中我们用到了在库中加载一个元件,我们还有另一个方法来加载一个元件,就是用“反射”的方法,反射就是用库中元件的名字(字符串)去得到我们想要的元件,用代码去把它变成一个类。
我们在库中建立两个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);
}
}
}
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);
}
}
}
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);
}
}
}
}
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时,我们只需要改变循环变量的范围就可以了。
下节继续。
(本教程如需转载请注明出处!)