国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于動作腳本的文本框交互式練習題

2016-11-16 13:15:42蔣維
電腦知識與技術 2016年25期
關鍵詞:文本框

蔣維

摘要:該文介紹了在Flash中如何利用文本框和動作腳本實現(xiàn)隨機的加減乘除四則運算練習題,最后可統(tǒng)計出做題的時間以及查看練習結果等。

關鍵詞:Flash;文本框;動作腳本

中圖分類號:TP37 文獻標識碼:A 文章編號:1009-3044(2016)25-0056-03

Flash的動作腳本ActionScript(簡稱AS)為我們提供了各種命令,運算符以及對象,我們可以使用AS在Flash中實現(xiàn)許多交互功能。Flash中有三種文本類型:靜態(tài)文本、輸入文本和動態(tài)文本,靜態(tài)文本僅僅用于輸入需要顯示的文字,輸入文本用于數(shù)據(jù)的輸入,動態(tài)文本內(nèi)容根據(jù)AS的指示變化而變化。文本框除了利用Flash提供的文本工具創(chuàng)建外,還可以利用AS進行創(chuàng)建,利用文本工具只能在設計階段創(chuàng)建,比較直觀簡單,屬性設置可以利用屬性面板進行,利用AS可以在動作腳本運行期間動態(tài)創(chuàng)建,比較靈活,但使用的屬性設置只能通過代碼進行。本程序把創(chuàng)建文本的兩種方法相結合靈活的實現(xiàn)了練習題中的某些功能。

1 程序的設計與實現(xiàn)

1.1 程序?qū)崿F(xiàn)的目標

程序的主要目標是實現(xiàn)用戶能夠選擇做練習題的數(shù)目,程序根據(jù)用戶所選擇的練習題目數(shù)隨機的出加減乘除四則運算練習題。

1.2 程序主要的處理函數(shù)

1) Math.random()函數(shù)與Math.round()函數(shù):這兩種函數(shù)結合使用產(chǎn)生隨機的運算數(shù)。

2) addEventListener()函數(shù):此函數(shù)是偵聽器函數(shù)或事件處理函數(shù),本程序中用了addEventListener()函數(shù)的鍵盤事件處理和鼠標事件處理。

3) String ()函數(shù)與Number ()函數(shù):文本框中的數(shù)據(jù)是字符型數(shù)據(jù),進行四則運算時需要數(shù)字型數(shù)據(jù),利用這兩種函數(shù)可以實現(xiàn)數(shù)字和字符之間的轉換。

4) gotoAndStop()函數(shù)與stop ()函數(shù):本程序中stop()函數(shù)用來使Flash停留在當前幀,gotoAndStop()函數(shù)是用來跳轉到指定幀并停留在指定幀。

1.3 程序的設計

本程序共分為三個界面:在第一個界面上用戶可以輸入需要做的練習題的數(shù)目,只能輸入1-30之間的數(shù)值,輸錯會有提示,輸完題目數(shù)后,按開始答題按鈕進入第二個界面;在第二個界面上會先隨機出現(xiàn)第一道練習題,界面上方會顯示出共需要做幾道題,同時會顯示當前做的是第幾道題,當用戶輸完當前題目的計算結果按 enter鍵后,系統(tǒng)會自動隨機的出下一道任意類型的練習題,當最后一題做完后自動進入第三界面;在第三個界面上有兩個選擇按鈕,第一個按鈕是查看結果按鈕,點擊它可以查看所有做過的題目以及正誤判斷,第二個按鈕是重新做題按鈕,點擊它可以回到第一個界面重新開始做題,同時界面三上方會顯示出用戶做題所用的時間。

1.4 程序的實現(xiàn)過程

程序共分為三個界面,所以需要在新建的Flash文檔的時間軸面板的圖層1上創(chuàng)建三個關鍵幀,每一個關鍵幀實現(xiàn)一個界面的建立。

1) 界面一的建立

選中第一幀關鍵幀,在窗口舞臺上我們利用文本框和按鈕創(chuàng)建如下圖1的界面。

打開動作面板輸入以下代碼:

stop();

var N,tishi;

tishi=new TextField(); //生成文本域

tishi.defaultTextFormat = new TextFormat("黑體",20,0xff0000); //設置文本格式

tishi.x = 200; tishi.y = 200; //設置文本在舞臺上的位置

mb.addEventListener(MouseEvent.CLICK ,f1); //設置按鈕mb的鼠標偵聽事件

function f1(evt:MouseEvent)

{N = Number(shumu.text); //把輸入文本框中內(nèi)容轉成數(shù)字放入變量N

if (N>30||N==0) //輸入數(shù)字錯誤分支

{ tishi.text = "請輸入1-30之間的數(shù)字!"; tishi.autoSize = TextFieldAutoSize.CENTER;

addChild(tishi); gotoAndStop(1);}

else { tishi.text = ""; } gotoAndStop(2); } //輸入數(shù)字正確分支

2) 界面二的建立

選中第二幀關鍵幀,在窗口舞臺上利用文本框創(chuàng)建如下圖2的界面,界面上顯示的文字和符號皆由靜態(tài)文本框完成,如上述圖1。

打開動作面板輸入以下代碼:

var timestart;

var now:Date = new Date();

timestart = now.hours * 3600 + now.minutes * 60 + now.seconds; //記錄做題開始時間

var i=0,m,n,t,j = 0;

var textStr:String = "+-×÷"; //定義符號字符

txt1.text = String(Math.round(Math.random() * 100)); //隨機取初始算式的運算數(shù)1

txt2.text = String(Math.round(Math.random() * 100)); //隨機取初始算式的運算數(shù)2

fuhao.text = textStr.charAt(i); //取初始算式的運算符號

