| 導購 | 订阅 | 在线投稿
分享
 
 
 

Flash AS入門教程第六課:文本與字符實例—打字遊戲制作

來源:互聯網  2008-11-11 08:00:46  評論

現在開始制作:

新建一Flash文檔。

1.新建一個影片剪輯元件,命名爲「爆炸」。這需要一個爆炸的效果,你可以找一個爆炸圖片,也可以畫一個,我這個是用PS做的。進入元件編輯窗口,將爆炸圖片拖入,打散,居中放好。在第5幀插入關鍵幀。回到第一幀將圖片縮到5象素。然後建立形狀補間。打開庫面板,在爆炸元件上,點右鍵,點擊「連接」,爲該元件輸入標識符「bz」.

導入一個爆炸聲的音樂文件,在庫中音樂文件上點右鍵-屬性。取掉「使用導入品質」上的鈎。壓縮選擇mp3.在庫中右擊該音樂元件,點連接,爲該元件輸入標識符「pzs」.

回到爆炸元件編輯窗口,新建一層,在第3幀插入關鍵幀(這裏是要導入爆炸聲,在第幾幀插入根據聲音的長短來定,如果聲音長那麽就在第1幀就導入。)點右鍵,打開幀動作面板,輸入:

var bd:Sound = new Sound();

bd.attachSound("pds");

bd.start();

第一句聲音了一個聲音對;第二句將庫中的爆炸聲音導入。第三句聲音開始播放。

在第5幀插入關鍵幀,在幀動作面板中輸入:

this.removeMovieClip(this);

將爆炸元件移除。

圖:我用PS做的爆炸效果:(png)

Flash AS入門教程第六課:文本與字符實例—打字遊戲制作

2.再建一個影片剪輯元件,取名爲「大炮」.同樣你可以找一張大炮的圖片,也可以自已畫一個,我這個是自已畫的。注意將圖形放到中心點(十字)稍上方,即十字點在大炮的後半部位。

圖:我畫的大炮,不太好哈。注意十字的位置,大炮將以這一點作爲旋轉的基點。

Flash AS入門教程第六課:文本與字符實例—打字遊戲制作

3.新建7個按鈕,標簽分別爲:「設置」,「重玩」,「字母」,「中文」,「慢速」,「中速」,「快速」。

4.可以選一個背景畫片,同樣可以找一個風景圖(應有天空和地面),也可以畫一個,我畫了一個,又找了一張風景照片,結果還是認爲風景照片好看些。當然你也可以不要背景圖片。

5.演員准備齊了,現在開始布置舞台。

回到主場景。第一層「背景」在第2幀插入關鍵幀,將「設置」,「重玩」按鈕從庫中拖入,放到左上部。打開屬性面板,分別將兩個按鈕命名爲:「sz_btn」,」cw_btn」.在左邊稍下邊一點入一靜態文本,內容爲「命中率」,在它的下邊放一動態文本,在屬性面板中命名爲「mzl_txt」;在它的下面放一靜態文本,內容爲「得分」,在它的下面,放一動態文本,在屬性面板中命名爲「df_txt」.在右半部畫一矩形,然後在這個矩形上放一個靜態文本,內容爲「當前設置」。然後放兩個動態文本,內容分別爲:「字母」,「中速」。打開屬性面板,將兩個動態文本分別命名爲:「yysz_txt」,」sdsz_txt」.將「字母」「中文」,「慢速」,「中速」,「快速」按鈕拖入,放到矩形的右半部。在屬性面板中分別命名爲:「zm_btn」,」zw_btn」,」ms_btn」,」zs_btn」,」ks_btn」.如下圖:

Flash AS入門教程第六課:文本與字符實例—打字遊戲制作

在第3幀插入幀。

新建一層:在第2幀插入關鍵幀,將風景圖片拖入,調整大小,蓋住右邊的矩型鄣分: 將「大炮」元件從庫中拖入,放到右邊風景圖的下方中間。在屬性面板中命名爲:」dp_mc」.

Flash AS入門教程第六課:文本與字符實例—打字遊戲制作

6.好了,布置好了。現在來寫代碼。新建一層,命名爲「action」,打開幀動作面板。

首選准備好文字,將出現的文字有字母和中文兩種,我們建兩個字符串來存放文字。字母比較簡單只有26個,所以第一句:

var zm:String = 「abcdefghijklmnopqrstuvwxyz」;

第二句放中文,我找了一篇散文,將它存在字符串中,在散後最後加上0~9,這樣也可以讓用練習一下數字鍵。

