0

私は 2 つの mc を持っています。この mc が別の mc にヒットし、大きな音が鳴ります。どうすればいいですか?それに合わせてキーボードイベントも使用します。

ありがとう

4

1 に答える 1

0
  1. 新しい Flash ActionScript 3 ドキュメントを作成します。保存されます。

  2. 名前のような名前boom.mp3を同じディレクトリに入れます。

  3. ステージ上に正方形を描画し、ムービー クリップ シンボルに変換します。

  4. このムービー クリップ シンボルの合計 2 つのインスタンスをステージに配置します。

  5. [アクション] パネルを表示し、次のコードを追加します。

以下のコードでは、サウンドが再生されているときにマウスを 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);
    }
}

ここに私のコードがあります:衝突

于 2013-03-07T22:45:11.240 に答える