在研究如何在不動原有程式的原則上加「外掛」,不過,原有的程式碼因為想輕量化,利用 LimeJS 的工具,將原始的 JavaScript 程式都簡化了,簡化到函數名稱很難分辨出來。
觀察了一下,全域的變數都會保留原有名稱,正因為如此,總算留有一線曙光。以戳戳樂來說,我所有的格子通通放到 boxLayer 中了,除了第一個是整體的大黑框,boxLayer 的其它 children 都是格子。不過因為函數名稱都變了,無法用原來的 getChildAt() 來取得物件。
倒是 boxLayer 中只有一個變數是帶有 .length 的,這下好辦了,只要在 boxLayer 中找到符合以下條件的,應該就是我要找的東西:
- 是 object
- 有 length
試著用以下的程序:
var n = Object.keys(boxLayer);var box=null;for(var i=0; i<n.length; i++) {if(boxLayer[n[i]] && typeof(boxLayer[n[i]])=='object' && typeof(boxLayer[n[i]]['length'])=='number') {var box = boxLayer[n[i]];break;}}
運氣還不錯,一次中的。
找到戳戳樂的格子,這樣子要做什麼?
因為當初在新增戳戳樂的格子時,是按順序新增的,以第一格來說,它𡰗是 box[1] (box[0] 是外框,哈! 當初也不知道為什麼要這樣加個雜質進來),我如果要直接用指令來「按」或者說是「戳」這格時,只要這樣的指令:
box[1].dispatchEvent('mousedown');
它觸發了第一格的 mousedown 事件,也就是模擬了以滑鼠按下去的動作了,這樣一來,可以透過網路來按戳戳樂了,應該很有趣。
沒有留言:
張貼留言