发信人: 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 
 } 
 
 
  ----
  
 》是什么让我成熟?是什么让我不哭?《    
 
  
     
        | 
 
 
 |