PDA

Volledige versie bekijken : addChild vraagje


darkslayer
%Europe/Berlin %846 %2008, 20:18
ik ben een class aan het maken, maar ik ben tegen een een probleempje gekomen.

wat ik dus wil hebben is dat het geladen plaatje in de MovieClip mc wordt geladen.
En dat mc dan gedisplayed wordt met addChild.

Wie kan mij helpen? de relevante code staat hier onder.


private var mc:MovieClip = new MovieClip();
private var imageLoader:Loader = new Loader();


private function displayImage():void {
imageLoader.load(new URLRequest(images[counter]));
// wat moet hier?
}

Mr. Black
%Europe/Berlin %874 %2008, 20:58
mc.addChild( imageLoader );

En dan natuurlijk nog de mc aan de stage toevoegen, anders heeft het allemaal weinig zin.

Succes nog! :)

darkslayer
%Europe/Berlin %735 %2008, 17:39
ik heb nu dit:


private var mc:MovieClip = new MovieClip();
private var imageLoader:Loader = new Loader();


private function displayImage():void {
imageLoader.load(new URLRequest(images[counter]));
mc.addChild(imageLoader);
this.addChild(mc);
}





Maar Hij laat het plaatje nog steeds niet zien :S

B-Mantis
%Europe/Berlin %750 %2008, 18:01
je moet een event listener maken die wacht tot het plaatje daadwerkelijk geladen is. Wat je nu doet, is het programma in een fractie van een seconde te laten beginnen met laden en direct het plaatje op het scherm te zetten. Als je in de flash help kijkt naar de Loader Class dan vind je wel de event listener die ik bedoel. (Ik geloof dat je Event.COMPLETE ofzo moet hebben)

En weet je zeker dat de bovenstaande functie uberhaubt aangeroepen wordt?

TheDutch
%Europe/Berlin %252 %2008, 06:04
je moet een event listener maken die wacht tot het plaatje daadwerkelijk geladen is. Wat je nu doet, is het programma in een fractie van een seconde te laten beginnen met laden en direct het plaatje op het scherm te zetten.
Is niet nodig bij de Loader class. Je kunt hem direct aan het display list toevoegen zonder eerst te wachten tot het volledig geladen is :).

TheDutch
%Europe/Berlin %253 %2008, 06:04
Maar Hij laat het plaatje nog steeds niet zien :S
Heb je de class zelf - waar displayImage() zich in bevindt - wel aan het display list toegevoegd?

darkslayer
%Europe/Berlin %530 %2008, 12:44
ik geef mijn hele class wel.


package {

import flash.net.*;
import flash.display.*;
import flash.events.*;

public class makeSlideshow extends MovieClip {

private var XMLPath:String;
private var XMLLoader:URLLoader = new URLLoader();;
private var xml:XML;
private var images:Array = new Array();
private var mc:MovieClip = new MovieClip();
private var imageLoader:Loader = new Loader();
private var list:XMLList;
private var counter:int = 0;

public function makeSlideshow(path:String) {
this.XMLPath = path;
XMLLoader.addEventListener(Event.COMPLETE, onLoaded);
XMLLoader.load(new URLRequest(this.XMLPath));
}

private function onLoaded(e:Event):void {
xml = new XML(e.target.data);
list = xml.PLAATJE;
for (var i:uint = 0; i < list.length(); i++) {
images.push(list[i]);
}

trace('image names loaded');

displayImage();
}

private function displayImage():void {

imageLoader.load(new URLRequest(images[counter]));

mc.addChild(imageLoader);
this.addChild(mc);

trace('image loaded and displayed');
}
}
}


Deze roep ik als volgt aan:

var slideshow:makeSlideshow = new makeSlideshow('images.xml');

Hopelijk hebben jullie hier wat meer aan

Mr. Black
%Europe/Berlin %665 %2008, 15:58
Je moet de makeSlideshow instantie óók nog aan de DisplayList toevoegen:

var slideshow:makeSlideshow = new makeSlideshow('images.xml');

this.addChild( slideshow );

Verder is het het netst om classes altijd met een hoofdletter te laten beginnen. En toewijzingen doe je meestal in de constructor, niet daarvoor.

// dus i.p.v. dit:
private var images:Array = new Array();

// dit:
private var images:Array;

// en dan in de constructor:
images = new Array();


Succes nog! :)

TheDutch
%Europe/Berlin %917 %2008, 22:01
Heb je de class zelf - waar displayImage() zich in bevindt - wel aan het display list toegevoegd?
Je moet de makeSlideshow instantie óók nog aan de DisplayList toevoegen.
Precies! :)

darkslayer
%Europe/Berlin %535 %2008, 12:50
Hij werkt:D

Ik dacht al waarom werkt hij nu niet, Maar ik hoefde helemaal niet in de class te wezen :P. Bedankt jongens, weer wat geleerd :D