Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Проверка поинта на картинке! (https://javascript.ru/forum/project/21251-proverka-pointa-na-kartinke.html)

dmitriymar 04.09.2011 17:10

Цитата:

Сообщение от Solovei95
Здесь описан особый метод рисования Image.

в чем он особый по сравнению с классическим лежащим на многих сайтах?в том что в нём ляп на ляпе?
var XCanvas = function(canvas,type){
this.canvas = canvas; ????????
this.ctx = this.canvas.getContext(type);
}
а если ид будет неправильным?
чегото ты мне напоминаешь Геворг. ник сменил?
и даже скажу больше-зачем получать всё изображение. достаточно получить его участок. нач. коорд там где мышь,конечные 1,1. итого получим однопикселное изображение ,какое разложив датой получим массив из 4х элементов . 4 й элемент это альфа.Итого всё то что ты написал сведётся к строкам.
1 навесить обработчики на канву
2 определить координаты клика на ней
3 получить однопиксельное изображение разложить его на составляющие
4 если код 4 го элемента не равен 0 то это точка
На всё про всё макс 10 строк.

Solovei95 04.09.2011 17:28

dmitriymar,
Вы мне щас намекнули про получение 1х1 из getImageData.
А теперь идите и посмотрите исходный код еще раз!

Solovei95 04.09.2011 17:29

Вот это вы имели ввиду?
if(x==null){x=0;}
if(y==null){y=0;}

x = parseInt(x);
y = parseInt(y);

var idat = obj.ctx.getImageData(x,y,1,1);

if(idat.data[3]==0)
{return false;} else
{return true;}

Это исправленная строчка в коде!

dmitriymar 04.09.2011 17:44

Цитата:

Сообщение от Solovei95
А теперь идите и посмотрите исходный код еще раз!

смотрел ,ничего нового и оригинального по сравнению с известным всем алгоритмом не увидел,увидел море косяков и строки ненужного кода.вообще не понимаю зачем объекты плодить-чтоб память жрали?
обработчик онклик на канву. и функция определения альфы и всё 10 строк макс
а это зачем ?
if(x==null){x=0;}
if(y==null){y=0;}
клик на канве по любому будут координаты
x = parseInt(x);
y = parseInt(y);
это зачем? приведение типов и так отработает.
итого:
в обработчике определить на каком клик,отменить всплытие,отменить стандартное поведение-что в коде не сделано.
определить альфу
И всё.

Solovei95 05.09.2011 09:28

Я кароче сделал простую строку!

//Check Point in Canvas of Image Object
obj.pointInPixel = function(x,y){
  if(obj.ctx.getImageData(x,y,1,1).data[3]==0) {
    return false;
  } else {
    return true;
  }
}

Solovei95 05.09.2011 09:39

Я кароче добавил colorPick.
Спецификации нет!
Описание: просто возвращает RGBA.

Solovei95 05.09.2011 09:43

ColorPick настолько суровая функция, что берет цвет пикселя у основного контекста.

dmitriymar 05.09.2011 16:06

Цитата:

Сообщение от Solovei95
ColorPick настолько суровая функция, что берет цвет пикселя у основного контекста.

а в канве откуда берётся не из основной?


Часовой пояс GMT +3, время: 18:54.