MC的控制
文章类别:
Flash | 发表日期:2008-9-21 20:12:19
在电影播的时候,你可以分别使用dulicateMovieClip和removeMovieClip动作创建和删除MC,从而作出看起来复杂的特效,使你的flash增色不少。
DuplicateMovieClip动作动态的为一个MC创建一个或多个新的实例,并分配给新的实例一个新的实例名,和深度。一个复制出的MC总是从第1帧开始播放,即使当它被复制时,原始的MC正处于其他的帧上,新复制的MC也从帧1播放,并且复制出的MC总是处于所有预定义的MC的上层。
duplicateMovieClip动作详解
====================================================================
duplicateMovieClip:在电影剪辑正在播放期间,创建一个它的复制品实例。
语法:duplicateMovieClip(target,newname,depth);
参数:target:要被复制的电影剪辑的目标路径;
newname:一个唯一的标识符,将要复制出的电影剪辑的名字;
depth: 电影剪辑的深度(depth level)。这个深度级实际上是一个堆叠顺序,它决定了当电影剪辑和其他的对象相互重叠时,他们将如何进行。你创建的第一个电影剪辑或是你拖动到舞台上的实例将被赋予一个0级深度。你必须给每一个后续的或复制出的电影剪辑一个不同深度级,以防它占用其他的电影剪辑正在使用的深度,那将导致原来的电影剪辑被替换。
/*使用removeMovieClip动作或方法来删除一个有duplicateMovieClip创建的电影剪辑实例。利用duplicateMovieClip和for循环可以做出慢动作效果*/
=====================================================================
(注重:原始MC中的变量不会被copy到新复制出的MC中)
要删除一个使用duplicateMovieClip创建的MC,需要使用removeMovieClip动作,假如原始的MC被删除了,复制出的MC也会被删除。
removeMovieClip动作详解
======================================================================
removeMovieClip:删除一个由duplicateMovieClip动作或是由MovieClip对象的attachMovie或duplicateMovieClip方法创建的电影剪辑实例。
语法:removeMovieClip(targer);
参数:target: 一个由duplicateMovieClip动作或是由MovieClip对象的attachMovie或duplicateMovieClip方法创建的电影剪辑实例的目标路径。
=====================================================================
下面我们通过一个例子细细品位一下;
当鼠标点击按钮时就复制一个fish,当按下D键时,将最后复制出的那条鱼卸装,假如继续按D键,则按复制顺序的逆序依次删除复制出的鱼。(先删除后复制的)
在主场景中放一个按钮,命名为button,在放一个鱼的MC命名fish,在button上加上如下语句:
=====================================================================
on(press)//点击按钮
{
i=i+1;//每次点击i加1
duplicateMovieClip(_root.myFish,"myFish"+i,i);//复制myFish,命名myFish+i
setproperty("_root.myFish"+i,_x,random(500));//设置新复制的MC的x坐标,在0~500之间的随机数
setproperty("_root.myFish"+i,_y,random(300));//设置新复制的MC的y坐标,在0~300之间的随机数
}
on (keyPress "d") //当按下D键时
{
removeMovieClip("_root.myFish"+i);//删除最后一次点击所复制的MC
if (i == 0)//假如i=0就什么也不做
{}
else //假如i不等于0
{if (i == undefined)//假如i=undefined则什么也不做,i没附值,此时MC是myFish,假如不要这句而直接执行i=i-1会出错,假设一进电影就按了2次以上D键,此时i不等于0就执行i=i-1,点击按钮就会复制一个myFish-1的MC,等到以后在按D键删除时会被i=0拦截,而删除不了myFish-1这个MC
{}
else {i = i-1;}
}
}
======================================================================
在上面语句中,在on(press中复制鱼,在on(KeyPress "d")中,假如条件满足,既按D键,则卸装名为"_root.nyFish"+i的鱼,(最后一个被复制的鱼),然后检查i是否等于0,假如等于0了,则什么也不做,假如不等于0且不等于undefined,则将i自减1。
看了上面这个实例,相信一定有所启发,别忘了多练习,还可以作出很多特效。