Luar's Flash Playground:應多使用Databinding Classes
新聞(100)
觀點或評論(93)
Flash書(63)
教程(65)
Design Patterns(3)
FlashCom筆記(45)
Flash Remoting筆記(27)
Flex筆記(11)
Flash Lite筆記(14)
PHP資訊(22)
Ajax筆記(9)
習作(47)
組件(15)
酷站(31)
學習資源(28)
書籍推介(15)
本站與我(90)
RSS瀏覽器
聯絡
熱愛鑽研
Ajax
ActionScript
Flash
Flash Lite
Flex
Flash Remoting
FlashCom
Director
Lingo
PHP
Multiplayer Game

搜尋
VCASMO
應多使用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。
本文章由luar發表。
意見
  • 補充說明一下好了...讓不知道的網友可以了解...
    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發表

同組文章

Movable Type 3.15系統支持,Luar's Production版權所有。