AS3 如何定义一个整数然后在函数中使用它

AS3 How to define an integer then use it in a function

我正在为移动设备制作一个动画,当设备倾斜时,该动画会在屏幕上移动图像。这是我用来实现它的代码:

var fl_Accelerometer:Accelerometer = new Accelerometer();
fl_Accelerometer.addEventListener(AccelerometerEvent.UPDATE, fl_AccelerometerUpdateHandler);
function fl_AccelerometerUpdateHandler(event:AccelerometerEvent):void
{
    Image1.x -=  event.accelerationX * 300;
    if (Image1.x < 56.75)
    {
        Image1.x = 56.75;
    }
    else if (Image1.x > 1856.75)
    {
        Image1.x = 1856.75;
    }
}

我希望能够在单击菜单屏幕上的不同按钮时打开和关闭加速度计输入。

我想的是在我点击任何按钮之前有一个等于 1 的整数;所以我做了 (accelerationX*300)*[that integer] 并启用了加速度计。然后我单击 'disable' 按钮,1 变为 0,加速度计被禁用。然后点击另一个按钮,整数又变成了1。

我该怎么做,有没有更简单的方法?

What I thought was to have an integer equal to 1 before I click any buttons;

A boolean 会是更好的选择,但你并不真的需要额外的变量

要在处理函数中禁用加速度计,只需删除其中的侦听器即可:

fl_Accelerometer.removeEventListener(AccelerometerEvent.UPDATE, fl_AccelerometerUpdateHandler);

这个有效:

var AccControl:int;
AccControl = 1;
{

MenuScreen.ToggleOffAcc.addEventListener(MouseEvent.CLICK, AccOff);
function AccOff(event:MouseEvent):void
{
    AccControl = AccControl + 1;
}

MenuScreen.ToggleOnAcc.addEventListener(MouseEvent.CLICK, AccOn);
function AccOn(event:MouseEvent):void
{
    AccControl = AccControl - 1;
    MenuScreen.ToggleOnAcc.visible=false;
}
}

var fl_Accelerometer:Accelerometer = new Accelerometer();
fl_Accelerometer.addEventListener(AccelerometerEvent.UPDATE, fl_AccelerometerUpdateHandler);

function fl_AccelerometerUpdateHandler(event:AccelerometerEvent):void
{
    Street.x -=  ((event.accelerationX * 300)* AccControl);

    if (Street.x < 56.75)
    {
        Street.x = 56.75;
    }
    else if (Street.x > 1856.75)
    {
        Street.x = 1856.75;
    }
}

@null 和往常一样正确...

A boolean would be the better choice, but you don't really need an additional variable

您可以声明

var accControl:Boolean = true; // Variables names should start with a lowercase letter

那么,你改成这样:

accControl = !accControl; // if true => false if false => true

或者对于整数,你可以这样做

var accControl:int = 1;

然后

accControl *= -1; // if 1 => -1 if -1 => 1

如果您有很多按钮,布尔值可能是更好的选择。

即使是 null 的代码也是更干净的 AMO,我希望这可能对某些人有所帮助。

Flash 中的一个示例,它在库中包含一个 CustomButton:

tl, 博士;

var marginX:int = 20;
var spacerX:int;
var accControl:Boolean = true; // Variables names should start with a lowercase letter
var accControlInt:int = 1; // Variables names should start with a lowercase letter
var buttons:Vector.<SimpleButton> = new Vector.<SimpleButton>();
function addButtonsFromLib():void{
    for(var i:int=0 ; i<10 ; i++){
    buttons.push(new CustomButton);
    addChild(buttons[i]);
    buttons[i].name = "customButton_" + (i+1)
    spacerX = buttons[i].width;
    buttons[i].x = marginX + spacerX*i + buttons[i].width*i;
    buttons[i].y = 20;
    buttons[i].addEventListener(MouseEvent.MOUSE_DOWN,onClickInt);
    buttons[i].addEventListener(MouseEvent.MOUSE_DOWN,onClickBool);
    }
}
addButtonsFromLib();
function onClickBool(me:MouseEvent):void{
    accControl = !accControl; // if true => false if false => true
    trace(me.target.name + " cliqued => Boolean value is set to : " + accControl);
}
function onClickInt(me:MouseEvent):void{
    accControlInt *= -1; // if 1 => -1 if -1 => 1
    trace(me.target.name + " cliqued => int value is set to : " + accControlInt);
}