SORU
11 EYLÜL 2008, PERŞEMBE


Nasıl bir tuval öğesi üzerinde fare bir tıklama koordinatlarını alabilir miyim?

'X ve y koordinatları (tuval öğe göreceli) döndürecektir tuval öğesi için bir tıklatın olay işleyicisi eklemek için en kolay yolu nedir?

Hayır eski bir tarayıcı gerekli, Safari, Opera ve Firefox uyumluluk yapacak.

CEVAP
9 Mayıs 2011, PAZARTESİ


Tuval her zaman tüm sayfaya göre tarz değil bu yana, canvas.offsetLeft/Top her zaman ihtiyacın olan şey geri gelmez. div bir elemanı position: relative tarzında bir tuval içeren uygulamalı gibi bir şey olabilir offsetParent unsuru, göreli olarak bu piksel sayısını döndürür. Bu hesap üzerinden offsetParents zinciri, tuval öğesi kendisi ile başlayan bir döngü. Bu kod mükemmel benim için çalışıyor, Firefox ve Safari'de denedim ama tüm çalışması gerekir.

function relMouseCoords(event){
    var totalOffsetX = 0;
    var totalOffsetY = 0;
    var canvasX = 0;
    var canvasY = 0;
    var currentElement = this;

    do{
        totalOffsetX  = currentElement.offsetLeft - currentElement.scrollLeft;
        totalOffsetY  = currentElement.offsetTop - currentElement.scrollTop;
    }
    while(currentElement = currentElement.offsetParent)

    canvasX = event.pageX - totalOffsetX;
    canvasY = event.pageY - totalOffsetY;

    return {x:canvasX, y:canvasY}
}
HTMLCanvasElement.prototype.relMouseCoords = relMouseCoords;

Son satırı şeyleri fare koordinatları canvas öğesine göre almak için uygun yapar. Yararlı koordinatlarını elde etmek için gerekli olan şeydir

coords = canvas.relMouseCoords(event);
canvasX = coords.x;
canvasY = coords.y;

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • fouseyTUBE

    fouseyTUBE

    21 Mart 2011
  • MW Technology

    MW Technolog

    28 EKİM 2009
  • SRI International

    SRI Internat

    30 NİSAN 2008