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

getBounds returns unexpected result after caching with a non-1 scale #1064

Open onedrop opened 2 years ago

onedrop commented 2 years ago

If you call cache() on a MovieClip and provide a non-1 value for the scale parameter, you will get an unexpected result when retrieving its bounds afterwards via getBounds(). The resulting width and height of the bounds object seem to be incorrectly divided by the scale the clip was cached at.

See barebones example here... https://jsbin.com/kazoreseri/edit?html,output

@danzen @lannymcnie

danzen commented 2 years ago

Thanks for reporting @onedrop. Looking into it.

danzen commented 2 years ago

Sorry @onedrop - lost this thread.

When I set the bounds before caching it works fine. I am really not sure where the bounds are coming from in the first place. It has been my experience with Animate that movieclips do not have bounds set - or at least I have always had to manually set them. For instance, if I put a circle MovieClip on the stage and ask for getBounds() it returns null for me. So why did your Rectangle think it had bounds? What did you do differently?

var clip = new lib.myclip();
clip.setBounds(0,0,111,111);
stage.addChild(clip);
var bounds = clip.getBounds();
console.log('bounds before caching', bounds);
clip.cache(bounds.x, bounds.y, bounds.width, bounds.height, 2);
console.log('bounds after caching', clip.getBounds());
console.log(clip.bitmapCache);

image