切换布尔问题

时间:2010-09-11 23:58:08

标签: actionscript boolean toggle

此代码是用简单的ActionScript编写的,但我假设我的这个问题会出现在所有具有布尔数据类型的语言中。

我只是单击舞台,以便我的布尔变量反转其值,而不是跟踪/打印/记录它的新值。但是,它总是跟踪真实,而不是在每次鼠标点击时在true和false之间切换。

我做错了什么?

var myBool:Boolean;

stage.addEventListener(MouseEvent.CLICK, mouseClickHandler);

function mouseClickHandler(evt:MouseEvent):void
    {
    changeBoolean(myBool);
    }

function changeBoolean(boolean:Boolean):void
    {
    boolean = !boolean;
    trace(boolean);
    }

2 个答案:

答案 0 :(得分:5)

您正在将值传递给函数,而不是引用。这意味着你的changeBoolean函数中的boolean值是从myBool变量中复制的,所以当你在函数内部更改它时,它并没有真正改变myBool变量。基本上有两种解决方案:

  1. 将函数更改为不接受参数,并在其中更改myBool变量或
  2. 更改函数,使其返回布尔参数,并在调用函数时,将myBool值设置为函数的结果

答案 1 :(得分:4)

在函数changeBoolean中,您正在更改boolean的值(顺便说一下,名称很差 - 尽量避免使用内置类型命名冲突,即使使用不同的大小写)参数。这在该功能之外没有任何影响。

您想要更改myBool(我称之为.Net或Java中的类字段)的值。

function mouseClickHandler(evt:MouseEvent):void
    {
    myBool = !myBool;
    trace(myBool);
    }

...就是我要做的事情(再一次,对ActionScript有一种天真的理解)。

相关问题