Спасибо всем, кто откликнулся.
Сообщение от dmitriymar
|
Ужасный участок .
1 coords = this.getBoundingClientRect() вычислять нужно 1 раз при заходе на элемент , а не всякий раз при движении мыши -данные статичны при всяком вычислении.
2 (eY - coords.top)*4+100 (eY - coords.top)*400
3 при каждом мове не стоит "перерисовывать" лупу . Оптимальная частота 30 -60 кадров в секунду . События движения мыши вызовутся гораздо в большем количестве чем эта частота , и при соответствующих условиях будет явно виден эффект торможения.
|
Первый пункт исправил. Сам объект coords поместил в конструктор.
Imgt.shower = function (e,obj) {
var lupe = Imgt.lupe,
event = e || window.event,
eX = event.x || event.clientX,
eY = event.y || event.clientY,
y = -(eY - obj.coords.top)*4+100 + 'px',
x = -(eX - obj.coords.left)*4+100 + 'px';
lupe.style.top = 10 + eY + 'px';
lupe.style.left = 10 + eX + 'px';
lupe.style.backgroundPosition = x + ' ' + y;
};
Imgt.prototype.addEvent = function (event, handler) {
var self = this;
if(this.element.addEventListener) {
return this.element.addEventListener(event, function(e) {handler(e,self)});
}else if(this.element.attachEvent) {
return this.element.attachEvent('on' + event, function(e) {handler(e,self)});
}
};
По второму пункту мне не совсем понятно. Пробовал исправлять и виджет просто перестаёт работать.
А с третьим так и вовсе тьма
По идее нужно замедлить сам обработчик события mousemove, чтобы не так часто выполнялась функция Imgt.shower, но как это сделать пока не знаю.
Сообщение от dmitriymar
|
и конструкторы и прототипы и Dom + фишки Либо практически чистый копипаст, либо гений ,либо автор топика лукавит
|
В JS начал разбираться примерно в октябре 2012, но после того как чуть с ума не сошёл от рекурсии в функции вычисления факториала закинул. Вторая попытка началась с середины декабря, когда пришла книга Флэнэгана и пока продолжается (надеюсь и не закончится
). Возможно для опытного программиста, которому достаточно спецификацию прочитать, это и вечность, но для меня, с дипломом инженера-гидротехника, это недавно.
Копипаста здесь нет. Я как и, наверно, любой другой новичок хотел найти на форумах кого-нибудь вроде куратора, но прочитав не одну такую тему понял что бесполезно. И решил попробовать просто выложить код на обсуждение.
И до гения мне как до луны, потому как после некоторых тем просто мозги наружу