2009-02-11 65 views
1

我正在設計一個類似RPG的小界面,用戶可以自由創建他們使用的物品和武器。請放心,這個特定的系統被深思熟慮,並不是我所關心的原因。 :)關於JavaScript鼠標事件異常我遇到了問題

不,它與我爲用戶的項目的實際繪製設置的機制有關。我可以嘗試用文字來表達設計,但如果我只是帶你去那裏,可能是最有利的,所以在繼續之前點擊here

不錯,呃?它幾乎沒有任何缺陷,除IE之外(幾年內沒有編碼),除了一個小型問題;實際上,它非常小,我可以肯定幾乎所有的玩家都會使用這個界面,而不用付出任何的關注。然而,我用我自己的設計是一個挑剔的人,爲了這個工作好幾個小時,我唉,把我帶到這裏來了。

因此,堆棧溢出的JavaScript大師,在這個問題有點幫助:

目前,有兩種方式,通過它可以注入顏色到畫布上;您可以單獨單擊方塊,也可以隨時拖動鼠標並填入方塊。那麼,給第二個選擇一個去。現在,你有沒有注意到,雖然拖動最肯定發生,你的阻力並沒有真正啓動,直到你感動出你在開始的廣場

當然,沒什麼大不了的,只是回去單擊錯過的地點。這絕對是我不介意解決的問題。不過,在這一點上,這只是一個理解爲什麼它的代碼不能完全按照它應該的方式工作的問題。任何幫助將大大讚賞。

此外,該算法的運行下來,如果你不能夠破譯我的代碼:在啓動

  • 文件

    • 全局變量的md(鼠標按下)設置爲0。onmousedown將md設置爲1;相反地​​,onmouseup放回去在0
    • 用戶的當前選擇的顏色被存儲爲索引在cur_color
    • 調色板的用戶的顏色存儲在調色板陣列
    • 調色板[cur_color]引用用戶的當前所選顏色
    • 在移動通過瓷磚,如果鼠標被按下,肘節()函數啓動
    • 切換()的的backgroundColor問題與用戶的cur_color比較瓷磚的
    • 如果它們是不同的,cur_color覆寫,有效地「畫」畫布
    • 這種情況持續下去,直到用戶已經放手的那個部分去他們的鼠標按鈕

    總的來說,這是一個非常基本的方法,但是整個鼠標被按下而沒有註冊,直到一個晚上的事情正在殺死我。同樣,對這個問題的底部的幫助絕對值得讚賞。

  • 回答

    1

    這是因爲您最初停下來時不會調用tile_over。閱讀上面的步驟可以看到。

    這裏有一個修復,將其添加到onmousedown事件功能:

    var target = e.target || e.srcElement; 
    if (target.tagName == 'DIV' && target.className == 'tile') { 
        tile_over(target); 
    } 
    

    顯然有一個框架來處理讓鼠標事件的目標等等將使這更容易。

    您需要刪除mouseup時沒有觸發鼠標懸停時發生的切換,我沒有打擾跟蹤它,因爲它應該是顯而易見的。