However, I happened to be trolling around Senocular's site and found his MovieClipProxy class. This class creates an object with all of the standard MovieClip properties with getter and setter functions and all the standard MovieClip methods together with the standard functions, like onEnterFrame, envoked using the call statement and the correct scope.
If I change the setter and getter for _visible as follows:
function get _visible():Boolean { trace("get _visible"); return _mc._visible; } function set _visible(v:Boolean):Void { trace("set _visible"); this._xscale *=2; _mc._visible = v; }
Note that I am just setting the _xscale when _visible is set just for a double visual confirmation.
If you create a new Actionscript 2 .fla tester file with the code:
import edu.clips.test.MovieClipProxy; var mcp:MovieClipProxy = new MovieClipProxy(this, "test", 1); trace("_xscale before first set _visible "+mcp._xscale); mcp._visible = false; mcp.clear(); mcp.lineStyle(2, 0x0000FF, 100, true); mcp.moveTo(0, 0); mcp.lineTo(200, 100); trace("_xscale before second set _visible "+mcp._xscale); mcp._visible = false; trace("_xscale after second _visible "+mcp._xscale); this.test._visible = true; trace("_xscale after movieClip set _visible "+mcp._xscale); trace("or "+this.test._xscale);
and test it, you get the output:
_xscale before first set _visible 100 set _visible get _visible _xscale before second set _visible 200 set _visible get _visible _xscale after second _visible 400 _xscale after movieClip set _visible 400 or 400
When you reference the MovieClipProxy object mcp, the setters and getters are used and applied to the MovieClip this.test. When you reference this.test._visible directly, the setter is not used.
Now you are in the position to capturing the setting of _visible and do something more sensible than upscaling, as long as you create a MovieClipProxy and reference it.
This still leaves the question of whether this approach can be bolted on to the method we are using to create Classes that extend MovieClip.
No comments:
Post a Comment