Skip to main content
Known Participant
August 14, 2012
Answered

the deffrent between children and visibles objects

  • August 14, 2012
  • 1 reply
  • 2368 views

hi

i have problem here because iam confusing between these things , i know that visible property has to values true and false , and addchild is another thing because when you have two objects

then you put object 2 in object1 and i it will have its own x,y postion depend on that object , and object 1 is child for the main stage , but here is the problem

i.ve opened discuss before this

http://forums.adobe.com/message/4615780#4615780

and when i remove the child , its effect will be there ?? on the stage !! it is like hiding object

? so iam very confuse now , also if removechild doesn,t remove the object from existing then how can i remove it??

thank you and i hope you guys get what imean in my question

please check this link (my old discuss)

http://forums.adobe.com/message/4615780#4615780

thank you

This topic has been closed for replies.
Correct answer kglad

i copied it then i paste in my code but the errors still!

thank you again for your replay


that error is not from the code i suggested.  somewhere in your code you're trying to reference bat1 after it is nulled.

use an if-statement to prevent that.

if(bat1){

}

1 reply

kglad
Community Expert
Community Expert
August 14, 2012

if you want to destroy a display object, remove it from the display list, remove all listeners and object references and null the object.  for example,

bat1.parent.removeChild(bat1);  // if bat1 is in display list

bat1.removeEventListener(Event.ENTER_FRAME,f);  // if this listener was previously added

batArray.splice(batArray.indexOf(bat1),1);  // if bat1 is in the array batArray

bat1=null;

Known Participant
August 14, 2012

thx , i did all these steps but in the bat still exist

look

1- remove it from display list

in the main class

if (hero.hitTestObject(portal3)){

      var map4:BACKGROUND = new BACKGROUND

      if(bat1.stage){

     removeChild(bat1)

     bat1.removeEventListener(Event.ENTER_FRAME, onEnterFrame);

     }

2-remove it from the display list, remove all listeners and object references and null the object.

in the bat1 class

private function onRemovedFromStage(event:Event):void

  {

   removeEventListener(Event.ENTER_FRAME, onEnterFrame);

   removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);

   removeEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage);

   null;

  

   trace("bat removed");

  }

thank you

Known Participant
August 14, 2012

no, you didn't.  where is bat1=null??

putting null; on a line by itself in your Bat1 class does nothing.


here

if (hero.hitTestObject(portal3)){

      var map4:BACKGROUND = new BACKGROUND

      if(bat1.stage){

     removeChild(bat1)

     bat1 = null;

     bat1.removeEventListener(Event.ENTER_FRAME, onEnterFrame);

but i get these thing after getting to the portal

TypeError: Error #2007: Parameter hitTestObject must be non-null.

at flash.display::DisplayObject/_hitTest()

at flash.display::DisplayObject/hitTestObject()

at MAIN/onEnterFrame()

thank you for your replay