2021年6月14日 星期一

LimeJS : 編過碼的程式中找物件

2021年6月14日 星期一

 在研究如何在不動原有程式的原則上加「外掛」,不過,原有的程式碼因為想輕量化,利用 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 事件,也就是模擬了以滑鼠按下去的動作了,這樣一來,可以透過網路來按戳戳樂了,應該很有趣。



沒有留言:

張貼留言

 
雄::gsyan © 2009. Design by Pocket