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

时间:2016-11-02 07:27:50

标签: android actionscript-3 flash

我制作动画动画,在设备倾斜时在屏幕上移动图像。以下是我用来实现这一目标的代码:

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)* [那个整数]并启用加速度计。然后我点击“停用”按钮&#39;按钮,1变为0,加速计被禁用。然后单击另一个按钮,整数再次变为1。

我该怎么做并且有更简单的方法吗?

3 个答案:

答案 0 :(得分:4)

  

在我点击任何按钮之前,我认为有一个等于1的整数;

fl_Accelerometer.removeEventListener(AccelerometerEvent.UPDATE, fl_AccelerometerUpdateHandler); 是更好的选择,但你真的不需要额外的变量

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

regsvr32 <path-to-dll>

答案 1 :(得分:2)

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

  

布尔值是更好的选择,但你真的不需要   附加变量

您可以声明

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,dr;

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);
} 

答案 2 :(得分:0)

这有效:

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;
    }
}