如何在AS3 Flash项目中绑定变量?
如果您能将我链接到一个示例,说明如何在AS3中绑定两个变量,但对于Flash项目而不是Flex项目,我将不胜感激。我找到了使用Flex绑定的引用,但我认为这在Flash中也应该是可能的 让我用下面的例子来解释: 每次我在代码中的某个地方更改foo时,我都希望bar更改为相同的值如何在AS3 Flash项目中绑定变量?,flash,actionscript-3,binding,Flash,Actionscript 3,Binding,如果您能将我链接到一个示例,说明如何在AS3中绑定两个变量,但对于Flash项目而不是Flex项目,我将不胜感激。我找到了使用Flex绑定的引用,但我认为这在Flash中也应该是可能的 让我用下面的例子来解释: 每次我在代码中的某个地方更改foo时,我都希望bar更改为相同的值 public class bindable_variables{ var foo: String; var bar: String; public function bindable_varia
public class bindable_variables{
var foo: String;
var bar: String;
public function bindable_variables()
{
//bind foo to bar so every change to foo affect bar
}
}
谢谢
附言。
我找到了这篇文章,但不知道如何使用它。
使用getter和setter可以实现同样的效果
public class bindable_variables{
private var _foo: String;
public var bar: String;
public function bindable_variables()
{
foo = "a string";
trace("bar: " + bar);
}
public function set foo(newFoo:String):void
{
_foo = newFoo;
bar = foo;
}
public function get foo():String
{
return _foo;
}
}
BindingUtils
是FlexSDK中的一个类,这就是为什么您链接的另一篇文章不适用于您的情况
要在不访问Flex库的情况下实现绑定,必须手动编写事件分派器和相应的处理程序
以下文章可能有助于您入门,因为它既有Flash only代码,也有Flex代码:
也许有更好的方法可以做到这一点,但本质上,您需要将要绑定到的任何变量包装到一个扩展的类中。例如,类似于:
public class BindableString extends EventDispatcher {
private var _value:String = '';
public function BindableString(str:String = null) {
value = str;
}
public function set value(str:String):void {
_value = str;
dispatchEvent(new Event(Event.CHANGE));
}
public function get value():String {
return _value;
}
}
然后,在其他类中,您将需要一个处理程序,例如:
public class MyClass {
public var foo:BindableString = new BindableString();
private var _bar:String = "bar";
public function MyClass() {
foo.addEventListener(Event.CHANGE, handleFooChange);
foo.value = "foo";
trace(_bar); // "foo"
}
private function handleFooChange(e:):void {
_bar = foo.value;
}
}
然后,foo
中的每一个更改都应该传播到\u-bar
这是基本的大纲。我没有运行此代码,但它应该为完成绑定提供基础。这还应该允许您在MyClass
之外绑定到foo
也许其他人可能知道是否已经有一个EventDispatcher的好后代,它可能已经实现了这个功能。我主要是一名Flex编码员,所以我不知道有什么现成的东西。我希望跨类进行绑定。我给出的例子在这篇文章中被简化了。在我的项目中,变量在不同的类中。今天,我通过监听第一个变量中的一个事件来跟踪变化。绑定变量似乎仅限于Flex项目。对此的任何最终确认将不胜感激