Luar's Flash Playground:應多使用Databinding Classes
應多使用Databinding Classes (30-11-2003)
雖然Component v2提供了Databinding Panel,可以方便地、視覺化地控制Databinding,但我認為在製作大型應用程序時,系統中包含了很多Components,如果沒有良好的文檔記錄下,程序的維護是十分困難,往後開發人員難以追蹤那個Component跟那個Component有Databinding,這樣會構成一個不良編程習慣危機。因此,我習慣多用ActionScript編寫Databinding,讓Databinding過程根據系統的狀態而進行,在往後維護更容易追蹤。以下是一個非常簡單的Databinding例子:

NumberFormatter.as,在Databinding中作數據自定格式化:

class NumberFormatter {
  // Format a Number, return a String
  function format(rawValue) {
    var returnValue;
    var strArray = new Array('one', 'two', 'three');
    var numArray = new Array(1, 2, 3);
    returnValue = 0;
    for (var i = 0; i < strArray.length; i++) {
      if (rawValue == numArray[i]) {
        returnValue = strArray[i];
        break;
      }
    }
    return returnValue;
  }
}

databind_try.fla,包括一個NumericStepper和TextInput,NumericStepper改變時,TextInput會顯示NumericStepper的文字化數值(Library中要包括DataBindingClasses):

import mx.data.binding.*;
var x:NumberFormatter;
var customBinding = new Binding({component:stepper, property:"value", event:"change"}, {component:textInput, property:"text"}, {cls:mx.data.formatters.Custom, settings:{classname:"NumberFormatter"}});

[範例]

補充
Databinding Panel只對在Frame 1的Components有效,而且當Components由一個FLA Copy到另一個FLA時,Databinding的設定是不能Copy到另一個FLA!基於以上2點,我更加建議應多使用Databinding Classes。
本文章由發表。
意見
"; print "沒有意見。
 "; } ?>
  • 補充說明一下好了...讓不知道的網友可以了解...
    var x:NumberFormatter是為了讓編譯成swf時把NumberFormatter這個類別編譯進來,因為如果程式沒使用到該類別不會include進來

    kyle於30-11-2003發表

  • 支持我寫個教程
    目的:有兩個文本框,你在一個文本上打的字母會綁定到另外一個文本框裡面,也就是說你在一個文本框輸入字母, 另外一個文本框會出現相同的字母。
    1. 首先選擇菜單欄的Window->Other Panels->Common libraries->Classes彈出library面板。
    2. 從中拖入一個DataBingClasses到場景中, 然後刪除。這樣這個組件就保持到這個fla文件的庫裡面了。
    3. 在場景中加入兩個TextInput組件, 一個名為src_txt,另一個名為dest_txt。src_txt為輸入框,dest_txt是展示文本框。
    4. 在fla主時間軸第一幀加入如下代碼:
    import mx.data.binding.*;
    var src = new EndPoint();
    src.component = src_txt;
    src.property = "text";
    src.event = "change";

    var dest= new EndPoint();
    dest.component = dest_txt;
    dest.property = "text";

    new Binding(src, dest);
    5. 按Ctrl+Enter測試效果如圖:

    假如你要實時測試數據綁定的情況,你可以在原來的代碼上加上:
    _global.__dataLogger=new mx.data.binding.Log();
    然後再測試,就會看到output窗口會彈出綁定的像下面那樣的信息。
    11/17 12:28:14 src_txt: Data of property 'text' has changed. true.
    11/17 12:28:14 Executing binding from src_txt:text:- to dest_txt:text:-
    11/17 12:28:14 Assigning new value 'A' (String)
    11/17 12:28:20 src_txt: Data of property 'text' has changed. true.
    11/17 12:28:20 Executing binding from src_txt:text:- to dest_txt:text:-
    11/17 12:28:20 Assigning new value 'AO' (String)

    AOL於14-12-2003發表

  • 我懷疑 FLash 是否適合開發大型應用程序?

    首先,站長已經說了,發布時的時間是一個問題,如果需要測試,很耗時間!

    然後是Flash Player 的運行,一般普通的PC運行運行Flash非常的吃力,尤其是在嵌套多個MC的時候,運行很吃力;

    這些都給Flash的推廣帶來了一定的困難。

    由ABC於29-03-2004發表

同組文章