Nov 20, 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 ) removeEventListener( Event.ADDED_TO_STAGE , init );
var txt:TextField = new TextField;
input = new TextField;
input.type = "input";
input.border = true;
input.y = 50;
addChild( txt );
addChild( input );
input.addEventListener( Event.CHANGE , onChange );
BindingUtils.bindProperty( txt, "text" , this, "string" );
}
private function onChange(event:Event):void{
string = input.text;
}
}
}

Nov 10, 2009

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

這樣就可以解掉囉~~

[App] 國道計程收費速算器 2.0

之前的版本跟目前 國道計程官網 所列資料誤差很大,這支 App 也一直有人在使用,所以為了答謝愛用者只好做了一次大更新,因為對 CoronaSDK scrollView widget 有點怨言,所以 iOS 版本採用 Swift3 重寫了一遍,不過 Android 版本還是維...