討論區快速選單
知識庫快速選單
網路投保旅行平安險 政府補助!學嵌入式+物聯網 用最高效的方式管理MySQL
[ 回上頁 ] [ 討論區發言規則 ]
action script3中for in的疑問
更改我的閱讀文章字型大小
作者 : pingfarng(屬霖)
[ 貼文 4 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/9/9 下午 03:25:06
大家好:
關於以下的for in用法,是老師上課的範例,雖有問了老師幾次,但還是霧剎剎,只好上來向各位前輩求助囉@@

先來介紹下面這段程式碼,在flash cs5中,建置了兩個動態文字框,分別命名為input_txt及show_txt,主要用意就是要讓使用者在input_txt文字框中輸入要搜尋的人名,如果和winnerList陣列當中記錄的五個人名相吻合的話,show_txt文字框就會出現您中獎囉,請靜候聯絡,如果不吻合,show_txt文字框就會出現對不起,沒有中獎。

接著,我要說出我心中的疑惑囉!!我的疑惑是。我在input_txt文字框中輸入『曾至偉』,然後按下名為search_btn的按鈕,理論上,show_txt動態文字框上應該會連續出現"對不起,沒有中獎"四次然後第五次才會出現『您中獎囉,請靜候聯絡』(我的想法是for in 迴圈會把 winnerList陣列中的所有元素逐一巡訪,因為
曾至偉在該陣列中的第五個位置,所以前面四次會因搜尋不到『曾至偉』,而跑到else敘述區塊,而使得show_txt文字框連續出現"對不起,沒有中獎"四次,之後第五次因第五個元素與『曾至偉』相吻合,show_txt文字框才會出現『您中獎囉,請靜候聯絡』)
但是,想法歸想法,此段程式碼執行的結果卻與我想法有些差異:show_txt動態文字框上一下就出現了『您中獎囉,請靜候聯絡』,根本就沒看到所謂的"對不起,沒有中獎"出現四次,是因為電腦跑太快的關係而導致我看不到前面出現的四次"對不起,沒有中獎",還是我對此段程式碼有所誤解呢?還懇請各位前輩予以指導一番^^
------------------------------------------------------------以下為程式碼部分------------------------------------------------------------------------------

//新增陣列儲存得獎者名單資料
var winnerList = new Array("劉得華","金城舞","周猩馳","黎鳴","曾至偉");
//新增變數winnerName,屬性字串,供姓名比對查詢
var winnerName:String=new String();


//search_btn按鈕偵聽按下動作,發生自訂函數searchList
search_btn.addEventListener(MouseEvent.CLICK,searchList);

//自訂函數searchList,比對得獎者名單資料,並依查詢結果輸出不同顯示
function searchList(me:MouseEvent){
for (winnerName in winnerList){
if (input_txt.text == winnerList[winnerName]){
show_txt.text = "您中獎囉,請靜候聯絡";
break;
}else{
show_txt.text = "對不起,沒有中獎";
}
}
}
作者 : kaikai0428(小紀)
[ 貼文 32 | 人氣 0 | 評價 80 | 評價/貼文 2.5 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人pingfarng註記此篇回應為最佳解答 2011/9/9 下午 06:38:06
hello 屬霖你好,

我想你的寫法是正確的, 邏輯也沒有錯.

我猜圖像顯示是一瞬間的, 也可能他只顯示最終結果。

所以才會只有"您中獎囉! 請靜候連絡"

實際上是有執行其他四次"對不起 沒有中獎"

你可以在for迴圈中加入trace(show_txt.text) 來檢視show_txt.text的變化

同理, 如果你在for迴圈結束後, 加上show_txt.text = "change";

會發現連"您中獎囉! 請靜候連絡"也看不到了, 只會顯示最後的 change

除非在其中加入一些讓他停留的方法, 才有可能看的到

以上是小弟愚見 希望對你有幫助 :")
作者 : pingfarng(屬霖)
[ 貼文 4 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/9/10 下午 03:47:55
嗨!小紀您好:
經過你這麼一提醒,我在else區塊加入break;的敘述,果然出現『對不起,沒有中獎』的結果,也更加證實我之前的想法。而拿掉break敘述之後,就理所當然的出現『您中獎囉,請靜候聯絡』。其實,之前我有想到是否因為電腦運作速度過快,才使的我看不到前面輸出的結果,所以有嘗試增加winnerList陣列的元素到100多個,然後將曾至偉擺到最後,接著就搜尋曾至偉,想說看系統會不會因為搜尋一百多個元素而變慢,讓我可以看到前面四個搜尋失敗的結果一閃而過,而實驗後的結果還是一下就出現了您中獎囉,請靜候聯絡,所以才會讓我感到迷惑。
不過經過break敘述這麼一擺,就真相大白了!!!謝謝您囉^^
//新增陣列儲存得獎者名單資料
var winnerList = new Array("劉得華","金城舞","周猩馳","黎鳴","曾至偉");
//新增變數winnerName,屬性字串,供姓名比對查詢
var winnerName:String=new String();


//search_btn按鈕偵聽按下動作,發生自訂函數searchList
search_btn.addEventListener(MouseEvent.CLICK,searchList);

//自訂函數searchList,比對得獎者名單資料,並依查詢結果輸出不同顯示
function searchList(me:MouseEvent){
for (winnerName in winnerList){
if (input_txt.text == winnerList[winnerName]){
show_txt.text = "您中獎囉,請靜候聯絡";
break;
}else{
show_txt.text = "對不起,沒有中獎";
break;
}
}
}
作者 : pingfarng(屬霖)
[ 貼文 4 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/9/10 下午 03:52:48
嗨!小紀您好:
經過你這麼一提醒,我在else區塊加入break;的敘述,果然出現『對不起,沒有中獎』的結果,也更加證實我之前的想法。而拿掉break敘述之後,就理所當然的出現『您中獎囉,請靜候聯絡』。其實,之前我有想到是否因為電腦運作速度過快,才使的我看不到前面輸出的結果,所以有嘗試增加winnerList陣列的元素到100多個,然後將曾至偉擺到最後,接著就搜尋曾至偉,想說看系統會不會因為搜尋一百多個元素而變慢,讓我可以看到前面四個搜尋失敗的結果一閃而過,而實驗後的結果還是一下就出現了您中獎囉,請靜候聯絡,所以才會讓我感到迷惑。
不過經過break敘述這麼一擺,就真相大白了!!!謝謝您囉^^
//新增陣列儲存得獎者名單資料
var winnerList = new Array("劉得華","金城舞","周猩馳","黎鳴","曾至偉");
//新增變數winnerName,屬性字串,供姓名比對查詢
var winnerName:String=new String();


//search_btn按鈕偵聽按下動作,發生自訂函數searchList
search_btn.addEventListener(MouseEvent.CLICK,searchList);

//自訂函數searchList,比對得獎者名單資料,並依查詢結果輸出不同顯示
function searchList(me:MouseEvent){
for (winnerName in winnerList){
if (input_txt.text == winnerList[winnerName]){
show_txt.text = "您中獎囉,請靜候聯絡";
break;
}else{
show_txt.text = "對不起,沒有中獎";
break;
}
}
}
 板主 : 徵求中
 > Flash/Action Script - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Flash/Action Script - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Flash/Action Script
1 abgne 600 
2 jerry 480 
3 hsinnan 330 
4 Ben 220 
5 200 
6 kenny 180 
7 Allen 120 
8 svcnet 120 
9 Raymond 110 
10 小紀 80 
Flash/Action Script
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
0.03125