BindingUtils
- это класс в Flex SDK, поэтому другая публикация, на которую вы ссылаетесь, неприменима в вашем случае.
Чтобы добиться связывания без доступа к библиотекам Flex, вам потребуетсячтобы вручную написать диспетчеры событий и соответствующие обработчики.
Следующая статья может быть полезна для начала работы, поскольку в ней есть как Flash-only, так и Flex-код: Введение в обработку событий в AS3
Возможно, есть лучшие способы сделать это, но, по сути, вам нужно обернуть любую переменную, с которой вы хотите связать, в класс, который расширяет EventDispatcher .Например, что-то вроде:
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
должно распространятьсядо _bar
.
Это базовая схема.Я не запускал этот код, но он должен обеспечить основу для выполнения связывания.Это также должно позволить вам связываться с foo
за пределами MyClass
.
Может быть, кто-то другой может знать, может ли уже существовать хороший потомок EventDispatcher, который может уже реализовать эту функцию.Я в основном Flex-кодер, так что я не знаю ничего о моей голове.