Flash AS入門教程:文本與字符實例—打字游戲制作(2)_Flash教程
推薦:Flash教程:旋轉(zhuǎn)花朵效果的制作效果演示: 本課中的內(nèi)容涉及:函數(shù)定義, for...in 語句, .onEnterFrame 三個關鍵內(nèi)容,函數(shù)的作用是實現(xiàn)代碼的重用,配合for...in語句可批量賦予函數(shù).望初學者仔細閱讀.思路:1.使用for...in
6.好了,布置好了�,F(xiàn)在來寫代碼。新建一層,命名為“action”,打開幀動作面板。
首選準備好文字,將出現(xiàn)的文字有字母和中文兩種,我們建兩個字符串來存放文字。字母比較簡單只有26個,所以第一句:
var zm:String = “abcdefghijklmnopqrstuvwxyz”;
第二句放中文,我找了一篇散文,將它存在字符串中,在散后最后加上0~9,這樣也可以讓用練習一下數(shù)字鍵。
var zw:String = "這幾天心里頗不寧靜�!�.”;
zw ="0123456789";
聲明幾變量,后面有用:
var zs=0; //下落文字的總數(shù)
var df=0; //擊中文字的數(shù)量
var lg = 1;//語言,用于后面由用戶選擇練習字母還是練習中文。
var sd = 500;//速度,用于設置文字出現(xiàn)的速度。
var wbformat:TextFormat=new TextFormat();//創(chuàng)建一個文本格式,用于設置下落的文本
wbformat.bold=true;
wbformat.size=22;
在第二幀插入關鍵幀:這一幀將實現(xiàn)文字下落,擊中和得分計數(shù)生等功能。
stop();
//首先創(chuàng)建一個輸入文本用來接受用戶輸入文字:
this.createTextField("sr_txt",31,350,350,30,20);
sr_txt.type="input";
sr_txt.border=true;
sr_txt.text="開始";
//創(chuàng)建文本位置坐標要根據(jù)實際的位置來確定,使文本出現(xiàn)在大炮的下方。
下面用一個函數(shù)來實現(xiàn)出現(xiàn)字母的功能:
var i=0;
function cwb(wbl){//注意這里聲明的函數(shù)帶了一個參數(shù)wbl,這個參數(shù)用于文本是字母還是中文。
if(i<10){ //這一句就讓屏幕上出現(xiàn)的文字只有10個。
var wbx = 150 random(370); //產(chǎn)生一個150到520的隨機數(shù),用于設置文字的x屬性。
createTextField("wb_txt" i,i,200,20,30,30);
wb = eval("wb_txt" i);
var zmwz = random(wbl.length);//產(chǎn)生一個從0~文本字符串(第1幀創(chuàng)建那兩個)的長度之間的隨機數(shù),用于從字符串中隨機抽取字符。
wb.text = wbl.charAt(zmwz);//設置文本的內(nèi)容為字符串中的隨機字符
wb._x=wbx;
wb.setTextFormat(wbformat);//將第1幀創(chuàng)建的文本格式應用于該文本。
zs ;//文本出現(xiàn)后,文字總數(shù)加1
}else {
i=0;
}
i ;
}
//下面通過onEnterFrame事件,讓出現(xiàn)的文本不斷往下落:
onEnterFrame = function() {
for (k=0;k<10;k ){
wb= eval("wb_txt" k);
wb._y = 2;
}
};
//接下來就是啟動游戲了,我們將啟動按鈕設在輸入文本的onSetFocus事件上,也就是說,當我們一點擊“開始”(輸入文本獲得焦點),游戲啟動。
var szm;//這變量用來調(diào)用上面的出現(xiàn)字的函數(shù)。
sr_txt.onSetFocus = function(){
var jsid = setTimeout(js,60000);//首先設置一個時間限制,就是說60000毫秒(1分鐘)調(diào)用函數(shù)js,這個函數(shù)將停止游戲并統(tǒng)計得分。
if(lg==1){//如果變量lg等于1
szm = setInterval(cwb,sd,zm); //那么每隔變量sd那么長的時間,調(diào)用一次出文字的函數(shù)cwb,并且使用字母(zm)字符串)
}else {//否則
szm = setInterval(cwb,sd,zw);//那么每隔變量sd那么長的時間,調(diào)用一次出文字的函數(shù)cwb,并且使用中文(zw)字符串).所以我們只雖改變變量lg的值,就可以選擇出字母還是出中文了。
}
sr_txt.text="";//將輸入文本框清空,準備輸入。
}
function js(){//這是聲明了一個用于結束游戲的函數(shù)。
clearInterval(szm);//清除setInterval的調(diào)用,文字不再出現(xiàn)。
mzl_txt.text = int((df/zs)*100) "%";//計算命中率,并顯示。
}
//下面通過輸入文本的onChanged事件,實現(xiàn)炮轟文字的效果。
sr_txt.onChanged = function(){//當輸入文本內(nèi)容發(fā)生變化時,即我們每輸入一個文字時
for(var j=0;j<10;j ){
cxdwb =eval("wb_txt" j);
if(sr_txt.text == cxdwb.text){//如果輸入的文字和出現(xiàn)的文字之一一樣。
attachMovie("bz","bz_mc",21);//那么從庫中加載爆炸元件,這里的深度我用了21,是為了避免與出現(xiàn)的文字文本沖突,當然11也就行了,因為文字文本只有10個。
bz_mc._x=cxdwb._x;
bz_mc._y=cxdwb._y 10;//兩句設置爆炸元的位置和文字文本的位置一樣,使其在文字處爆炸。
dx = cxdwb._x - dp_mc._x;
dy = cxdwb._y - dp_mc._y;
dz = Math.atan2(dy,dx)*180/Math.PI;
dp_mc._rotation = dz 90;//上面是通過三角函數(shù)使大炮的方向轉(zhuǎn)為文字文本的方向。
cxdwb.removeTextField();//爆炸后將文字文本刪除,即炸掉了。
df ;//擊中后得分加1
df_txt.text=df;//顯示得分
}
}
sr_txt.text="";//清空輸入文本,準備下一次輸入。
}
//游戲的功能就完成了,現(xiàn)在應提供一個重玩按鈕,讓用戶可以重新開始游戲。
cw_btn.onRelease= function(){//當重玩按鈕被點擊時
if(lg==1){
szm = setInterval(cwb,sd,zm);
}else {
szm = setInterval(cwb,sd,zw);
}
sr_txt.text="";
setTimeout(js,60000);
df=0;
zs=0;
mzl_txt.text="";
}
//下面是設置按鈕,進入設置頁面。
sz_btn.onRelease =function(){
gotoAndStop(3);
}
在第3幀插入關鍵幀,將在這一幀設置文字語言,速度等。
進入設置頁面后,首先停止游戲:
clearInterval(szm);
zs=0;
df=0;
//下面是幾個設置按鈕上的代碼:
zm_btn.onRelease = function(){
lg=1;//讓孌量lg等于1,這樣文字將會是字母
yysz_txt.text="字母";
}
zw_btn.onRelease = function(){
lg=2;//讓孌量lg不等于1,這樣文字將會是中文
yysz_txt.text="中文";
}
ms_btn.onRelease= function(){
sd = 1000;//設置sd為1000毫秒,即每1000毫秒出一個文字,下同
sdsz_txt.text="慢速";
}
zs_btn.onRelease=function(){
sd = 500;
sdsz_txt.text="中速";
}
ks_btn.onRelease=function(){
sd =200;
sdsz_txt.text="快速";
}
qd_btn.onRelease=function(){//這是確定按鈕上的代碼,點擊確定按鈕后,退出設置窗口,返回游戲窗口,繼續(xù)游戲。
gotoAndStop(2);
}
好,完工,祝你成功!
分享:Flash鼠繪嬌艷的郁金香“Flash動畫鼠繪入門班”第十課教材——畫郁金香 在古歐洲,有一個美麗的姑娘,同時受到三位英俊的騎士愛慕追求。一位送了她一頂皇冠;一位送她寶劍;另一位送她黃金。少女非常發(fā)愁,不知道應
- 相關鏈接:
- 教程說明:
Flash教程-Flash AS入門教程:文本與字符實例—打字游戲制作(2)
。