flash中hittest的用法

  找到一篇关于介绍hittest的文章,好多地方都是引用的这篇文章。看了下,写的还可以吧。拷贝过来,看看,我在过网页的过程中,很多时候多导航按钮会用到hittest,就是鼠标放到导航上,导航会产生一个动画,然后会出现一个更详细的导航,用css写的话想对简单很多,但是也少了很多效果,这个我想过用很多简单的用影片剪辑来控制实现的方式,都实现不了,因为影片剪辑和影片剪辑里面的影片剪辑都要有鼠标事件。所以会冲突。不过用hittest可以避免这个问题,先来看看下面的文章吧。

  hitTest是用来检测两个物体或目标是否重叠和相交,如果相交或重叠,就执行相应的动作,这对于我们做一些互动的动画和游戏是非常有用。比如在做点蜡烛和放炮的动画时,就可以用hitTest的方法。
   今天我想说的是一个用电影剪辑控制电影剪辑运动的例子。
首先我们需要两个电影剪辑,一个是图片(mc),一个是箭头(arrow),做好后,放到场景中。
新建一层,加入动作:
arrow.onEnterFrame=function(){
                     if(this.hitTest(_root._xmouse,_root._ymouse)){
                     _root.mc._x+=5;
            if(_root.mc._x>150){
               _root.mc._x=0;
            }
            }
}
为了界面美观,我给图片层增加了遮照,好,现在可以测试了。

我们在来做一个点蜡烛的动画,这个动画很简单,也是用到hitTest的用法。
首先我们做两个电影剪辑,一个是蜡烛(mc),一个是火柴(fire)。
然后我们在帧上添加动作:
startDrag("fire",true);
Mouse.hide();
fire.onEnterFrame=function(){
   for(i=1;i<4;i++){
            if(this.hitTest(_root["mc"+i])){
   _root["mc"+i].play();
                  }
            }
}//这里用mc+i是因为我们在场景中共放了3个蜡烛的电影剪辑。
该动画还有一个bug,就是只要火柴和蜡烛相接触,蜡烛就会点燃。

我现在想到的解决办法是做成一个隐形按钮,在按钮上添加:
on(rollOver){
         play();
}

帧上的动作改为:
startDrag("fire",true);
Mouse.hide();

然后我们做一个点不着的蜡烛,当然这些程序还不是很完善,只是一般性的能实现这个功能而已。
在场景中放一个蜡烛电影剪辑(mc)和一个火柴电影剪辑(fire);
添加以下动作:
startDrag("fire",true);
Mouse.hide();  
fire.onEnterFrame=function(){
   if(this.hitTest(_root.mc)){
         _root.mc._x=Math.random()*500;
         _root.mc._y=Math.random()*300;
         }


发现了一个特点,如果要用hittest产生效果,这里都用到了onEnterFrame语句。都是hittest和onEnterFrame结合,这样用起来就很简单了。

版权所有©摇太阳网站 鄂ICP备09010653号
Copyright By Email:mail@yaotaiyang.com