1

何らかの理由で、関数の外部で値が更新されていません。「plus」というインスタンスのボタンを作成し、ムービークリップ「topArrow」を常に上に移動しようとしています。ブール値はこれをトリガーする簡単な方法だと思いましたが、関数の外部では更新されていません。どうしてこれなの?

import flash.events.Event;
import flash.events.MouseEvent;

var speed:Number = 1;

plus.addEventListener(MouseEvent.MOUSE_DOWN, arrow_up);
plus.addEventListener(MouseEvent.MOUSE_UP, arrow_stop);
minus.addEventListener(MouseEvent.MOUSE_DOWN, arrow_down);
minus.addEventListener(MouseEvent.MOUSE_UP, arrow_stop);

var move_up:Boolean = false;
var move_down:Boolean = false;



function arrow_up(event:MouseEvent):void
{
    trace("button pressed");
    move_up = true;
}


function arrow_stop(event:MouseEvent):void
{

    move_up = false;
    move_down = false;
}

function arrow_down(event:MouseEvent):void
{

    move_down = true;
}

while (move_up==true)
{
    topArrow.y +=  speed;
}

while (move_down==true)
{
    topArrow.y -=  speed;
}

if(move_up)
{
    trace("true");
}
4

2 に答える 2

1

それらのwhileループは怖いですが、move_upがtrueになると、そのループに入り、終了することはありませんか?

代わりに、ムービークリップをアニメーション化するために、次のようなことを行います。

var speed:Number = 1;

plus.addEventListener(MouseEvent.MOUSE_DOWN, arrow_up);
plus.addEventListener(MouseEvent.MOUSE_UP, arrow_stop);
minus.addEventListener(MouseEvent.MOUSE_DOWN, arrow_down);
minus.addEventListener(MouseEvent.MOUSE_UP, arrow_stop);

stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);

var move_up:Boolean = false;
var move_down:Boolean = false;

function arrow_up(event:MouseEvent):void
{
    trace("button pressed");
    move_up = true;
}

function arrow_stop(event:MouseEvent):void
{
    move_up = false;
    move_down = false;
}

function arrow_down(event:MouseEvent):void
{
    move_down = true;
}

function onEnterFrame(event:Event):void
{
   if(move_up)
       topArrow.y += speed;
   else if(move_down)
       topArrow.y -=speed;

   if(move_up)
   {
      trace("true");
   }
}
于 2013-03-03T04:53:34.703 に答える
-1

バイナリを逆コンパイルし、move_upsetter関数を見てください。

于 2013-03-04T12:49:45.303 に答える