我有行动
MC1.addEventListener (MouseEvent.MOUSE_OVER, MC1_over);
可以使用其他 MC 代替鼠标吗?换句话说,当 MC2 超过 MC1 时,我的行动就会开始。怎么做?感谢帮助
我有行动
MC1.addEventListener (MouseEvent.MOUSE_OVER, MC1_over);
可以使用其他 MC 代替鼠标吗?换句话说,当 MC2 超过 MC1 时,我的行动就会开始。怎么做?感谢帮助
你必须检查交叉口。它被称为 HitTesting,有几种方法可以解决这个问题。但首先 - 它不再是一个事件,你必须检查每一帧中的交叉点。所以首先,我们需要创建一个新的 Event.ENTER_FRAME 监听器。
addEventListener(Event.ENTER_FRAME, onEnterFrame);
function onEnterFrame(e:Event):void
{
//Your code will go here
}
其次,我们检查我们的对象是否与它们的边界矩形相交。如果你有方形或矩形的影片剪辑,没关系,如果你的 MC 更复杂(例如两个圆圈),你将不得不使用其他方法来获得这个交叉点。
addEventListener(Event.ENTER_FRAME, onEnterFrame);
function onEnterFrame(e:Event):void
{
if(MC1.getRect(this).intersects(MC2.getRect(this)))
{
//Two movieclips are intersecting
}
}
第三,只要你的 MC 相交,只要这个条件成立,我们就需要定义一个标志来告诉我们是否已经做了我们想做的事情。
var alreadyHandled:Boolean = false;
addEventListener(Event.ENTER_FRAME, onEnterFrame);
function onEnterFrame(e:Event):void
{
if(MC1.getRect(this).intersects(MC2.getRect(this)))
{
if(!alreadyHandled)
{
doSomething();
alreadyHandled = true;
}
}
else
{
//When our movieclips are apart again, we reset our helping variable
alreadyHandled = false;
}
}
function doSomething():void
{
//We do what we want to do if our MCs are intersecting
}
如果您想连续地做某事,当您的电影剪辑相交时,请忽略那个帮助标记的东西。
顺便说一句,我建议您以小写字母开头命名变量。在 AS3 中,只有类和接口的名称以大写字母开头。
谢谢你。当我在新的 as3 文件上执行此操作时,一切都很好。但是我需要在课堂文档中使用它当我使用
addEventListener(Event.ENTER_FRAME, onEnterFrame);
function onEnterFrame(e:Event):void
{
if(MC1.getRect(this).intersects(MC2.getRect(this)))
{
trace("intersects")
}
}
错误#1034:无法在 flash.display.DisplayObject 上转换类型 global@23b3a0d1。
也许你知道问题出在哪里?