0

見下ろすゲームをやっています。実際には本当に単純なものです。プレイヤーが画面をクリックするとキャラクターが動きます。しかし、私もファイアボタンを持っています。プレイヤーがボタンを押したときにマウスのクリックを無効にする方法を知りたいです。これが発生すると、キャラクターがボタンスポットに移動するためです。

これが私のコードです:

var walk = false;
var goX = player.x;
var goY = player.y;
var speed = 10;
var dir = "down";

stage.addEventListener(Event.ENTER_FRAME, loop);

btn.addEventListener(MouseEvent.MOUSE_DOWN, btn1);

function btn1(event:MouseEvent):void
{

fireBullet();

}


function fireBullet():void {
var playerDirection:String;
if(player.scaleX < 0){
    playerDirection = "left";
} else if(player.scaleX > 0){
    playerDirection = "right";

} 
if(char.scaleY < 0){
    playerDirection = "up";
} else if(char.scaleY > 0){
    playerDirection = "down";
}

var bullet:Bullet = new Bullet(player.x, player.y, playerDirection);
stage.addChild(bullet);
}



function loop(Event)
{

if (walk == true)
{
player.w.play();
}
else
{
player.w.gotoAndStop(1);
}

player.gotoAndStop(dir);


if ((goY-speed)>player.y)
{
player.y +=  speed;
dir = "down";
}
else if ((goY+speed)<player.y)
{
player.y -=  speed;
dir = "up";
}
if ((goX-speed)>player.x)
{
player.x +=  speed;
dir = "right";
}
else if ((goX+speed)<player.x)
{
player.x -=  speed;
dir = "left";
}

if ((goY-speed)>player.y || (goY+speed)<player.y || (goX-speed)>player.x || (goX+speed)                  <player.x){
walk = true;
} else {  
 walk =false
}
}

 stage.addEventListener(MouseEvent.CLICK, set);

function set(MouseEvent){
goX=mouseX
goY=mouseY}

ありがとう。

4

2 に答える 2

2

マウスイベントが表示リストをバブルアップし、ステージにリスナーが追加されているため、ユーザーがボタンを押したときに、イベントの伝播を停止する必要があります。

これを実現するには、ボタンハンドラーで、メソッドを呼び出す必要がありますstopImmediatPropagation。したがって、btn1メソッドは次のようになります。

function btn1(event:MouseEvent):void
{
    fireBullet();
    event.stopImmediatePropagation();
}

このようにして、クリックイベントがステージまでバブリングするのを防ぎ、ステージのクリックハンドラーが呼び出されるようにします。

お役に立てれば。すてきな一日を。

于 2013-02-28T07:35:34.450 に答える
0

簡単に言えば、 の概念を使用すると、次のtargetように処理できます。

これを試して:

function set(e:MouseEvent):void
{
      var target = e.target;

      //ex) if(target is MovieClip) return;
      if(target is <#your fire button type#>) return;

      goX=mouseX;
      goY=mouseY;
}

「ターゲット」と「currentTarget」の違いは何ですか?

  • target : イベントを発生させたオブジェクト。
  • currentTarget : リスナーを適用したオブジェクト。
于 2013-02-28T07:58:11.200 に答える