2005-12-14 10:57 Flash 8 Key.onKeyUp Bug
Flash 8 Key.onKeyUp Event Bug
狀況
發布為Flash 8 swf格式時,Key class的onKeyUp事件,遇到同時按下兩個按鍵,無法擷取到第二個放開按鍵的事件
MMUG上的原始文章
http://mmug.com.tw/forum/viewtopic.php?p=31432
| |
敘述 | 結果 | |
| Test 01 | 分別將含有偵測Key.onKeyUp的swf發布為Flash 7、8格式,以Flash 8 Player執行 | 發布為Flash 7格式可以成功擷取連續兩次onKeyUp;而Flash 8格式不行 | Key.onKeyUp Bug可能與swf格式有關 |
| Test 02 | 沿用Test 01的兩個key swf,另外撰寫swf loader發布為Flash 7、8格式,分別load Test 01的兩個swf到_level1,以Flash 8 Player執行loader swf進行測試 | 發布為Flash 7格式的loader無論load哪種格式swf key,都可以成功擷取連續兩次onKeyUp;而Flash 8格式loader則都不行 | Key.onKeyUp Bug與程式碼所在的swf格式無絕對關係,而是與最初執行的loader swf格式有關 |
| Test 03 | 同Test 02,load swf改成load到_level0.anchor MovieClip | 同上 | |
| Test 04 | 同Test 02,load swf改成load到_level0 | 只是要是被load key swf為Flash 7格式的都成功,而被load key swf為Flash 8格式的都失敗 | 可能是由於load到_level0是完全取代方式所造成 |
| Test 05 | 將含有偵測Key.onKeyUp的swf發布為Flash 8格式,然後使用UltraEdit直接修改swf signature為ver. 7,以Flash 7、8 Player執行之 | 均可以成功擷取連續兩次onKeyUp | 此Bug與AS Bytecode無關,而是出在Flash 8 Player本身對swf 8的處理方式 |
| Key.onKeyUp AS |
listener = {}; |
改善方式
1.替Flash 8格式的Game swf另外撰寫Flash 7格式的loader swf,當作起始swf,將Game load到_level1以上或者是MovieClip內
2.直接修改swf signature為ver. 7,但是可能會有其它副作用
已經有人寫了一個Class利用setInterval自行偵測onKeyUp事件
Mixmedia Blog Key.onKeyUp bug in flash8
回應

