前面講了“圖”和“聲”的一般調理,這節我們開始琢磨“字”,要說這“字”,大號叫文本, 還有三種類型:靜態文本、動態文本和輸入文本,下面我們就把這三樣捏到一起作個綜合練習實例。
源文件下載
>>>>>點擊查看動畫效果<<<<<
實例2-3打字效果
( 1 )基本思路① 建一個輸入文本,用來鍵盤輸入或復制粘貼一段文字。
② 為輸入文本制作一滾動條,上下各一個按鈕,中間一個“滑塊”,“滑塊”要和文本同步垂直變動,并相互作用,編寫這段腳本可是夠累人的。
③建一個動態文本,根據指令來顯示輸入文本的內容。
④ 建一個按鈕,令動態文本開始“表現 ” 。
⑤ 在幀上寫腳本,讓動態文本的按咱要求“演”。
⑥ 上面只是說到要用輸入文本和動態文本,不是說要用 3 樣嗎, 那在就在按鈕上輸入“打字”倆字,別看字少,可是用到了一種類型,這下齊了。
?。?2 )新知識點my_txt.scroll // 定義文本在文本字段中的垂直位置。
my_txt.maxscroll;// my_txt.scroll 的最大值。
my_str.substring// 返回一個字符串。
arguments.length// 實際傳遞給函數的參數數量。
Math.random()// 返回一個 0-1 之間的隨機數。
Math.ceil()// 對數字或表達式按進位法取整。
(3)實例說明
① 建一輸入文本,變量名: shuru 。
② 建一動態文本,變量名: shuchu 。
③從公用庫中拖入一按鈕,點開并插入“打字”二字。
④ 為輸入文本作一滾動條,包括上下按鈕和一個類型為 MC 的“滑塊”。
?。?4 )編寫動作腳本
①在“打字”按鈕上輸入:
on (press) {
Play();
}
?、?在滾動條的向上按鈕上輸入:
on(release){
shuru.scroll-=1;// 可顯示的文本垂直下移一個單位,即向上多看一行。
}
③ 在滾動條的向下按鈕上輸入:
on(release){
shuru.scroll+=1;// 可顯示的文本垂直上移一個單位,即向下多看一行。
}
?、?在滾動條的“滑塊”上輸入:
onClipEvent (load) {
shang = this._y;// 設此變量作為“滑塊”的初始垂直位置
zuoyou = this._x;// 設此變量作為“滑塊”的初始水平位置
N = 30; // 設此變量作為“滑塊”的垂直位置變動的最大值,本例中其實是一以常量狀態存在。
t = 0; // 設此變量作為 if 語句的判斷條件
}
onClipEvent (enterFrame) {// 按幀頻循環執行以下動作
if (t == 0) { 滿足條件執行此大括號內動作
Ni = (N+2)*(_root.shuru.scroll-1)/(_root.shuru.maxscroll);// 用 N 乘于當前顯示行占總行數的比例,再賦值給變量 Ni ,其中的“ -1 ”和“ +2 ”是為較準確顯示而加的修正值?! ?/p>
this._y = shang+Ni;// 此 MC 的垂直位置依 Ni 而變化。
} else {// 不滿足條件執行此大括號內動作
Ni = this._y-shang; 將當前垂直位置與原始位置的差賦值給 Ni
_root.shuru.scroll = Ni/N*(_root.shuru.maxscroll)+1;// 用 Ni 占 N 的比例乘于文本的總行數的值賦予現實顯示的行數。
}
}
on (press) {
nextFrame();// 轉到下一幀,這里是為要取得的不同的外觀效果。
t = 1;// 為 if 語句判斷條件的變量賦新值
startDrag(this, true, zuoyou, shang, zuoyou, shang+N); // 鼠標拖動 MC ,并限制在括號的設定范圍內。
}
on (release,releaseOutside) {
prevFrame();// 轉到上一幀
stopDrag();// 停止拖動
t = 0;// 為 if 語句判斷條件的變量賦原值
}
?、菰?ldquo;滑塊”上的第1幀上輸入:
stop();
?、拗鲿r間軸第 1 幀上輸入:
i = 0;
shuru = "";
nextFrame(); //變量初始化后轉到下一幀停止。
⑦ 主時間軸第2幀上輸入:
shuchu = shuru.substring(0, i)+"_";// 將輸入文本的字符串變量的的第 1 個到第 i+1 個的字符,同時在后面加個"_"組成的一個字符串賦給動態文本的變量。
gotoAndPlay(Math.ceil(Math.random()*4)+2); 避免死板顯示,將播放頭的跳轉位置用隨機函數值來確定。
shuchu.scroll = shuchu.maxscroll;// 設定顯示行,使得動態文本框顯示滿后向上滾動。
i++;
if (i>shuru.length) { 當變量 i 大于輸入文本的總字符數時,執行以下命令。
stop();
i = 0;
}
⑧ 主時間軸最后一幀上輸入:
gotoAndPlay(2);
?。?5 )要點分析①這里的輸入文本“滾動條”實現了交互性功能,“滾動條”由 3 部分組成,上下各一個按鈕,中間一個“滑塊”,當用上下按鈕改變文本的垂直位置時,中間的滾動條自動變化,當按住“滑塊”的時候 可以在確定的范圍呢拖動,文本位置也相應變化,其工作原理就是用一變量判斷后執行,取文本位置后改變“滑塊”位置,還是取“滑塊”位置后改變文本位置。
②shuchu = shuru.substring(0, i) ,是變量“ shuchu ”取得截自變量“ shuru” 的一段字符串, substring() 在小擴號里的參數,前一個是字符串中字符的索引號,從 0- — n-1 , n 是字符總數,如這個字符串有 5 個字符,索引號則是 0 、 1 、 2 、 3 、 4 ,這和以后要學習的數組索引是一樣的;后一個參數是要獲取的字符個數,如字符串有 5 個字符,,當此參數設定為 5 則全部獲得,因為此實例用變量 i 作為參數,且是以 1 為步長遞增的 , 每循環一次就多顯示一個字,看的效果是象打出一個新字,其實是 m+1 個字段長的字符串覆蓋了 m 個字段長的字符串。
③ gotoAndPlay(Math.ceil(Math.random()*4)+2) ,其中的 (Math.ceil(Math.random()*4 就是要取得一個 0-4 的隨機整數,過去我們用 random(value) ,但人家軟件說不鼓勵在 Flash 5 中使用,咱就跟著新的走。添點麻煩來 gotoAndPlay ,就是為有點快慢不一樣,象打字那回事似的。
?。?6 )小結本講介紹了輸入文本和動態文本,應該說講了普通的使用方法,好多的設置都是在屬性面板里完成的,只是用腳本控制字符文本的顯示,而全 AS 及更復雜控制就要用 TextField 類。這個實例的輸入文本滾動條對學習腳本編寫應該有一定的啟發作用,其實用組件有現成的,因為現在要用我們前面學到的知識來完成,才要這樣寫,而且對今后的應用也可能有幫助,同樣的原理可以控制影片和音樂的進度等。
?。?7 )課后練習修改源文件,讓動態文本不是一個字一個字的顯示,而是一行行顯示,范例效果:
>>>>>點擊查看動畫效果<<<<<
練習2-3
這篇教程為“Flash AS 實例進階教程”的一部分。查看全套教程>>>>。
新聞熱點
疑難解答