2011-11-12 84 views
0

可以说我有一个可以是0(假)或1(真)。有没有办法检测变量何时变为1(真)。我想要一个声音,只要它变成真实,但只有一次。变量变化检测动作3.0

感谢您的帮助!

回答

6

还有就是信号变化值没有内置的机制,但是你可以很容易地实现这个你自己:你的变量创建一个setter函数,并把它称之为playSound()方法,每当值设置为1

private var _myVariable : int = 0; 

public function set myVariable (n:int) : void 
{ 
    _myVariable = n; 
    if (n == 1) playSound(); 
} 

如果你打算在更大规模上做这样的事情,你可能也想看看Observer pattern

+0

在这里使用布尔数据类型不是更好吗? – TheDarkIn1978

+0

根据值来自哪里,它可能不会:例如,当您从XML属性传入值时,没有实际的布尔值,但只有字符串表示。那么建议使用“0”和“1”而不是“真”和“假”。但是,这并不会改变有关通知问题的任何内容。 – weltraumpirat

0
+0

BindingUtils对于用[Bindable]元标记前缀的变量很有用。它只被Flex编译器使用,并在内部为标记为[Bindable]的变量生成setter和getter。 – catholicon

+1

我个人更喜欢在这种情况下手动添加事件派发给变量设置器,但是'BindingUtils'在.as类文件中工作正常,并且是这种情况下唯一的as3选项 – www0z0k