會員登入 新使用者?立即註冊

每天早上起床, 除了刷牙洗臉, 喝一杯咖啡已成例行公事, 沒喝就全身不對勁, 不過這通常不會是一天中唯一的一杯, 自覺已經有了咖啡戒斷症候群! 這裡放的是個人的學習筆記, 也是生活雜記! 所謂收藏武功是會貶值的, 本人的記性也不好, 所以這裡一方面與大家分享, 一方面也幫幫自己記得曾學過的東西!

關閉
你好,歡迎參觀我的部落格! 我要留言

有一個Script會讓Flash Player的速度變慢, 這不是阿共的陰謀啦~

分類:Flash
2008/05/12 22:45

最近阿被淪落到得要自己負責網站的Flash, 只因團隊裡的設計總監有更重要的任務要做, 不過就在"學習"一段現成的FLASH動畫效果的script時, 發現動畫執行一段時間後, 就會出現這樣的訊息:

影片中有一個Script會讓Flash Player的速度變慢, 如果繼續執行它, 電腦可能會停止回應, 是否要中止這個Script?

如果停止之後, 當然動畫效果就沒了, 如果沒有選停止, 那真的會覺得電腦跟著變慢了, 好像停頓了下了, 而且每次都讓來訪者看到這個訊息更顯得很不專業!

稍微查了查網路, 雖然也有人出現同樣的錯誤訊息, 不過並沒有提到可能的原因或是修正的方式!

這個FLASH的原始來源原本運作的挺好的, 可是經過阿被改寫之後, 就不行了! 但是我還是很懷疑問提出在自己身上, 照著實驗方式重新驗證, 發現原來的FLASH是用Flash 6跟ActionScript 1.0發佈的, 但是我為了配合Flash CS3的特效, 就使用了FLASH 8發佈, 竟然改了版本就不行了!

不過至少是找到原因了, 還好可以肯定不是阿共的陰謀! :D

稍早前也遇過舊版的Flash 移植到新版後就完全看不到動畫的情形, 不過像這樣看得到特效但卻會發生這種錯誤訊息倒還是第一次遇到。雖然改回Flash 6就可以正常, 好像也不會影響系統速度, 但是心理還是覺得毛毛的, 隱約會覺得會變慢(應該是心理因素 = =), 加上會影響Flash CS3的特效使用, 還是想找出原因!

雖然對ActionScript還不熟, 不過偵錯向來是阿被自認還算擅長的把戲, 花了點時間又啟動了偵錯過程, 發現原來錯誤發生在這樣的段落:

function changeTxt() {
     loadText(num);
     if (num<=copyText.length) {
          num++;
      } else {
          num = 1;
      }
}

紅色的那一行, 在執行了數次之後, 會因為 num 超過了該有的數字而在執行 loadText(num) 的時候讀取了根本不存在的值, 出現數值 undefined 的錯誤, 在出限這個錯誤的時候, Flash Player會先停頓了一下, 緊跟著就出現了上面的警告訊息!

不過詭異的是, 雖然在Flash 6也會出現同樣的undefined錯誤, 但是Flash Player卻好像當作沒看到, 在錯誤之後仍繼續進行動畫, 而且在num重設為1之後, 又繼續重複執行, 就算在遇到下次錯誤也照樣不會影響!

不過這種錯誤在找到原因後也就不難改正, 把 loadText(num)放進底下的if判斷裡頭就好了!
改成:

function changeTxt() {
     if (num<=copyText.length) {
          loadText(num);
          num++;
      } else {
          num = 1;
      }
}

改完後以Flash 8發佈也就正常了!

網路上其他人出現的狀況未必是相同情形, 不過應該可以確定, 如果發生這種錯誤訊息, 應該是在ActionScript上確實有錯誤存在!

 

下一篇
回應(2)
引用(0)
雅虎資訊 版權所有 © 2009 Yahoo! Taiwan All Rights Reserved
「本服務設有管理員」 服務條款 隱私權政策