PDA

Volledige versie bekijken : probleem met removeChild


mitchelvase
%Europe/Berlin %633 %2009, 16:11
Ik vroeg me af of iemand me kon helpen met removeChild
Ik heb een class preloadContent gemaakt, en die preload content

Maar wanneer ik een extern image of swf wil inladen dan verwijdert hij niet de oude content, dit probleem komt zo vaak bij me voor :(

Hij zet nu telkens alle swf over elkaar heen vandaar dat ik ze eerst wil verwijderen voor dat de nieuwe komt.

Misschien dat iemand me goed kan uitleggen hoe ik nou met die
removeChild zit



Hieronder kun je mijn class vinden:


package
{
import gs.*;
import gs.easing.*;
import flash.display.*;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.*;
import flash.net.*;


public class PreloadContent extends MovieClip
{
public var main;
public var xmlmenu;
public var imageLoader:Loader;

public var container;
public var placeholder;
public var changeSize;
public var url;

public var firstTime:Boolean = true;

public var hoog;
public var breed;


public function PreloadContent(mainClass, container, placeholder, changeSize):void
{
this.main = mainClass;
this.container = container;
this.placeholder = placeholder;

this.changeSize = changeSize;
}

public function preloadContent(contentUrl, hoog, breed):void
{

this.url = contentUrl;
// Show Preloader
this.placeholder.preloader.visible = true;

this.hoog = hoog;
this.breed = breed;

// Set properties on my Loader object
imageLoader = new Loader();
imageLoader.load(new URLRequest(url));
imageLoader.contentLoaderInfo.addEventListener(Pro gressEvent.PROGRESS, imageLoading);
imageLoader.contentLoaderInfo.addEventListener(Eve nt.COMPLETE, imageLoaded);
}

public function imageLoaded(e:Event):void {

// Hide Preloader
this.placeholder.preloader.visible = false;

this.changeSize.changeSize(this.hoog, this.breed);

// The container animation takes 1 seconde so wait until the animation is done and then load the image
TweenLite.to(this.container, 1, {onComplete:placeContent});
}

public function placeContent():void
{

// remove content
if (firstTime == false)
{
this.placeholder.imageLoadArea.removeChild(imageLo ader);
}
// Load Content
this.placeholder.imageLoadArea.addChild(imageLoade r);
trace(image);

firstTime = false;
}

public function imageLoading(e:ProgressEvent):void {
// Get current download progress
var loaded:Number = e.bytesLoaded / e.bytesTotal;

// Send progress info to "preloader" movie clip
this.placeholder.preloader.SetProgress(loaded);
}
}
}

EL Timboo
%Europe/Berlin %649 %2009, 16:34
Je moet het object wat je wil verwijderen weten aan te spreken. Dit kan door een variabele te vullen met de actieve content en die eerst te verwijderen. of door removeChildAt(0);

ALLE content op index 0 word dan verwijderd.

Grtzz

sjors-wat?
%Europe/Berlin %657 %2009, 16:46
if (firstTime == false) {
this.placeholder.imageLoadArea.removeChild(imageLo ader);
}
if (this.placeholder.imageLoadArea.content == null) {
this.placeholder.imageloadArea.addChild(imageLoade r);
}
firstTime = false;


Probeer dat eens? Ik ben er niet zeker van dat het nu wel goed is.. Maar je krijgt in
elk geval geen nieuwe als de andere niet weg is gehaald..

mitchelvase
%Europe/Berlin %441 %2009, 11:35
hey thanks voor jullie beide reacties,

Deze oplossing werkte voor mij:


public function placeContent():void
{

// remove content
if (firstTime == false)
{
trace("hallo");
this.placeholder.imageLoadArea.removeChildAt(0);
}
// Load Content
this.placeholder.imageLoadArea.addChild(imageLoade r);
//trace(image);

firstTime = false;
}



Maar is dit een goede oplossing en hoe zit dat precies met dat de content op index 0 wordt verwijdert?
Waar staat die 0 voor?

Een hoop vragen maar zoals ik al zei het is een veel voorkomend probleem voor mij
:)

sjors-wat?
%Europe/Berlin %443 %2009, 11:38
Zoals je weet begint as3 altijd bij 0 te tellen dus een array die er zo uit ziet:

[1, 2, 3, 4, 5];
//word zo genummerd:
[0, 1, 2, 3, 4];


Zo gaat dat ook met laagvolgorde als je zegt addChildAt, is 0 het eerste wat neer
gelegd word (dus die ligt onderaan), 1 komt daar bovenop enz.

Dat nummer kan niet hoger zijn dat het aantal objecten dat je hebt (in css kan dat wel)

Groeten,