Never mind any of that nonsense. I had the Actor setting its scale to 100 in the init method of the room. Removing that makes it work properly. Strange behaviour, though. Will do more experimenting and let you know if I got it working the way I want without problems.
There's more than just scaleX and scaleY properties. There's also scaleSignal and maxScale, and I suspect if you manipulate some of these without also changing the others, then things get wonky. Hence why they made the setScale method and the ScaleTo scaler.
EDIT: Eureka! Now I just need to get the palette intensity to fade out with it after it reaches a certain threshhold. What's a good way to do this and sync it up with ScaleTo? How I had it before was once the scale reached level 100 (of 128) the intensity (0 - 100) would decrease with it until both reached 0 at the same time. Would I need to utilize the doit method for this?
I can think of a few ways:
- Make an instance of ScaleTo in your room file and override its doit method (being sure to call (super doit:)), and then do whatever you want in the doit to change the palette. Then use this instance in the setScale call instead of the ScaleTo class.
- Given that you know the scale step and the start/target scales, you should be able to figure out how many cycles the scaling operation will take. So have a Script whose doit changes the palette intensity over this many cycles.