我有两个mc,我希望这个mc击中另一个mc,然后播放一声响亮的声音。我该怎么办?我也将使用键盘事件。
谢谢
答案 0 :(得分:0)
创建一个新的Flash ActionScript 3文档。保存。
将名称boom.mp3
的声音放在同一目录中。
在舞台上绘制方形并将其转换为影片剪辑符号。
在舞台上总共放置2个此影片剪辑符号的实例。
打开“动作”面板并添加以下代码。
下面的代码,只需在播放声音时将鼠标拖动到mc1和mc2碰撞。是与声音播放的基本碰撞。
import flash.media.Sound;
import flash.events.MouseEvent;
import flash.net.URLRequest;
mc1.addEventListener(MouseEvent.MOUSE_DOWN, drag);
stage.addEventListener(MouseEvent.MOUSE_UP, drop);
var sound:Sound=new Sound();
sound.load(new URLRequest("boom.mp3"));
function drag(e:MouseEvent):void
{
mc1.startDrag();
}
function drop(e:MouseEvent):void
{
mc1.stopDrag();
if (mc1.hitTestObject(mc2))
{
trace("Collision detected!");
sound.play(0);
}
else
{
trace("No collision.");
}
}
如果你想使用KeyboardEvent,试试这个:
function playIsCollision(char:DisplayObject, target:DisplayObject):void
{
if(char.hitTestObject(target))
{
sound.play(0);
}
}
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
function keyDownHandler(e:KeyboardEvent):void
{
if(e.keyCode == Keyboard.RIGHT)
{
trace("right move");
mc1.x += 1;
playIsCollision(mc1,mc2);
}
else if(e.keyCode == Keyboard.LEFT)
{
trace("left move");
mc1.x -= 1;
playIsCollision(mc1,mc2);
}
else if(e.keyCode == Keyboard.UP)
{
trace("up move");
mc1.y -= 1;
playIsCollision(mc1,mc2);
}
else if(e.keyCode == Keyboard.DOWN)
{
trace("down move");
mc1.y += 1;
playIsCollision(mc1,mc2);
}
}
这是我的代码:Collision