Salut
J'ai fait un petit programme sous Processing qui utilise le "mouseY" pour une variable. La fenêtre de rendu fait automatiquement la taille de l'écran et est placée en fond de page, derrière les éléments HTML, en "fixed". Le fond ne bouge donc pas quand on scrolle vers le bas.
Le problème, c'est que si la page html est très haute (bcp d'éléments), la valeur de mouseY grandit en fonction de ça. Elle ne s'arrête pas à la fenêtre de rendu mais elle est en rapport avec la hauteur de la page html. Ca me fait foirer toutes les valeurs.
Y'a t-il une solution?
Merci
Hors ligne
Salut,
tu peux regarder avec la value event.screenY : https://developer.mozilla.org/en/DOM/event.screenY
Je crois qu'il va te falloir bidouiller directement les fonctions qui gèrent ça dans processing.js
Le mieux est de mettre un point d'arrêt (conditionnel sinon tu ne t'en sortiras pas) dans cette fonction avec firebug et de voir quel est le comportement exact avec ta page.
function calculateOffset(curElement, event) { var element = curElement, offsetX = 0, offsetY = 0; p.pmouseX = p.mouseX; p.pmouseY = p.mouseY; if (element.offsetParent) { do { offsetX += element.offsetLeft; offsetY += element.offsetTop } while ( !! (element = element.offsetParent)) } element = curElement; do { offsetX -= element.scrollLeft || 0; offsetY -= element.scrollTop || 0 } while ( !! (element = element.parentNode)); offsetX += stylePaddingLeft; offsetY += stylePaddingTop; offsetX += styleBorderLeft; offsetY += styleBorderTop; offsetX += window.pageXOffset; offsetY += window.pageYOffset; return { "X": offsetX, "Y": offsetY } } function updateMousePosition(curElement, event) { var offset = calculateOffset(curElement, event); p.mouseX = event.pageX - offset.X; p.mouseY = event.pageY - offset.Y }
*curElement est ton canvas et event est l'évènement mousemove...
Dernière modification par 22_ (2011-10-19 15:49:44)
Hors ligne
OK...
Merci beaucoup, mais je crois que je vais faire autrement, car la c'est un peu trop avancé pour mes maigres connaissances en javascript. Je voulais juste savoir s'il y avait une fonction de base dans processing qui marcherait pour ce genre de choses. Je vais juste mettre une valeur max à mouseY et ça fera la blague.
Merci quand même pour les recherches.
Hors ligne