Wednesday, 15 May 2013

actionscript 3 - removeChild for a map (mapQuest) -



actionscript 3 - removeChild for a map (mapQuest) -

i'm trying close map when user clicks on "back" button.

i'm using as3 adobe air app.

i've tried phone call function removechild(mymap) in order close it, it's not working (error #2025: supplied displayobject must kid of caller).

do know how can ?

here's code :

var mymap:tilemap = new tilemap("key_of_map"); addchild(mymap); visiblebutton(); } function visiblebutton():void { var skip:movieclip; skip = new skype addchild(skip); skip.addeventlistener(mouseevent.click, closemap, false, 0, true); } function closemap(e:mouseevent):void { trace("ferme carte"); var mymap:tilemap = new tilemap("key_of_map"); removechild(mymap); }

edit :

so, i'll give maximum details possible.

i've set straight code scenario :

at 11th image i've code button named "gomapbutton". action code :

gomapbutton.addeventlistener(mouseevent.click, calldisplaymap, false, 0, true); function calldisplaymap(event:mouseevent):void{ displaymap(); }

in 12th image i've got action code :

stop(); import flash.display.movieclip; import flash.display.sprite; import flash.display.stagescalemode; import com.mapquest.tilemap.*; import com.mapquest.latlng; import com.mapquest.tilemap.pois.*; import com.mapquest.services.directions.directions; import com.mapquest.services.directions.directionsconstants; import com.mapquest.services.directions.directionsevent; import com.mapquest.services.geocode.geocoder; import com.mapquest.services.geocode.*; import com.mapquest.services.geocode.geocoderevent; import com.mapquest.services.geocode.geocoderlocation; import com.mapquest.tilemap.size; import flash.display.bitmap; import com.mapquest.tilemap.tilemap; import com.mapquest.tilemap.controls.inputdevice.mousewheelzoomcontrol; import com.mapquest.tilemap.controls.shadymeadow.smlargezoomcontrol; import com.mapquest.tilemap.controls.shadymeadow.smviewcontrol; function displaymap():void{ trace("displaying map"); //turn scaling off this.stage.scalemode = stagescalemode.no_scale; // create new tilemap object, passing platform key var mymap:tilemap = new tilemap("fmjtd%7cluur2g0an0%2c2s%3do5-9azwdr"); mymap.size = new size(800, 533); mymap.addcontrol(new smlargezoomcontrol()); mymap.addcontrol(new mousewheelzoomcontrol()); mymap.setcenter(new latlng(-21.060478, 164.861113),12); //add map sprite. addchild(mymap); var mypoi:poi; //icones batteries [embed (source="huiles.png")] var huilesimg:class; var embeddediconpoi:poi; var myicon:mapicon = new mapicon(); myicon.setimage(new huilesimg(),22,32); embeddediconpoi = new poi(new latlng(-11.71199, 12.647725)); embeddediconpoi.rolloverandinfotitletext = "info place"; embeddediconpoi.icon = myicon; mymap.addshape(embeddediconpoi); visiblebutton(); } //this function makes button visible @ left corner of screen function visiblebutton():void{ var skip:movieclip; skip = new skype addchild(skip); skip.addeventlistener(mouseevent.click, closemap, false, 0, true); } //i'd close map when user click on skip button function closemap(e:mouseevent):void{ var mymap:tilemap = new tilemap("fmjtd%7cluur2g0an0%2c2s%3do5-9azwdr"); trace("ferme carte"); trace(mymap.parent == null); }

first of remove:

var mymap:tilemap = new tilemap("key_of_map");

from closemap function because ready initiated instance of map in first row of code.

i don't think need after first fix, if still getting error can utilize 1 instead.

mymap.parent.removechild(mymap);

like this:

stop(); import flash.display.movieclip; import flash.display.sprite; import flash.display.stagescalemode; import com.mapquest.tilemap.*; import com.mapquest.latlng; import com.mapquest.tilemap.pois.*; import com.mapquest.services.directions.directions; import com.mapquest.services.directions.directionsconstants; import com.mapquest.services.directions.directionsevent; import com.mapquest.services.geocode.geocoder; import com.mapquest.services.geocode.*; import com.mapquest.services.geocode.geocoderevent; import com.mapquest.services.geocode.geocoderlocation; import com.mapquest.tilemap.size; import flash.display.bitmap; import com.mapquest.tilemap.tilemap; import com.mapquest.tilemap.controls.inputdevice.mousewheelzoomcontrol; import com.mapquest.tilemap.controls.shadymeadow.smlargezoomcontrol; import com.mapquest.tilemap.controls.shadymeadow.smviewcontrol; // create new tilemap object, passing platform key var mymap:tilemap = new tilemap("fmjtd%7cluur2g0an0%2c2s%3do5-9azwdr"); function displaymap():void{ trace("displaying map"); //turn scaling off this.stage.scalemode = stagescalemode.no_scale; mymap.size = new size(800, 533); mymap.addcontrol(new smlargezoomcontrol()); mymap.addcontrol(new mousewheelzoomcontrol()); mymap.setcenter(new latlng(-21.060478, 164.861113),12); //add map sprite. addchild(mymap); var mypoi:poi; //icones batteries [embed (source="huiles.png")] var huilesimg:class; var embeddediconpoi:poi; var myicon:mapicon = new mapicon(); myicon.setimage(new huilesimg(),22,32); embeddediconpoi = new poi(new latlng(-11.71199, 12.647725)); embeddediconpoi.rolloverandinfotitletext = "info place"; embeddediconpoi.icon = myicon; mymap.addshape(embeddediconpoi); visiblebutton(); } //this function makes button visible @ left corner of screen function visiblebutton():void{ var skip:movieclip; skip = new skype addchild(skip); skip.addeventlistener(mouseevent.click, closemap, false, 0, true); } //i'd close map when user click on skip button function closemap(e:mouseevent):void{ trace("ferme carte"); trace(mymap.parent == null); if (mymap.parent == this) { removechild(mymap); } }

actionscript-3

No comments:

Post a Comment