当mc击中mc时触发声音效果! FLASH AS3

时间:2013-03-07 22:26:49

标签: actionscript-3 flash triggers

我有两个mc,我希望这个mc击中另一个mc,然后播放一声响亮的声音。我该怎么办?我也将使用键盘事件。

谢谢

1 个答案:

答案 0 :(得分:0)

  1. 创建一个新的Flash ActionScript 3文档。保存。

  2. 将名称boom.mp3的声音放在同一目录中。

  3. 在舞台上绘制方形并将其转换为影片剪辑符号。

  4. 在舞台上总共放置2个此影片剪辑符号的实例。

  5. 打开“动作”面板并添加以下代码。

  6. 下面的代码,只需在播放声音时将鼠标拖动到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