Actionscript 3 AS3:布尔变量自行改变?

Actionscript 3 AS3:布尔变量自行改变?,actionscript-3,boolean,Actionscript 3,Boolean,是的,你读对了标题。看起来,布尔变量以某种方式自行切换为true。这是我唯一能解释的方法。这有可能吗?我有一个布尔值,它被设置为false,并且只能在严格的条件下更改,但是无论如何它都会被更改,以及所有其他布尔变量。对此有何逻辑解释?因为您没有提供任何代码,所以我将回答您的问题,让您能够找出是什么改变了变量 既然您提到您正在使用FlashDevelop,我将给您一个FlashDevelop特定的答案 正如注释所指出的,使用getter/setter方法将允许您在代码中设置断点。因此,不要像pri

是的,你读对了标题。看起来,布尔变量以某种方式自行切换为true。这是我唯一能解释的方法。这有可能吗?我有一个布尔值,它被设置为false,并且只能在严格的条件下更改,但是无论如何它都会被更改,以及所有其他布尔变量。对此有何逻辑解释?

因为您没有提供任何代码,所以我将回答您的问题,让您能够找出是什么改变了变量

既然您提到您正在使用FlashDevelop,我将给您一个FlashDevelop特定的答案

  • 正如注释所指出的,使用getter/setter方法将允许您在代码中设置断点。因此,不要像
    private var myBool:Boolean执行以下操作:

    private var myBool_:Boolean = false; //the actual var
    public function get myBool():Boolean { return myBool; }
    public function set myBool(val:Boolean):void { 
        myBool_ = val;
    }
    
  • 现在在flashdevelope中,在这一行上设置一个断点:
    myBool\uval。若要设置断点,请单击边沟中直线左侧(请参见屏幕截图中红点的位置)

  • 运行代码,查看堆栈面板,双击第二行。这将显示设置变量的内容


  • 更详细地解释。。。你用的是什么IDE?你在时间线上编码吗?变量不可能像那样切换…必须是某个事件。。。显示为一些代码花花公子。。。我认为你是在时间轴上编码,帧在欺骗你。不,它本身没有改变。:)如果你使用一个getter/setter,你可以在setter函数中设置一个断点,看看它什么时候被设置好。我没有附加任何代码,因为我真的怀疑这会有帮助。基本上是这样的:如果(objectsAddedToScreen==objectsrefromscreen&&bossWave&&bossDeath&&bosssolussprowned&&endWaveControl==false&&uselessVariable==false),则变量在满足这些条件后立即切换回。这是一个相当大的代码块后,但我会如果需要的话。关于getter/setter,谢谢你的提示,我正试图找出如何准确地跟踪变量的切换。这可能是一个很长的机会,但新手犯的错误是用你提供的信息做一些类似于
    if(myBool=true)
    (而不是
    =
    )的事情。这是我最好的猜测(不,布尔人不会“自己”改变),事情很快就会分崩离析)据我所知,问题出在一个未被删除的侦听器函数中。非常感谢这种方法,但由于某种原因,我的应用程序在输出后立即冻结。不管怎样,我将在将来尝试使用这种跟踪变量的方法,谢谢你的宝贵建议。