PDA

Volledige versie bekijken : class ziet instance name als eigen property..?


darkslayer
%Europe/Berlin %749 %2008, 18:59
ik ben bezig aan de volgende class die ik in mijn flash file als document class gebruik:

in de flash file staan allemaal movieclips, c000000 tot c000050, maar als ik probeer alle visible properties van deze movieclips op false te zetten krijg ik de volgende error.


ReferenceError: Error #1069: Property C000000 not found on Omgeving and there is no default value.
at Omgeving/init()
at Omgeving()


wie kan mij helpen?

ps: als ik de code in de init functie gewoon in de flash file zelf zet dan doet hij het wel


package
{
import flash.display.MovieClip;
import flash.events.Event;

public class Omgeving extends MovieClip
{
private var totaalAantalPlaatjes:Number = 50;
private var plaatjesGrabber:Grabber;
private var phpFile:String = "test.php";

public function Omgeving(/*file:String*/)
{
//phpFile = file;

plaatjesGrabber = new Grabber();
plaatjesGrabber.addEventListener(Event.COMPLETE, phpLoaded);

init();
}

private function init():void
{
// alle plaatjes onzichtbaar maken

for (var i:Number = 0; i <= totaalAantalPlaatjes; i++) {
var addString:String = "0";

if (i < 10) {
addString += i.toString();
} else {
addString = i.toString();
}

if (this["C0000" + addString] == undefined) {
// niks doen
} else {
this["C0000" + addString].visible = false;
}
}

// php file inladen via Grabber class

plaatjesGrabber.load(phpFile);
}

private function phpLoaded(event:Event):void
{
// alle plaatjes die php file doorgeeft weer zichtbaar maken
trace(plaatjesGrabber.vars.level);
}
}
}

darkslayer
%Europe/Berlin %783 %2008, 19:48
ik heb de oplossing..

voor de liefhebbers:

this.getChildByName("C0000" + addString)

B-Mantis
%Europe/Berlin %809 %2008, 20:26
het probleem zat hem in het feit dat de conpiler kijkt of the class Omgeving de propery C00001 had. Als die niet in je class staat, denkt de compiler dat het niet zo is.

je kunt trouwens in plaats van
if (this["C0000" + addString] == undefined) {
// niks doen
} else {
this["C0000" + addString].visible = false;
}
beter

if (this["C0000" + addString] != undefined) {
this["C0000" + addString].visible = false;
}
doen.

TheDutch
%Europe/Berlin %818 %2008, 20:39
Wellicht is het zelfs beter om al die MovieClips in een Sprite te zetten en wanneer nodig de Sprite.visible op "false" zetten. Dat scheelt een hoop code en werk lijkt me :).

darkslayer
%Europe/Berlin %838 %2008, 21:06
Wellicht is het zelfs beter om al die MovieClips in een Sprite te zetten en wanneer nodig de Sprite.visible op "false" zetten. Dat scheelt een hoop code en werk lijkt me :).

Hij moet alleen op het begin alle movieclips onzichtbaar maken.

Dus om alles in een sprite te zetten is volgens mij meer code dan gewoon even loopen.

evengoed bedankt voor de tip om de if statement korter te maken.

TheDutch
%Europe/Berlin %875 %2008, 22:01
Ok duidelijk. Maar lijkt het je dan niet beter om referenties naar die MovieClips in een Array op te slaan om vervolgens daar overheen te loopen om ze onzichtbaar te maken?

B-Mantis
%Europe/Berlin %952 %2008, 23:51
vooral als al die sprites een zekere logische rangschikking hebben, is het misschien nog beter om alle scriptes tijdens run-time toe te voegen. Dan heb je direct alle referenties en kun je ze in de array stoppen.