首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当mc命中mc时触发音效!闪存AS3

当mc命中mc时触发音效!闪存AS3
EN

Stack Overflow用户
提问于 2013-03-08 06:26:49
回答 1查看 2.7K关注 0票数 0

我有两个mc,我想让这个mc击打另一个mc,然后它会发出响亮的响声。我该怎么做呢?我也将使用键盘事件来配合使用。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-08 06:45:11

  1. 创建新的Flash ActionScript 3文档。保存。
  2. 将您的声音like names boom.mp3放在舞台上的同一个正方形中,并将其转换为影片剪辑元件。
  3. 将此影片剪辑元件的总共2个实例放在舞台上。
  4. 打开动作面板并添加以下代码。

下面的代码,只需拖动鼠标到mc1和mc2时发生碰撞即可播放声音。是与声音回放的基本冲突。

代码语言:javascript
复制
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,试试这个:

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15283006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档