canvas ии события
я ввёл в канвас свою систему координат
нужно получить координаты клика мышью относительно моей системы координат |
Найди расстояние до точки отсчета своей системы и отнимай его от координат клика:)
|
var x=evt.pageX-ctx.canvas.offsetX-ctx.canvas.width/2; var y=evt.pageY-ctx.canvas.offsetY-ctx.canvas.height/2; console.log(x,y);//NaN NaN |
Начни с
console.log(evt.pageX, ctx.canvas.offsetX,ctx.canvas.width/2);Может откроет глаза:) |
Извиняюсь за офф-топ, а что есть канвас и где об этом написано?
|
А что, на гугле забанили???
UPD: google/search |
Нет, но лучше спросить у тех кто знает и получить конкретный ответ и по возможности рекомендацию где лучше об этом написано. А гугл же просто выдаст совпадения но он не скажет где лучше об этом написано.
|
2de,
ну не скажи. Обрати внимание, что первым пунктом в поиске нормальная статья с wikipedia. Там все коротко и ясно объясняется: и примеры, и ссылки полезные. Так что стоило все же сначала поискать:) |
короче
спасибо как получить в обработчике события нормальный this, а не объект-адресат события? |
Цитата:
А во-вторых, что такое "нормальный this"??? |
this в обычных условиях
объект, в методе которого находиимся |
Не нужно гнать:) Событие и есть метод дом-объекта, так что this ведет себя нормально ("в обычных условиях" :) ).
|
function qwerty(){ this.abc=10; ....... this.eventProcesser=function(evt){...} canvas.addEventListener("click",this.eventProcesser,false); } var a=new qwerty(); как получить a из обработчика события? window.a не предлагать |
По-моему, это this-головного мозга... Как бы то ни было, у меня никогда таких проблем не возникало!
|
По-моему мнению, использование здесь конструктора - это явный бред.. Но это лирика. А по теме, не поверишь:
a.abc |
а если у меня куча экземпляров а, все в разных переменных ?
а если я а как-то по другому назову? нужно как-то почище |
Ну раз так хочется через конструктор делать, придется сохранять this в локальную переменную. Тип того:
function qwerty(){ var that = this; this.abc=10; ....... this.eventProcesser=function(evt){ that.abc; ...} canvas.addEventListener("click",this.eventProcesser,false); } var a=new qwerty(); |
спасибо
а то я пытался через свойство сделать, почему-то не получалось function qwerty(){ .... this.eventProcesser=function(evt){ console.log(self);//window } this.eventProcesser.self=this; canvas.addEventListener("click",this.eventProcesser,false); } |
Часовой пояс GMT +3, время: 13:13. |