Одна из идей - нарисовать изображение на временном холсте, затем использовать getImageDate (), чтобы получить данные для интересующего пикселя и проверить, является ли его альфа-значение 0 (= прозрачным).
Ниже приведен эскиз решения. Предполагается, что ...
- x и y - координаты события щелчка мыши
- вы перебираете gameObjects, текущий объект хранится в переменной gameObject
- игровой объект был инициализирован с изображением, координатами x и y
Следующий код будет проверять, был ли клик в прозрачной области:
var tempCanvas = document.createElement('canvas');
if (tempCanvas.getContext) {
tempContext = tempCanvas.getContext('2d');
}
tempContext.drawImage(gameObject.img, 0, 0);
var imgd = tempContext.getImageData(x - gameObject.x, y - gameObject.y, 1, 1);
var pix = imgd.data;
if (pix[3] == 0) {
// user clicked on transparent part of the image!
}
Примечание: это, вероятно, довольно неэффективно. Я уверен, что кто-то может предложить лучшее решение.