簡體   English   中英

as3布爾變量不會超出函數范圍

[英]as3 boolean variable won't pass out of function

由於某種原因,我的值未在函數外部進行更新。 我試圖制作一個按鈕,例如“加號”,將影片剪輯“ 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");
}

那些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");
   }
}

反編譯二進制文件並查看move_up setter函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM