Real quick idea,not tested (the code below could probably be made better with a
rest statement - see link below), how about not doing it recursively (because
that's why it's calling remove more than once), but doing something like this:
import flash.display.Sprite;
private function removePrevious():void {
if (xAxis!=null) {
removeChild(xAxis);
xAxis = null;
}
if (yAxis!=null) {
removeChild(yAxis);
yAxis = null;
}
}
private function renderAxis(which:String):void
removePrevious();
switch (which)
{
case ("X") :
xAxis = new Sprite();
draw([xAxis]);
break;
case ("Y") :
var yAxis:Sprite = new Sprite();
draw([yAxis]);
break;
case ("both") :
var xAxis:Sprite = new Sprite();
var yAxis:Sprite = new Sprite();
draw([xAxis, yAxis]);
break;
}
}
private function draw(axes:Array):void
{
for (var i:int = 0; i < numAxes; i++)
{
addChild(axes[i]);
}
}
Or for the draw method, use a rest parameter instead of an array:
http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7f56.html
Jason Merrill
Bank of America Instructional Technology & Media · GCIB & Staff Support
L&LD
Interested in Flash Platform technologies? Join the Bank of America Flash
Platform Developer Community
Interested in innovative ideas in Learning? Check out the Innovative Learning
Blog and subscribe.
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Mendelsohn,
Michael
Sent: Wednesday, January 14, 2009 2:28 PM
To: Flash Coders List
Subject: [Flashcoders] recursive question?
Hi list...
I have two functions, where either an X is rendered, a Y is rendered, or
both an X and a Y. removePrevious() is called before anything gets
rendered, so as to clear the stage. The problem is when "both" are
rendered, removePrevious() is called twice. It first clears the stage,
renders a new x, then renders a new y -- but not before removing that
newly just created X. How can I avoid this?
Thanks,
- Michael M.
private function removePrevious():void {
if (xAxis!=null) {
removeChild(xAxis);
xAxis = null;
}
if (yAxis!=null) {
removeChild(yAxis);
yAxis = null;
}
}
private function renderAxis(which:String):void
removePrevious();
switch (which) {
case ("X") :
xAxis = new Sprite();
addChild(xAxis);
break;
case ("Y") :
yAxis = new Sprite();
addChild(yAxis);
break;
case ("both") :
renderAxis("X");
renderAxis("Y");
break;
}
}
_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders