天才教育網(wǎng)合作機構(gòu) > 設(shè)計軟件培訓(xùn)機構(gòu) > Flash培訓(xùn)機構(gòu) >

東莞設(shè)計培訓(xùn)網(wǎng)

歡迎您!
朋友圈

400-850-8622

全國統(tǒng)一學(xué)習(xí)專線 9:00-21:00

位置:設(shè)計軟件培訓(xùn)資訊 > Flash培訓(xùn)資訊 > 體驗Flash MX(5):網(wǎng)絡(luò)數(shù)據(jù)和文本相關(guān)操作

體驗Flash MX(5):網(wǎng)絡(luò)數(shù)據(jù)和文本相關(guān)操作

日期:2005-12-24 00:00:00     瀏覽:197    來源:東莞設(shè)計培訓(xùn)網(wǎng)

  首先,對時刻在我身邊的網(wǎng)絡(luò)朋友們和經(jīng)常來信鼓勵我的網(wǎng)友們表示感謝。我會堅持下去,并寫出尊重Flash MX的名字的系列文章。

  Flash MX在Macromedia的MX戰(zhàn)略方向的重視使得其開放式的結(jié)構(gòu)可以應(yīng)用于更多的網(wǎng)絡(luò)內(nèi)容和開發(fā)應(yīng)用,今天,我們針對新提升的網(wǎng)絡(luò)數(shù)據(jù)和文本相關(guān)操作進行解析。

  TextField對象

  新的TextField對象是從Object對象繼承而來,使得在Flash中動態(tài)建立文本的童話變成現(xiàn)實,而這一些你只要從MovieClip.createTextField開始(這條語句想必使用頻率非常的高,所以我把格式寫出來): MovieClip.createTextField(Instance名稱,深度,初始x軸位置,初始y軸位置,初始寬度,初始高度);

  通過MovieClip的createTextField方法,你將可以動態(tài)的在程序運行期間建立文本區(qū)并可設(shè)置其屬性和方法:

  createTextField("txt",++dpt,80,100,100,200);
  txt.wordwrap=true;
  var i=30;
  while (i--) txt.text+="rice...";

  通過這行代碼,我們在程序運行期動態(tài)建立一個Instance名稱為txt的文本區(qū)并置于第1層深度,規(guī)定其初始位置在(80,100),高200寬100;這個“筐”做好以后,我們可以往里面放東西,但是我們在放之前,我們需要規(guī)定它的另一個屬性wordwrap,這個屬性的作用相當(dāng)于規(guī)定了你的筐有沒有封邊,如果初始值為false,那么這個“筐”是失敗的,只可以當(dāng)作“席子”;隨意我們規(guī)定了這個“筐”封邊,并塞入30“斤”大米。試運行下結(jié)果。(如圖1,阿,看起來到真像大米筐……)

(圖1)

  成功的*步邁開了之后,讓我們對上面丑陋的大米筐裝修一下。

  createEmptyMovieClip("mc",++dpt);
  with (mc) {
   createTextField("txt",++dpt,80,100,100,100);
   txt.putRice=function(rice){
    if(rice){
     txt.text+=".";
     arguments.callee(--rice)}return;
    };
   txt.border=1;
   txt.multiline=1;
   txt.background=1;
   txt.wordWrap=1;
   txt.putRice(254);
   txt.putRice(36);
  }

  由于TextField是MovieClip的方法,所以我們出于學(xué)習(xí)而產(chǎn)生一個空的MovieClip來裝這個文本區(qū);程序運行后動態(tài)產(chǎn)生一個文本區(qū),并有一個邊框和白色的背景,*用自定義方法putRice裝載“大米”,由于Flash MX的遞歸調(diào)用最多只可以支持256層(0-255),所以我們還不能一下子裝載300斤,只能分兩次裝(254+36),*形成的結(jié)果如下:(圖2)

