2017-10-02 16 views
1

私は画面上に文字を持っており、現在のマウス座標にしたい。画面上にあるときにのみマウス座標を取得するas3

私が抱えている問題は、マウスが画面上にないときに、キャラクターが画面上のランダムな場所にジャンプするということです。マウスが最後にあった場所にマウスを置いておくと画面上。

質問
は、どのように私はそれはので、私のキャラクターは、マウスを画面上にあった最後の場所にとどまる作るのですか?

あなたは自分の位置の割り当てにいくつかの条件を入れて持って
import flash.ui.Mouse; 
import flash.display.MovieClip; 
import flash.events.*; 
stage.addEventListener (Event.ENTER_FRAME,gameloop); 
function gameloop(e:Event){ 
    Mouse.hide(); 
    Character.x = mouseX; 
    Character.y = mouseY; 
} 

答えて

1

あり
function gameloop(e:Event){ 
    Mouse.hide(); 
    if(mouseX > 0 && mouseX < stage.stageWidth - Character.width){ 
     Character.x = mouseX; 
    } 

    if(mouseY > 0 && mouseY < stage.stageHeight - Character.height){ 
     Character.y = mouseY; 
    } 
} 

あなたは、ステージ幅より0よりも大きいと小さい場合にのみ文字がマウスの位置ならばx値を更新し、言っています(あなたのキャラクターにポイントが0,0である場合に役立つ、キャラクターの幅より小さいキャラクター)。条件が合格しなかった場合、そのキャラクタは元の位置にとどまります。

条件は、文字が遵守する必要がある範囲によって異なる場合があります。

けれども、あなたのマウスがオフスクリーン、それがすべてでするmouseX/Y値を更新してはいけません(アプリケーションウィンドウの外)である場合、ので、おそらくここで遊んで別の問題があるのでしょうか?

+0

私はステージからクリックしてドラッグすると、あなたのコードがキャラクターを画面外に動かすようになります。 – Organis

+0

マウスの値をトレースすると、マウスが画面を離れると、システムはマウスの値に画面内の値を与えます。 – jbell

1

何が起こったのかは、何らかの理由でマウスが画面上の一見無作為な場所でマウスの値を読み取ると画面を離れたときです。 、マウスはそれがマウスの値をチェックします動かすたび

stage.addEventListener(MouseEvent.MOUSE_MOVE,screenExit); 
function screenExit(e:MouseEvent){ 

    if((mouseX > (lastX+50))||(mouseX < (lastX-50))){ 
     lastX =mouseX; 
     lastY =mouseY; 
    } 
    else if((mouseY > (lastY+50))||(mouseY < (lastY-50))){ 
     lastX =mouseX; 
     lastY =mouseY; 
    } 
    else{ 
     Character.x = mouseX; 
     Character.y = mouseY; 
    } 
    lastX =mouseX; 
    lastY =mouseY; 

    trace(mouseX, mouseY); 
} 

:マウスの新しいランダムな場所は、私の解決策は、このだったので、常に離れた最後のマウス値60から70 +またはそうピクセルように見えました値が大幅に異なる場合は(50)、マウスが画面から外れていると想定され(マウス)、マウスが画面に戻り、再び動きを追跡できるようになるまで文字の位置は更新されません。

も、それは誰かが速く50個のピクセルよりもマウスを移動することは可能である(それは次の移動のために遅れ、その場合には)が、私はその速く行くことになりそう作っていたゲームを与えられました。

関連する問題