Ah, this is really odd. This problem caught me by surprise, too! I would have sworn that this works just as you expect it to. But indeed, it doesn't.
I compared this to the way Flash is doing it; and, funny enough, Flash produces the exactly same result as Sparrow (and Starling).
I analyzed why this is happening. The reason is the following: the "set width" property is calling the "set scaleX" property internally. But the scaleX- and scaleY-properties are not affected by rotation, while "width" and "height" are! Which produces a little paradox. 😉
So, when you change the width, Sparrow tries to change the scaleX value accordingly -- but when the object is rotated, that simply does not work:
- with a 90 degrees rotation, Sparrow would have to change scaleY instead;
- with anything in-between, Sparrow would have to update *both* scaleX and scaleY, in other words: changing the width would change the height, too (otherwise your image would become a parallelogram). And that would be just as bad: because in your sample, when you first set the width to "100" and then the height, the latter would change the width, so the height wouldn't be "100" anymore!
Strange enough, the only way to really fix this would be to add a "shear" parameter to display objects, thus allowing to deform them. (So that the image may legally become a parallelogram.)
To summarize: it's complicated! 🙄
You'll have to stick with your workaround! Another one would be to add the image to a sprite, rotate the image in the sprite, and then scale the sprite instead.
I hope my description makes sense! You may call this a bug, but it's a bug without a perfect solution, so I'll have to leave it at that.