CreateJS / EaselJS

The Easel Javascript library provides a full, hierarchical display list, a core interaction model, and helper classes to make working with the HTML5 Canvas element much easier.
http://createjs.com/
MIT License
8.11k stars 1.97k forks source link

Hit area detection on Samsung Internet Browser #1075

Open kulabros opened 1 year ago

kulabros commented 1 year ago

Hello guys! I've found there's some problem with hitArea detection on movieclips, with shape rectangle hitArea on Samsung Internet Browser on touch devices. At all other tested browsers the functionality of my application and it's buttons works everywhere ok, but not on Samsung Internet Browser. I've found this topic - https://stackoverflow.com/questions/72203563/createjs-click-target-is-wrong-on-samsung-internet-browser - I was wondering it helps, and yes, it solves issue for some cases of the application, but for others don't - when patch is applied, some buttons work of after it wasn't before, but some others stops to work.. I've checked whats going on in _getObjectsUnderPoint method, and in default createjs code on samsung browser it really detects click anywhere to any button randomly.. I'm running 0.8.4, I've tested 1.0.0, tried to cache the shape hitarea, click or mousedown event.. When I logged, it seems the method is returning as hit on other buttons, that has mouseover/mouseout events only.. And when the patch from link was applied, there was problem with bounds, because not all assets have it defined... I tried to make condition to the touch devides with the patch from link, which has solve the isse for some of the application instances, but for some it made unable to touch on any touch device, failing at missing bounds.. So my question is, what's wrong on samsung browser, how should I define hitArea for the MovieClip and get right hitArea test, is there anyone other having same issue, or is it known issue of samsung browser, OR what I think - what can be wrong in my application regarding to movieclip's hitArea shape (or shape in container), caching it, setBounds, or maybe container.on vs. container addEventListener... I realy appreciate any help from you, best regards! :)

danzen commented 1 year ago

Hi @kulabros - sorry for the delay. Could you please test this file https://zimjs.com/test/samsung.html and press the buttons to see what the result is. We assume that if other devices are working properly, that your code is good and it a Samsung issue - what does it do in Chrome on Samsung? This link works for me on Samsung Galaxy Tab in both Chrome and Samsung browsers. It is using a slightly modified CreateJS that deals differently with Device Pixel Ratio than the CreateJS with Adobe.

image