发信人: younger.zz(Gori)
整理人: yufif(2003-05-28 11:57:09), 站内信件
|
A. _root 和 _parent
注意前面的下画线(”_”)不可少。指定变量、对象或MovieClip的属性、方法等的路径。比如在主场做一个MovieClip,这个MovieClip的实例名为MC1,如果要在MC1中控制主场景的播放,就可以用:
_root.play();
或
_parent.play();
假设主场景第1帧有一个变量k,如果要在MC1中将k的值赋给j,就可以用:
j=_root.k;
或
j=_parent.k
如果用
j=k;
则得不到想要的结果,因为k不在MC1中,而在主场景中。如果在MC1中再创建一个MC11,要在MC11中将主场景的k的值赋给m,则要使用:
m=_root.k;
如果要在MC11中将MC1的变量j的值赋给m,则要用:
m=_parnt.j;
或
m=_root.mc1.j
由此可见,_root是直接指定主场景,_parent是指定上一级路径。
B. trace(Expr)
将Expr的结果从output窗口中显示出来,但只是在Flash MX开发环境中可用,如果用播放器打开SWF文件,则看不到Expr的结果。例如:
trace(3+3); //结果会显示6;
trace(“a”+”b”); //结果会显示 ab;
//如果a是个MC的实例名:
trace(_root.a);//结果会显示:_level0.a
C. eval(Expr)
如果Expr是一个变量或属性,则返回该变量或属性的值。如果参数是一个对象或影片剪辑,则返回指向该对象或影片剪辑的引用路径。例如,主场景有10个MovieClip,它的实例名是 MC1,MC2,MC3……MC10,现在要让每个MovieClip的alpha值(透明度)从90开始逐个递减。你可以用:
mc1._alpha=90;
mc2._aplpha=80;
mc3._alpha=70;
……
mc10._alpha=0;
但这是极不科学的办法,不会用Acton Script的方法,如果有100个,那就要写100条这样的语句吗? 当然有更简单的方法:
for(I=1;I<=10;I++){
eval(“mc”+I)._alpha=100-I*10
}
for循环在《2.2分支和循环》中有详细讲解。
假如有100个MovieClip,那也就是把条件改成这样就可以了:
for(I=1;I<=100;I++){
eval(“mc”+I)._alpha=100-I
}
----
》是什么让我成熟?是什么让我不哭?《
|
|