Użyłem kodu Canvas podanego w innym miejscu na tej stronie, aby utworzyć ekran, na którym mam kilka zachodzących na siebie przezroczystych png z nieprzejrzystymi częściami o nieregularnych kształtach. Mogę uzyskać kolor pod kursorem i to jest świetne. Ale moje kształty są tego samego koloru i potrzebuję sposobu na uzyskanie identyfikatora konkretnego kształtu, więc wiem, który został kliknięty. Wyobraź sobie mapę wykonaną z nakładających się na siebie pngs dla kraju docelowego i chcesz wykryć, który kraj został kliknięty. Z tego co wiem, wykrywanie id dotyczy tylko regionów prostokątnych. Jakieś sugestie?Czy wykrywanie trafień HTML5 jest możliwe?
$('#myCanvas').click(function(e){
var position = findPos(this);
var x = e.pageX - position.x;
var y = e.pageY - position.y;
var coordinate = "x=" + x + ", y=" + y;
var canvas = this.getContext('2d');
var p = canvas.getImageData(x, y, 1, 1).data;
var hex = "#" + ("000000" + rgbToHex(p[0], p[1], p[2])).slice(-6);
alert(hex);
});
Ten kod pobiera i wyświetla kolor (findPos i rgbToHex są oddzielne funkcje przerwano dla jasności). Potrzebuję id! Wsparcie!
Jest to skomplikowane, ale w rzeczywistości całkiem sprytne. Mój klient ma aplikację, która ma kilkaset nachodzących na siebie obrazów (takich jak mapa), a każdy obraz jest najmniej dopasowanym prostokątem, więc przypadek # 1 będzie działał przez większość czasu. Zapętlanie przez kandydatów do odpowiednich kolorów dla jedynego, który zwraca wartość koloru> 0, jest idealnym rozwiązaniem. –
Dziękuję. Często dostarczam kod źródłowy, ale ten był zbyt długi, aby to zrobić. –
Nie jest potrzebne żadne źródło. Jest to na tyle obyczajowe, że nie służy to celowi. :) Już mam to działa i myślałem o zamieszczeniu na moim blogu. Jest to bardzo przydatne. –