2011-03-20 13 views
0

我很感激,如果你可以鏈接到我如何綁定AS3中的兩個變量的例子,但是一個Flash項目,而不是一個Flex項目。我發現了與Flex綁定的引用,但我認爲這應該在Flash中以某種方式可能。如何在AS3 Flash項目中綁定變量?

讓我解釋一下使用下面的例子:

每次我在某個地方的代碼更改富時

,我想欄更改爲相同的值。

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 
    } 
} 

謝謝。

P.S. 我發現這篇文章,但無法弄清楚如何使用它。 How do I use Flex's Binding in a Flash AS3 project

回答

-1

你可以通過使用getters和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; 
    } 
} 
+0

我希望跨類綁定。我給這個帖子簡化了這個例子。在我的項目中,變量處於不同的類別中。今天,我通過監聽來自第一個變量的事件來跟蹤更改。 – RaamEE 2011-03-21 05:40:35

+0

好吧,似乎綁定變量僅限於Flex項目。任何最後的構想將不勝感激 – RaamEE 2011-03-21 11:51:15

1

BindingUtils是在Flex SDK,這就是爲什麼你鏈接到其他職位是不是適合你的情況的一類。

要在不訪問Flex庫的情況下實現綁定,您必須手動編寫事件調度程序和相應的處理程序。

下面的文章可能是讓你開始有幫助的,因爲它具有閃存只和Flex代碼: Introduction to Event Handling in 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

這是基本輪廓。我沒有運行這個代碼,但它應該提供完成綁定的基礎。這也應該允許您綁定到MyClass之外的foo

也許別人可能知道是否可能已經有一個EventDispatcher的好後代,它可能已經實現了這個功能。我主要是一個Flex編碼器,所以我不知道我的頭頂上有什麼。