精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>电脑技术>>动画制作>>软件教程>>FLASH教程>>《Flash MX AS基础》第十课

主题:《Flash MX AS基础》第十课
发信人: younger.zz(多收了三五斗)
整理人: yufif(2003-09-28 15:15:44), 站内信件
★原文转载自Learning版younger.zz的《【FlashMX AS基础】第十课》★
第三部分, ActionScript与实例 (第十课)  


    学习本部分前,我们先学习使用颁率最高的四个Action:_root,_parent,trace,eval 

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
}
假如有100个MovieClip,那也就是把条件改成这样就可以了:
for(I=1;I<=100;I++){
eval("mc"+I)._alpha=100-I
}

下面是我今天在Flash版看到一位版友写的“雪花”效果:这是他的原文:


aiyi = 1;
while (aiyi<=200) {
duplicateMovieClip("snow", "snow"+aiyi, aiyi);
setProperty("snow"+aiyi, _x, random(500));
setProperty("snow"+aiyi, _y, random(400));
setProperty("snow"+aiyi, _xscale, Math.random()*60+40);
setProperty("snow"+aiyi, _yscale, eval("snow"+aiyi)._xscale);
setProperty("snow"+aiyi, _alpha, eval("snow"+aiyi)._xscale+random(30));
aiyi++;
}



如果将上列代码改成用eval的形式,将会是这样的:



aiyi = 1;
while (aiyi<=200) {
duplicateMovieClip("snow", "snow"+aiyi, aiyi);
eval("snow"+aiyi)._x=random(500);
eval("snow"+aiyi)._y=random(400);
eval("snow"+aiyi)._xscale=Math.random()*60+40;
eval("snow"+aiyi)._yscale=Math.random()*60+40;
eval("snow"+aiyi)._alpha=eval("snow"+aiyi)._xscale+random(30)};
aiyi++;
}




----

》是什么让我成熟?是什么让我不哭?《    


   
       

[关闭][返回]