var zw:String = "這幾天心裏頗不甯靜。…….」;

zw+="0123456789";

聲明幾變量,後面有用:

var zs=0; //下落文字的總數

var df=0; //擊中文字的數量

var lg = 1;//語言,用于後面由用戶選擇練習字母還是練習中文。

var sd = 500;//速度,用于設置文字出現的速度。

var wbformat:TextFormat=new TextFormat();//創建一個文本格式,用于設置下落的文本

wbformat.bold=true;

wbformat.size=22;

在第二幀插入關鍵幀:這一幀將實現文字下落,擊中和得分計數生等功能。

stop();

//首先創建一個輸入文本用來接受用戶輸入文字:

this.createTextField("sr_txt",31,350,350,30,20);

sr_txt.type="input";

sr_txt.border=true;

sr_txt.text="開始";

//創建文本位置坐標要根據實際的位置來確定,使文本出現在大炮的下方。

下面用一個函數來實現出現字母的功能:

var i=0;

function cwb(wbl){//注意這裏聲明的函數帶了一個參數wbl,這個參數用于文本是字母還是中文。

if(i<10){ //這一句就讓屏幕上出現的文字只有10個。

var wbx = 150+random(370); //産生一個150到520的隨機數,用于設置文字的x屬性。

createTextField("wb_txt"+i,i,200,20,30,30);

wb = eval("wb_txt"+i);

var zmwz = random(wbl.length);//産生一個從0~文本字符串(第1幀創建那兩個)的長度之間的隨機數,用于從字符串中隨機抽取字符。

wb.text = wbl.charAt(zmwz);//設置文本的內容爲字符串中的隨機字符

wb._x=wbx;

wb.setTextFormat(wbformat);//將第1幀創建的文本格式應用于該文本。

zs++;//文本出現後,文字總數加1

}else {

i=0;

}

i++;

}

//下面通過onEnterFrame事件,讓出現的文本不斷往下落:

onEnterFrame = function() {

for (k=0;k<10;k++){

wb= eval("wb_txt"+k);

wb._y += 2;

}

};

//接下來就是啓動遊戲了,我們將啓動按鈕設在輸入文本的onSetFocus事件上,也就是說,當我們一點擊「開始」(輸入文本獲得焦點),遊戲啓動。

var szm;//這變量用來調用上面的出現字的函數。

sr_txt.onSetFocus = function(){

var jsid = setTimeout(js,60000);//首先設置一個時間限制,就是說60000毫秒(1分鍾)調用函數js,這個函數將停止遊戲並統計得分。

if(lg==1){//如果變量lg等于1

szm = setInterval(cwb,sd,zm); //那麽每隔變量sd那麽長的時間,調用一次出文字的函數cwb,並且使用字母(zm)字符串)

}else {//否則

szm = setInterval(cwb,sd,zw);//那麽每隔變量sd那麽長的時間,調用一次出文字的函數cwb,並且使用中文(zw)字符串).所以我們只雖改變變量lg的值,就可以選擇出字母還是出中文了。

}

sr_txt.text="";//將輸入文本框清空,准備輸入。

}

function js(){//這是聲明了一個用于結束遊戲的函數。

clearInterval(szm);//清除setInterval的調用,文字不再出現。

mzl_txt.text = int((df/zs)*100)+"%";//計算命中率,並顯示。

}

//下面通過輸入文本的onChanged事件,實現炮轟文字的效果。

sr_txt.onChanged = function(){//當輸入文本內容發生變化時,即我們每輸入一個文字時

for(var j=0;j<10;j++){

cxdwb =eval("wb_txt"+j);

if(sr_txt.text == cxdwb.text){//如果輸入的文字和出現的文字之一一樣。

attachMovie("bz","bz_mc",21);//那麽從庫中加載爆炸元件,這裏的深度我用了21,是爲了避免與出現的文字文本沖突,當然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;//上面是通過三角函數使大炮的方向轉爲文字文本的方向。

cxdwb.removeTextField();//爆炸後將文字文本刪除,即炸掉了。

df++;//擊中後得分加1

df_txt.text=df;//顯示得分

}

}

sr_txt.text="";//清空輸入文本,准備下一次輸入。

}

//遊戲的功能就完成了,現在應提供一個重玩按鈕,讓用戶可以重新開始遊戲。

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(){//這是確定按鈕上的代碼,點擊確定按鈕後,退出設置窗口,返回遊戲窗口,繼續遊戲。

gotoAndStop(2);

}

