回答
是,使用mousemove
事件
var img = new Image;
img.src = 'http://files.myopera.com/lengoc89/albums/317185/3133~Kitty-Posters.jpg';
document.addEventListener('mousemove', function(e) {
e = e || window.event;
var tag = document.createElement('img');
console.log(e);
tag.src = img.src;
tag.style.position = 'absolute';
tag.style.height = '50px';
tag.style.width = '50px';
tag.style.top = (e.pageY || e.clientY) + 'px';
tag.style.left = (e.pageX || e.clientX) + 'px';
this.body.appendChild(tag);
}, false);
事後看來,這是一個非常愚蠢的答案。所以我會再次回答一個實際的例子,說明如何在HTML5中製作Flash文件中的內容。
如果你能夠完全理解這是如何工作的,那麼在閃光燈中做同樣的事情應該是沒有汗水的。但也要考慮到我無意中製作的演示比flash演示運行速度更快,更穩定,因此您可能會考慮將HTML5用於您的下一個項目。
我提出的例子是here,並且不用再費周折,我將通過線把它分解線,開始與HTML:
<canvas id="canvas" width="400" height="300">
Your browser does not support the HTML5 canvas. <br>
Get or upgrade to a modern browser like Google Chrome or Mozilla Firefox.
</canvas>
此創建DOM中的<canvas>
元件。畫布是包含在HTML5規範中的2D(即將推出的3D!)圖形API,可用於繪製圖形和製作動畫。您使用JavaScript
通過其drawing context
來控制畫布,因此深入瞭解ECMAscript
(其中包括JavaScript
和Flash的ActionScript
,它基於JavaScript
)將極大地幫助您。
現在的JavaScript:
ctx = canvas.getContext('2d');
這得到繪圖方面,它提供了讓你在畫布上繪製的方法。目前唯一的參數是'2d'
,但是有一個參數'experimental-webgl'
允許使用名爲web gl
的實驗性3D技術,但需要一個好的視頻卡。我相信這僅適用於Webkit瀏覽器,例如Google Chrome和Gecko瀏覽器,如Firefox。
注意:在我測試過的每個瀏覽器中,您不必使用document.getElementById()
方法通過其ID標識項目。只要id存在於HTML中,包含該名稱並以該屬性的每個元素的id命名的變量列表將被製作爲on load
。當然,這意味着您必須將<script>
標記放在HTML之下,而不是在它之上,因此可以事先加載DOM和節點列表。
mouse = [0,0];
imgLoaded = false;
trail = [];
這些變量用於跟蹤鼠標位置,圖像是否已加載,跟蹤和圖像的大小。 mouse
是一個數組,它包含鼠標的X和Y座標,並且每次鼠標移動時都會更新,imgLoaded
在稍後的函數中設置爲true,以指示圖像已被加載,因此它正確繪製,trail
是一個數組,自演示開始以來保存每個鼠標位置,它保存具有用於繪製軌跡的座標的陣列,並且與mouse
一起更新。
img = new Image();
img.onload = function(){
imgLoaded = true;
};
img.src = 'http://images.encyclopediadramatica.se/0/0a/Me_gusta_original.png';
這個代碼塊創建一個圖像,將其源到可靠的服務器保持我古斯塔圖片,而不是繪製圖像on load
,它更新imgLoaded
布爾以指示該圖像現在可以得出。
canvas.onmousemove=function(e){
var X,Y;
if(e.clientX){
X = e.clientX;
Y = e.clientY;
}else{
X = e.pageX;
Y = e.pageY;
}
mouse = [X,Y];
trail.push(mouse);
};
此事件功能(即在事件運行的特殊類型的函數)被綁定到畫布上,並且當它運行時,它抓住從已經傳遞到參數的e
變量鼠標的位置。完成後,它將座標添加到trail
陣列。
UPDATE = function(){
ctx.clearRect(0,0,canvas.width,canvas.height);
if(imgLoaded){
for(var i = trail.length-50;i<trail.length;i++){
if(trail[i]){
ctx.drawImage(img,trail[i][0],trail[i][1],100,100);
}
}
}
setTimeout(UPDATE,1000/60);
};
UPDATE();
這是處理其餘部分的地方。該函數被定義,然後在函數完成後立即運行,並在延遲1000/60
毫秒或60 fps時再次運行。現在我們實際上看到了一些畫布動作!
ctx.clearRect(0,0,width,height)
清除一切的整個畫布即如果圖像是通過請求imgLoaded
變裝上它
現在檢查得出。如果爲true,則繼續循環遍歷對象併爲每個座標繪製圖像。然而,這裏發生了一些非常聰明的事情。我不是從0開始i
,而是從trail.length-50
開始,並在trail.length
處結束,因爲實際上,我們只想顯示數組的一部分,而不是整個部分。
由於數組開始爲空,它會檢查布爾表達式trail[i]
是否返回true。如果是這樣,那麼它會繼續繪製這部分路徑。如果沒有,那麼它繞過它,避免錯誤。在循環之後,它通過再次運行自己完成。
至於如何隱藏光標並獲得虛線邊框,即CSS或層疊樣式表。這種語言允許精確控制頁面的樣式,以及給這個網站帶來什麼樣的色彩。
我希望這有助於比以前的答案,我給了,這是這條線之下更多:
Before reading: I apologize if it seems like I misinterpreted the question. The question is about how to detect mouse events and this works as a great beginner example to demonstrate mouse events.
在JavaScript中,有幾種方法去製作的圖像,當你將鼠標懸停在出現它,是漂亮,簡單的例子是:
HTML:
<div id="img"> i am a placeholder </div>
的Javascript:
var img = document.getElementById('img') var Main = { IN: function() { img.innerHTML = '<img src="img.jpg"></img>' }, OUT: function() { img.innerHTML = 'I am a placeholder' } } //I used an object to hold the functions and keep them uniform img.onmouseover = Main.IN img.onmouseout = Main.OUT //these events call the function
- 1. 使用光標的Javascript擦除圖像
- 2. 使用javascript自定義光標圖像
- 3. JavaScript的光標圖像位置
- 4. JavaScript,圖像不會出現
- 5. 圖標在選擇圖像時出現
- 6. 圖像到光標/自定義光標
- 7. 在鼠標光標處製作圖像點
- 8. 實現像等待光標
- 9. JavaScript更改光標圖標
- 10. 使用CSS的光標圖像
- 11. 圖像沒有出現在javascript畫布
- 12. 光標出現問題
- 13. 複製光標,使其出現兩次
- 14. 如何處理頁面加載後出現的徽標圖像?
- 15. 在編寫電子郵件時在光標處嵌入圖像
- 16. 如何使圖像在瀏覽器窗口的中心出現當光標懸停頂上不同的圖像
- 17. 使用jQuery/Javascript發光圖像
- 18. 使用Javascript處理圖像?
- 19. 使用javascript處理圖像
- 20. 使用JavaScript的背景圖像的徑向光標
- 21. 使用Javascript更改光標圖像(CSS URL)
- 22. 光標出現在EditBox的中心
- 23. 使用圖像文件作爲光標
- 24. 使用光標移動圖像
- 25. XLib:獲取光標圖像
- 26. 自定義光標圖像
- 27. 更改光標圖像
- 28. 使圖像不出現在Android圖庫
- 29. 如何在JavaScript中旋轉跟隨光標的圖像?
- 30. JavaScript縮放圖像到與IE兼容的鼠標光標
你到目前爲止試過了什麼?這不是雅虎的答案...如果你想要解決方案,請發佈一些相關的代碼。 – elclanrs 2012-02-11 02:47:45