还没发上去呢!学AS3 3个月写的东西,很简单的!~
控制舞台上两个MC碰上之后反方向移动效果:
自定义类:
package {
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
//导入要用的类;
[SWF(width="1200", height="600", backgroundColor="#FFFFFF", frameRate="39")];
public class hitTestObjectClass extends Sprite {
public function hitTestObjectClass(mc:MovieClip,mc1:MovieClip):void {
//构造函数;
mc.addEventListener(MouseEvent.MOUSE_DOWN,rolloverhandler);
mc.addEventListener(MouseEvent.MOUSE_UP,rollouthandler);
mc1.addEventListener(MouseEvent.MOUSE_DOWN,rollover);
mc1.addEventListener(MouseEvent.MOUSE_UP,rollout);
//将两个MC对象注册到侦听器;
// trace(mc.hitTestObject(mc1));
// trace(mc1);
function rollover(mouseDown:MouseEvent):void {
//自定义函数;
mc1.startDrag();
addEventListener(Event.ENTER_FRAME,xuanzhuan1);
//用此(mc1)注册到侦听器;
}
function rollout(mouseUp:MouseEvent):void {
//自定义函数;
mc1.stopDrag();
removeEventListener(Event.ENTER_FRAME,xuanzhuan1);
}
function rolloverhandler(mouseDown:MouseEvent):void {
//自定义函数;
mc.startDrag();
addEventListener(Event.ENTER_FRAME,xuanzhuan);
//将mc注册到侦听器;
}
function rollouthandler(mouseUp:MouseEvent):void {
//自定义函数;
mc.stopDrag();
removeEventListener(Event.ENTER_FRAME,xuanzhuan);
//删除侦听器;
}
function xuanzhuan(enterFrame:Event):void {
//进入每帧运行的动作;
if (mc.hitTestObject(mc1)) {
mc1.x = mc1.x-(mc.x - mc1.x)/5;
mc1.y = mc1.y-(mc.y - mc1.y)/5;
}
}
function xuanzhuan1(enterFrame:Event):void {
//进入每帧运行的动作;
if (mc1.hitTestObject(mc)) {
mc.x = mc.x - (mc1.x - mc.x)/5;
mc.y = mc.y - (mc1.y - mc.y)/5;
}
}
}
}
}
FLA文件第一帧:
var mymcmc:hitTestObjectClass = new hitTestObjectClass(mc,mc1);
mc与mc1是舞台上两MC的实例名哦!~
这个主要是控制自制的MC元件,以类来控制;
希望大家多多指点!
我都是自学的,自学要领(每个类认真的看,再实践);