关于代码创建MovieClip

      Flash进修 2007-4-18 12:37

在as1.0,2.0中,我们可以用createEmptyMovieClip(),duplicateMovieClip(),attachMovie(),三种方法来动态创建MC,创建时都需要提供一个实例名称,但实际上很多时候我都不想提供这个实例名称,因为我不需要通过这个名称来访问MC.
例如下面的代码:
mcArr=[]
for(var i=0;i<10;i++){
 mcArr.push(_root.createEmptyMovieClip("mc_"+i,i))
}
//只需要通过数组元素就可以访问mc了,至于mc的名称是什么都无所谓,也不用知道
//于是我试着用一个空字符串作为名称,测试代码如下:
//这样似乎也可以正常使用创建出的mc,但有一点不妥的就是这些mc用"=="或是"==="进行比较,结果尽然是"相等"
//看起来mc之间的比较是基于mc的路径,下面的代码中,mc1,mc2,mc3,mc4的路径都是"_level0.",所以比较结果是"相等"

//-----------------------------------------
mc1 = this.createEmptyMovieClip("", 10);
mc1._x = 100;
mc2 = this.createEmptyMovieClip("", 20);
mc2._x = 200;
mc3 = mc2.duplicateMovieClip("", 30);
mc3._x = 300;
mc4 = this.attachMovie("mc_0", "", 40);
mc4._x = 400;
//
trace([mc1, mc2, mc3, mc4]);//都是"_level0."
trace([mc1 == mc2, mc2 == mc3, mc3 == mc4]);//都是"true"
//
trace(mc1.getDepth());//10
trace(mc2.getDepth());//20
trace(mc3.getDepth());//30
trace(mc4.getDepth());//40
trace(this[""].getDepth());//10
//
view(mc1, 0xff0000);//画出一个红色的圆
view(mc2, 0x00ff00);//画出一个绿色的圆
view(mc3, 0x0000ff);//画出一个蓝色的圆
view(mc4, 0xffff00);//画出一个黄色的圆
//
function view(mc, col) {
 mc.clear();
 mc.lineStyle(100, col, 50);
 mc.moveTo(0, 0);
 mc.lineTo(0, 0.5);
}

标签集:TAGS:flash
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}