j = j + 1;

tishu.text = N; tihao.text = j; //記錄題目總數(shù)和題號數(shù)

var TextSprite:Array = new Array(); //定義數(shù)組TextSprite,用于存放做題記錄

var num = 0;

txt.addEventListener(KeyboardEvent.KEY_DOWN, KeyDown); //設置鍵盤偵聽事件

function KeyDown(e:KeyboardEvent):void

{ if (e.keyCode == Keyboard.ENTER) //以下是按鍵盤上enter鍵所執(zhí)行的操作

{ num=Number(txt.text);

TextSprite[j-1] = new TextField(); //數(shù)組TextSprite中每一元素生成一個文本域

if((txt.text.length !=0)&&((i==0&&m+n==num)||(i==1&&m-n==num)||(i==2&&m*n==num)||(i==3&&m/n==num))) //判斷輸入內(nèi)容是否與左邊算式相等

{TextSprite[j - 1].text = txt1.text + fuhao.text + txt2.text + "=" + txt.text+" "+"√";}

//輸入結果正確記錄下當前所做題目及答案并判斷為正確

else

{TextSprite[j - 1].text = txt1.text + fuhao.text + txt2.text + "=" + txt.text+" "+"×";}

//輸入結果錯誤記錄下當前所做題目及答案并判斷為錯誤

txt.text = ""; //清除上一次輸入的答案,為下一道題做準備

m = Math.round(Math.random() * 100); //隨機取下一道題的運算數(shù)1放入變量m

n = Math.round(Math.random() * 100); //隨機取下一道題的運算數(shù)2放入變量n

i = Math.round(Math.random() * 3); //隨機取下一道題的運算符號的序號

if (m

while (i==3)

{ if (m%n==0&&n!=0){ break; }

else

{ m = Math.round(Math.random() * 100); n = Math.round(Math.random() *100); }

}//符號為除號時除法算式應沒有余數(shù),如果取的數(shù)不滿足條件需要重新再取

txt1.text = String(m); //運算數(shù)1賦給txt1

txt2.text = String(n); //運算數(shù)2賦給txt2

fuhao.text = textStr.charAt(i); //運算符號賦給fuhao

j = j + 1; tihao.text = j; //取得當前題號

if (j>N){ gotoAndStop(3); } //做完用戶輸入的題目數(shù)后轉到界面三

}}

3) 界面三的建立

選中第三幀關鍵幀,在窗口舞臺上我們利用文本框和按鈕創(chuàng)建如圖3的界面。

打開動作面板輸入以下代碼:

var nowt:Date = new Date();

yongshi.text = String(nowt.hours * 3600 + nowt.minutes * 60 + nowt.seconds - timestart);

mb1.addEventListener(MouseEvent.CLICK ,f3); //設置按鈕mb1的鼠標偵聽事件

function f3(evt:MouseEvent)

{var d = 0;

for (var k:uint=0; k

{ TextSprite[k].defaultTextFormat = new TextFormat("黑體",20,0xff0000);

TextSprite[k].text = TextSprite[k].text;

if (k%2==0){ TextSprite[k].x = mb1.x+100; TextSprite[k].y = mb1.y - 25 + d; }

else{ TextSprite[k].x = mb1.x+250; TextSprite[k].y = mb1.y - 35 + d; }

//if-else語句把TextSprite數(shù)組中的記錄結果分成奇偶兩列顯示

TextSprite[k].autoSize = TextFieldAutoSize.LEFT;

addChild(TextSprite[k]);

d = d + 10;}}

mb2.addEventListener(MouseEvent.CLICK ,f2); //設置按鈕mb2的鼠標偵聽事件

function f2(evt:MouseEvent)

{for (var k:uint=0; k

gotoAndStop(1);}

2 結論

本文利用Flash的動作腳本實現(xiàn)了文本框交互式練習題,程序中需要注意幾點:第一,在CS3以上版本中,輸入文本框和動態(tài)文本框沒有字體只允許輸入顯示制作時輸入的數(shù)據(jù),解決辦法是嵌入字體或是在文本屬性中改為使用設備字體;第二,本程序中的輸入文本框需在屬性面板中把輸入行設為單行;第三,可以添加一些動作腳本使程序更加完善,如:txt.restrict="0-9"限制輸入文本框只能輸入數(shù)字,txt1.borderColor = 0xff0000可設置文本框的外邊框顏色,txt1.backgroundColor = 0x00FF00可設置文本框的內(nèi)部填充顏色,等等。把Flash的三種文本類型結合使用,可以制作出豐富多彩的文本框交互效果。

參考文獻:

[1] 劉本軍,李登豐. Flash ActionScript 3.0互動設計項目教程[M]. 北京:人民郵電出版社,2015:11.

[2] 李林. FlashCS動畫制作教程[M].北京:清華大學出版社,2014:8.

猜你喜歡
文本框
另辟蹊徑雙語文章排版有高招
巧用文本框?qū)崿F(xiàn)PPT多圖片排版
PPT文本框的另類應用
圖片動畫玩異樣
文本框酷變3D效果
文本框在地理課件中的應用
西峡县| 茶陵县| 长海县| 合山市| 彭州市| 米易县| 柳江县| 莆田市| 额敏县| 胶州市| 达日县| 清苑县| 永新县| 日土县| 乐东| 张家口市| 巨野县| 合阳县| 策勒县| 鹤庆县| 中方县| 江口县| 遵义市| 麻城市| 明水县| 麻栗坡县| 获嘉县| 黄大仙区| 南宁市| 高平市| 吕梁市| 安新县| 平舆县| 宜兰市| 永康市| 临桂县| 正蓝旗| 分宜县| 安阳市| 监利县| 天长市|