Skip to main content

Posts

Showing posts from November, 2009

[AS3] Data Binding in AS3 project

使用 Flex 開發過一陣子後,對於 [Bindable] 這個懶人 tag 有說不出的喜愛,然而在 Flash 中利用 Proxy 其實也可以達到相同的功用...但是 Flex SDK 免費擺在那邊不好好使用太對不起自己了...

在參考了 Ticore's Flex 2 Bindable Metadata Tag 背後實際作用 ( Ticore 萬歲!!),其實只需要將 Flex SDK frameworks/libs/framework.swc 包加到 Flash library 下,就可以使用 Flex 的 Binding 機制來達到綁定。前提是提供綁定的 host 屬性需要有 [Bindable] 才有作用,所以下面範例無法直接將 txt.text 與 txt1.text 綁定,需要透過 [Bindable] string:String 來做中介。

以下使用 FlashDevelop or Flex Builder 來編寫:

package {
import flash.display.Sprite;
import flash.events.Event;
import flash.text.TextField;

import mx.binding.utils.BindingUtils;

[SWF(width='400', height='300', backgroundColor='#ffffff', frameRate='30')]
public class TestBindable extends Sprite
{
public var input:TextField;

[Bindable]
public var string:String = "";

public function TestBindable()
{
if( stage ){
init();
}else {
addEventListener( Event.ADDED_TO_STAGE , init );
}
}
private function init(event:Event = null):void{
if( event ) removeEventList…

[Flex] 3.4 SDK HttpService responder bug

Reference: http://twitter.com/sectore/status/3605078853

本篇用來筆記用,
在使用 Flex 3.4 SDK 的時候如果你有使用到 HttpService 利用 Responder 置入 result and fault function 時,你應該會發現 result 會被 call 兩次。

參考 Jens Krause「推」上的解法:
public function callService():void
{
// call the service
service=new HTTPService();
service.url=yourUrl;
var token:AsyncToken=service.send();
token.addResponder(new Responder( result, fault));
//重點是這句
service.addEventListener( ResultEvent.RESULT , emptyResult );
}
public function emptyResult(e:Event):void{}
這樣就可以解掉囉~~