建立 Flash 隨機動態文字效果
文∕趙英傑
昨天上午收到簡訊,才知道當天晚上是除夕…果真是歲月如梭。底下是本文的影片成品,共有兩種類似的效果:
上面的影片會在隨機切換顯示不同的字元一段時間後,逐一呈現用戶輸入的文字。底下先說明隨機顯示不同字元的方法。隨機呈現字元要用到把ASCII編碼轉換成對應字元的指令,其語法如下:
String.fromCharCode(ASCII編號)
例如,底下的敘述將傳回 ‘a’:
String.fromCharCode(97);
因此,只要指定 97 到 122 之間的亂數,就能隨機產生 a 到 z 的字元。採用 setInterval() 定時迴圈函數(請參閱《碼上就會:Flash 8專業版ActionScript進階應用》一書第五章「認識setInterval()函數」一節),在動態文字欄位快速變換單一隨機字母的製作步驟如下:
1. 開啟空白影片檔,並把影格速率提升到 30fps 或更高。
2.
使用文字工具在舞台上建立一個動態文字欄位,將欄位的實體名稱設定成 lcd_txt。
3.
在主舞台新增一個圖層,命名為 actions。
4.
在 actions 圖層的第一格影格,輸入底下的程式碼:
// 每隔 30ms 呼叫 randomType 自訂函數 id1 = setInterval(radomType, 30); function radomType() { var i:Number = random(26); // rndChar 將儲存‘a’到‘z’之間的字元 var rndChar = String.fromCharCode(i+97); lcd_txt.text = rndChar; }
5. 按下Ctrl和 Enter 鍵,即可看見快速變換的單一隨機字母。
本文的完成影片檔動用了兩組setInterval()迴圈,一個用來處理打字的間隔時間,筆者將它設定成 250ms,另一個是快速變換隨機字母的迴圈。影片主程式的架構圖如下:
完整的程式碼和說明,請參閱附件的actions圖層第一格關鍵影格。
請按此連結,下載影片範例原始檔。
請問:如果我只想要把這個作成movie clip,出現特定的文字,而不需要再另外輸入文字&btn,該怎嗎做呢? 🙄 Thank You!
那就把欄位資料改用變數設定即可。
小的學識淺薄,看不太懂~不知道要怎麼改~可以再請您詳細解說嗎?
把程式第17行改成:
init();
第27行改成你需要的英文字串,例如 “hello world!”:
finalStr = “hello world!”;
按鈕和文字欄位用不到了,可以刪除。
非常感謝老師的詳細教學,效果真是太棒了~感激不盡!!!
不客氣 😉
😯
有兩種樣式,代碼怎么之是第一種?我喜歡第二種哦。
希望老師提供
hi clily:
謝謝提醒,這是第二種樣式的原始檔。
jeffrey
不错哦!
刚输入了英文,
动态文字还是挺可爱的!哈哈
有空再来!
請問老師亂數可以是中文嗎?
可以把一堆中文字先存入陣列,或者透過String(字串)類別的charCodeAt()和fromCharCode()方法來,分別取得特定字元的UTF-8編碼,以及從編碼轉成實際的字元。
例如,底下的敘述將在輸出面版顯示utf8_str變數中的第一個字的編碼值,並且將該數字轉成文字:
var utf8_str:String = “一鶴”;
var utf8Code:int;
// 求utf8_str字串裡的第一個字元的UTF8編碼值
utf8Code = utf8_str.charCodeAt(0);
trace(“字元的編碼:” + utf8Code);
trace(“解碼後的文字:” + String.fromCharCode(utf8Code));
中文字(包含繁體、簡體和日文漢字)的UTF-8十進位編碼的範圍,應該是介於19968 ~ 40372 之間,因此,底下的程式將能隨機顯示一個漢字:
var utf8Rnd:int;
utf8Rnd = Math.floor(Math.random() * 20404) + 19968;
trace(“隨機編碼值:” + utf8Rnd + “,漢字:” + String.fromCharCode(utf8Rnd));
🙂
請問如果要保留文字與文字中間的空白要怎麼做呢
在文字之間連結一個 ‘ ‘ (空字串)即可。