好,完工,祝你成功!

現在開始制作: 新建一Flash文檔。 1.新建一個影片剪輯元件,命名爲「爆炸」。這需要一個爆炸的效果,你可以找一個爆炸圖片,也可以畫一個,我這個是用PS做的。進入元件編輯窗口,將爆炸圖片拖入,打散,居中放好。在第5幀插入關鍵幀。回到第一幀將圖片縮到5象素。然後建立形狀補間。打開庫面板,在爆炸元件上,點右鍵,點擊「連接」,爲該元件輸入標識符「bz」. 導入一個爆炸聲的音樂文件,在庫中音樂文件上點右鍵-屬性。取掉「使用導入品質」上的鈎。壓縮選擇mp3.在庫中右擊該音樂元件,點連接,爲該元件輸入標識符「pzs」. 回到爆炸元件編輯窗口,新建一層,在第3幀插入關鍵幀(這裏是要導入爆炸聲,在第幾幀插入根據聲音的長短來定,如果聲音長那麽就在第1幀就導入。)點右鍵,打開幀動作面板,輸入: var bd:Sound = new Sound(); bd.attachSound("pds"); bd.start(); 第一句聲音了一個聲音對;第二句將庫中的爆炸聲音導入。第三句聲音開始播放。 在第5幀插入關鍵幀,在幀動作面板中輸入: this.removeMovieClip(this); 將爆炸元件移除。 圖:我用PS做的爆炸效果:(png) [url=/bbs/detail_1872320.html][img]http://image.wangchao.net.cn/it/1323263340341.png[/img][/url] 2.再建一個影片剪輯元件,取名爲「大炮」.同樣你可以找一張大炮的圖片,也可以自已畫一個,我這個是自已畫的。注意將圖形放到中心點(十字)稍上方,即十字點在大炮的後半部位。 圖:我畫的大炮,不太好哈。注意十字的位置,大炮將以這一點作爲旋轉的基點。 [url=/bbs/detail_1872320.html][img]http://image.wangchao.net.cn/it/1323263340946.jpg[/img][/url] 3.新建7個按鈕,標簽分別爲:「設置」,「重玩」,「字母」,「中文」,「慢速」,「中速」,「快速」。 4.可以選一個背景畫片,同樣可以找一個風景圖(應有天空和地面),也可以畫一個,我畫了一個,又找了一張風景照片,結果還是認爲風景照片好看些。當然你也可以不要背景圖片。 5.演員准備齊了,現在開始布置舞台。 回到主場景。第一層「背景」在第2幀插入關鍵幀,將「設置」,「重玩」按鈕從庫中拖入,放到左上部。打開屬性面板,分別將兩個按鈕命名爲:「sz_btn」,」cw_btn」.在左邊稍下邊一點入一靜態文本,內容爲「命中率」,在它的下邊放一動態文本,在屬性面板中命名爲「mzl_txt」;在它的下面放一靜態文本,內容爲「得分」,在它的下面,放一動態文本,在屬性面板中命名爲「df_txt」.在右半部畫一矩形,然後在這個矩形上放一個靜態文本,內容爲「當前設置」。然後放兩個動態文本,內容分別爲:「字母」,「中速」。打開屬性面板,將兩個動態文本分別命名爲:「yysz_txt」,」sdsz_txt」.將「字母」「中文」,「慢速」,「中速」,「快速」按鈕拖入,放到矩形的右半部。在屬性面板中分別命名爲:「zm_btn」,」zw_btn」,」ms_btn」,」zs_btn」,」ks_btn」.如下圖: [url=/bbs/detail_1872320.html][img]http://image.wangchao.net.cn/it/1323263341037.jpg[/img][/url] 在第3幀插入幀。 新建一層:在第2幀插入關鍵幀,將風景圖片拖入,調整大小,蓋住右邊的矩型鄣分: 將「大炮」元件從庫中拖入,放到右邊風景圖的下方中間。在屬性面板中命名爲:」dp_mc」. [url=/bbs/detail_1872320.html][img]http://image.wangchao.net.cn/it/1323263341275.jpg[/img][/url] 6.好了,布置好了。現在來寫代碼。新建一層,命名爲「action」,打開幀動作面板。 首選准備好文字,將出現的文字有字母和中文兩種,我們建兩個字符串來存放文字。字母比較簡單只有26個,所以第一句: var zm:String = 「abcdefghijklmnopqrstuvwxyz」; 第二句放中文,我找了一篇散文,將它存在字符串中,在散後最後加上0~9,這樣也可以讓用練習一下數字鍵。 var zw:String = "這幾天心裏頗不甯靜。…….」; zw+="0123456789"; 聲明幾變量,後面有用: var zs=0; //下落文字的總數 var df=0; //擊中文字的數量 var lg = 1;//語言,用于後面由用戶選擇練習字母還是練習中文。 var sd = 500;//速度,用于設置文字出現的速度。 var wbformat:TextFormat=new TextFormat();//創建一個文本格式,用于設置下落的文本 wbformat.bold=true; wbformat.size=22; 在第二幀插入關鍵幀:這一幀將實現文字下落,擊中和得分計數生等功能。 stop(); //首先創建一個輸入文本用來接受用戶輸入文字: this.createTextField("sr_txt",31,350,350,30,20); sr_txt.type="input"; sr_txt.border=true; sr_txt.text="開始"; //創建文本位置坐標要根據實際的位置來確定,使文本出現在大炮的下方。 下面用一個函數來實現出現字母的功能: var i=0; function cwb(wbl){//注意這裏聲明的函數帶了一個參數wbl,這個參數用于文本是字母還是中文。 if(i<10){ //這一句就讓屏幕上出現的文字只有10個。 var wbx = 150+random(370); //産生一個150到520的隨機數,用于設置文字的x屬性。 createTextField("wb_txt"+i,i,200,20,30,30); wb = eval("wb_txt"+i); var zmwz = random(wbl.length);//産生一個從0~文本字符串(第1幀創建那兩個)的長度之間的隨機數,用于從字符串中隨機抽取字符。 wb.text = wbl.charAt(zmwz);//設置文本的內容爲字符串中的隨機字符 wb._x=wbx; wb.setTextFormat(wbformat);//將第1幀創建的文本格式應用于該文本。 zs++;//文本出現後,文字總數加1 }else { i=0; } i++; } //下面通過onEnterFrame事件,讓出現的文本不斷往下落: onEnterFrame = function() { for (k=0;k<10;k++){ wb= eval("wb_txt"+k); wb._y += 2; } }; //接下來就是啓動遊戲了,我們將啓動按鈕設在輸入文本的onSetFocus事件上,也就是說,當我們一點擊「開始」(輸入文本獲得焦點),遊戲啓動。 var szm;//這變量用來調用上面的出現字的函數。 sr_txt.onSetFocus = function(){ var jsid = setTimeout(js,60000);//首先設置一個時間限制,就是說60000毫秒(1分鍾)調用函數js,這個函數將停止遊戲並統計得分。 if(lg==1){//如果變量lg等于1 szm = setInterval(cwb,sd,zm); //那麽每隔變量sd那麽長的時間,調用一次出文字的函數cwb,並且使用字母(zm)字符串) }else {//否則 szm = setInterval(cwb,sd,zw);//那麽每隔變量sd那麽長的時間,調用一次出文字的函數cwb,並且使用中文(zw)字符串).所以我們只雖改變變量lg的值,就可以選擇出字母還是出中文了。 } sr_txt.text="";//將輸入文本框清空,准備輸入。 } function js(){//這是聲明了一個用于結束遊戲的函數。 clearInterval(szm);//清除setInterval的調用,文字不再出現。 mzl_txt.text = int((df/zs)*100)+"%";//計算命中率,並顯示。 } //下面通過輸入文本的onChanged事件,實現炮轟文字的效果。 sr_txt.onChanged = function(){//當輸入文本內容發生變化時,即我們每輸入一個文字時 for(var j=0;j<10;j++){ cxdwb =eval("wb_txt"+j); if(sr_txt.text == cxdwb.text){//如果輸入的文字和出現的文字之一一樣。 attachMovie("bz","bz_mc",21);//那麽從庫中加載爆炸元件,這裏的深度我用了21,是爲了避免與出現的文字文本沖突,當然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;//上面是通過三角函數使大炮的方向轉爲文字文本的方向。 cxdwb.removeTextField();//爆炸後將文字文本刪除,即炸掉了。 df++;//擊中後得分加1 df_txt.text=df;//顯示得分 } } sr_txt.text="";//清空輸入文本,准備下一次輸入。 } //遊戲的功能就完成了,現在應提供一個重玩按鈕,讓用戶可以重新開始遊戲。 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(){//這是確定按鈕上的代碼,點擊確定按鈕後,退出設置窗口,返回遊戲窗口,繼續遊戲。 gotoAndStop(2); } 好,完工,祝你成功!
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有