(圖2,看起來好整齊的大米,其實多余的部分已經(jīng)漏到地低下去了……)

  嗯……這就結(jié)束了?我這個人Bad Mind,總想搞搞惡作劇,我讓我做的textField米筐進行物理性破壞測試,讓其高度(或?qū)挘┬∮谧煮w的最小高度后……發(fā)現(xiàn)Bug一個,textField失去了原有的位置和高、寬屬性被擠到了屏幕的邊緣,最搞笑的就是這個測試結(jié)果……讓我們加入如下代碼并觀察(圖3)

  createTextField("txt",++dpt,80,100,100,3);
  trace(txt._x);
  trace(txt._y);
  trace(txt._width);
  trace(txt._height);
  trace(txt.textwidth);
  trace(txt.textheight);
  txt.wordwrap=1;
  var i=30;
  while (i--) txt.text+="rice...";

(圖3,倒……y可是100耶,寬也是100耶,沒辦法,把我的筐撐壞了……米撒了一地)

  TextFiled的簡單應(yīng)用

  剛做了個米筐例子,看起來文本區(qū)操作還有些用途,可是僅僅這樣可不夠……Flash MX中新的文本區(qū)還是有很大的用途的。

  例如我們做一個在線用戶輸入姓名和密碼的簡單應(yīng)用,輸入如下代碼:

  createTextField("txtUser",++dpt,80,100,100,20);
  createTextField("txtPass",++dpt,80,150,100,20);
  txtUser.type=txtPass.type="input";
  txtUser.border=txtUser.background=1;
  txtUser.bordercolor=txtPass.bordercolor=0x776655;
  txtPass.border=txtPass.background=1;
  txtUser.autosize=txtPass.autosize="center";
  txtUser.text=txtPass.text+=" ";
  txtPass.password = 1;
  txtUser.tabIndex=1;
  txtPass.tabIndex=2;
  txtUser.tabEnabled=txtPass.tabEnabled=1;
  txtUser.tabChildren=txtPass;

  啊……看起來亂七八糟,但是卻十分好理解,F(xiàn)lash MX中允許用戶自定義TextField的很多屬性,而對其操作更是考慮周到;我們首先定義兩個類型為輸入文本的TextField txtUser和txtPass,定了一基本的背景邊框等樣式屬性后,我們用autosize屬性讓文本自動縮放,這樣在用戶輸入的的時候十分的動感的,而第2個文本txtPass需要用戶的內(nèi)容為隱藏,所以把它的password屬性設(shè)為true;接著給這兩個文本初始化字符,讓他們看起來不那么狹窄;*用用到的是tabIndex,它是一個存儲當(dāng)前需要table鍵換焦點文本的數(shù)組,通過正整數(shù)來區(qū)分每個要切換的文本,而你如果你要是用到這個功能,文本區(qū)的tabEnabled必須是true,否則無效,而tabChildren屬性是新加入的屬性,我們可以設(shè)置/獲取其內(nèi)部的子文本對象。測試,你可以看到一個用戶輸入界面,這一切的制作過程是不需要你動任何鼠標(biāo)操作的。(如圖4)

(圖4,哈……我的密碼長度恐怖吧)

  但是,這個tabIndex和selection有直接的沖突。當(dāng)你設(shè)置了tabEnabled和tabIndex后,如果要使用selection.setFocus(txtUser);這樣的看上去什么錯誤都沒有的代碼,將會產(chǎn)生一個內(nèi)部優(yōu)先級錯誤,將無法有效使用tab鍵來切換文本。

  寫到這里,通過很多例子我們再次證明了在Flash MX中可以完全脫離鼠標(biāo)并能完成很多同樣甚至更酷的效果,而此時,F(xiàn)lash MX的陽光射線才不過是上午10點半,更多的功能還等待我們?nèi)ヌ剿鳌?/P>

  源文件:

如果本頁不是您要找的課程,您也可以百度查找一下: