由于某种原因,我的值没有在函数之外更新。我正在尝试制作一个按钮,例如“加”,不断向上移动电影剪辑“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");
}
答案 0 :(得分: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");
}
}
答案 1 :(得分:-1)
反编译二进制文件并查看move_up setter函数。