我有我的JavaScript操作的基本思想。Animate Over Shooting Mouse單擊JQuery?
我的JavaScript的一點是讓id'player'的圖像移動到用鼠標點擊的位置,只有當我點擊'stage'id爲div的div並且動畫持續3秒。
與此同時,當動畫運行時,頭部應該變成'玩家正在移動',而不是當它靜止時並顯示'玩家仍然'。
現在,在Chrome(也許是Chrome的一個bug)中,JS的基本功能就起作用了。然而,它似乎超過了我在第一輪點擊鼠標的位置,然後當我再次點擊'stage'div時幾乎沒有移動。
如果有人看到我可能遇到問題,請告訴我!
這裏是我的JQuery EDITED:
$(document).ready(function(){
$('#stage').click(function(e){
$('#header h1').html('Player is moving!');
$('#player').animate({
top: e.pageY + 'px',
left: e.pageX + 'px'
}, 3000, function(){
$('#header h1').html('Player is standing still...');
});
});
});
我已經解決了我的CSS問題,所以不用擔心,但代碼位於CSS下方,以防有人認爲問題可能存在。
謝謝!
編輯:
這裏是CSS。這個問題已經解決了,但它已經提供了方便,如果你認爲像超調圖像的問題可能在於內以任何理由:
#header {
width: 600px;
margin: 20px auto 10px;
padding: 5px;
background-color: whiteSmoke;
border: 1px solid #aaa;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
box-shadow: 0 0 5px #ccc;
}
#header h1 {
text-align: center;
margin: 0;
}
#stage {
overflow: hidden;
width: 600px;
height: 400px;
margin: 0 auto;
padding: 5px;
background-color: whiteSmoke;
border: 1px solid #aaa;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
box-shadow: 0 0 5px #ccc;
position: relative;
}
#player {
position: absolute;
width: 36px;
}
我相信e.clientX,e.clientY會更適合來獲得當前鼠標的位置。此外,請記住您希望圖像相對於鼠標點擊的位置。如果要將其居中,則必須減去圖像寬度的一半,如果要將它放在*鼠標單擊之前,請減去整個寬度。 – anson
@andbeyond我確實希望將當前鼠標點擊位置傳遞給動畫函數,因此我使用了e.client。我對你的答案的其餘部分感到困惑....請提供更多詳細信息? – ZAX
好的,你的代碼表明你正在使用'e.pageX,e.pageY',所以你可能想要更新它。另一方面,如果你只是使用clientX和clientY,那麼圖像左上角的點就是這個點。因此,您可能需要減去或添加一點到clientX,clientY值以根據您的喜好定位圖像。試試看,你會看到它是如何工作的。 – anson