字体:  

件中的拖动检验类及实例教程

独上西楼 发表于: 2008-4-21 21:33 来源: 中学语文在线门户

最近总是有朋友问起,如果要在课件中,控制mc的拖动,如果到正确的位置,就停止拖动,放到这个位置上,如果不是正确的位置,就回到原来的位置.思考了两天,终于写出了一个as2.0的类,继承了movieClip类,使用这个类进行控制.
下面先看一下效果:

论坛开启了防盗链,请点击浏览该FLASH文件 | [快车下载]
这个效果中,你可以拖动不在方框内的4个小方块,拖动进入方框内,如果是相同的,就重叠在上面,如果不是,就回到原来的位置.
下面是制作过程:
1 、自己做4个mc,可以随意做,在这里我是做了四个颜色不同的方块,并且加了数字。
2、先把4个mc拖动到主场景中,分别设置实例名为:m1,m2、m3、m4
3、做一个大方框,然后再次拖出这4个mc,分别依次设置实例名为:mc1、mc2、mc3、mc4
4、拷贝过来写好的这个类:
//********************************************************//
//*******本类由浪子啸天创意设计****************************//
//*******有什么问题请mail:kjjxzx@126.com******************//
//*******更多的课件教程请访问:http://asp5.6to23.com/wlwy***//
//*******转载请注明处处,请保留版权*************************//
//*******************************************************//
MovieClip.prototype.hit=function(mc){//自定义一个hit类函数,需要一个参数mc,为要碰撞的mc
this.tempx=this._x //获得要移动的mc的初始坐标
this.tempy=this._y
this.onPress=function(){ //按下鼠标,拖动mc
this.startDrag()
}
this.onRelease=function(){ //释放鼠标
if(this.hitTest(mc)){ //如果接近要接触的mc,停止拖动,设置mc的坐标为接近的mc的坐标
this.stopDrag()
this._x=mc._x
this._y=mc._y
} else {//如果没有接近,停止拖动,回到原来的位置
this.stopDrag()
this._x=this.tempx
this._y=this.tempy
}
}
}
类有简单的注释,并不麻烦。
5、设置mc的拖动,使用下面代码:
m1.hit(mc1)//m1碰撞mc1
m2.hit(mc2)
m3.hit(mc3)
m4.hit(mc4)
好了,大功告成,测试一下吧~~
当然,你也可以使用这个类,实现更多的效果~~·