PDA

Volledige versie bekijken : error #1009 null object reference bij inladen swf


jawel
%Europe/Berlin %843 %2007, 21:14
Ik heb in AS3 een preloader geschreven, althans ik probeer het, maar ik krijg de volgende foutmelding:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
at InitClass$iinit()

InitClass is de Document Class van het bestand dat ik probeer te laden ("portfolio.swf"). Hoe kan ik deze foutmelding voorkomen?

Dit is de code van de preloader:

package
{
import flash.display.*;
import flash.events.*;
import flash.text.*;
import fl.transitions.*;
import fl.transitions.easing.*;
import flash.geom.*;
import flash.net.URLRequest;

public class PreloaderClass extends MovieClip
{
public function PreloaderClass()
{
addChild(loadTF);
loadTF.alpha = 0;

loadTF.x = (stage.stageWidth/2)-(loadTF.width/2);
loadTF.y = (stage.stageHeight/2)-(loadTF.height/2)+10;

var ldr:Loader = new Loader();
addChild(ldr);
var urlReq:URLRequest = new URLRequest("portfolio.swf");

var loaderUp:Tween = new Tween(loadTF,"alpha",Strong.easeOut,loadTF.alpha,1,0.3,true);
new Tween(loadTF,"y",Strong.easeOut,loadTF.y,(stage.stageHeight/2)-(loadTF.height/2),0.3,true);
loaderUp.addEventListener(TweenEvent.MOTION_FINISH ,on_progress);
loaderUp.addEventListener(TweenEvent.MOTION_FINISH ,load_movie);

function on_progress(event:TweenEvent):void
{
loadTF.text = "LOADING "+Math.round((ldr.contentLoaderInfo.bytesLoaded/ldr.contentLoaderInfo.bytesTotal)*100)+"%"
}
function load_movie(event:TweenEvent):void
{
ldr.load(urlReq);
}
}

}
}

Alvast dank

TheDutch
%Europe/Berlin %889 %2007, 22:20
De property "loadTF" zie ik nergens aangemaakt worden dus bestaat hij waarschijnlijk niet en is dat de rede van de error :).

jawel
%Europe/Berlin %892 %2007, 22:25
De property "loadTF" zie ik nergens aangemaakt worden dus bestaat hij waarschijnlijk niet en is dat de rede van de error :).

Sorry, dat was ik vergeten te zeggen, die zit al op de stage mbehulpv de grafische interface

TheDutch
%Europe/Berlin %901 %2007, 22:38
Dan moet je naar de stage verwijzen en niet naar de class zoals je dat nu doet :).

jawel
%Europe/Berlin %903 %2007, 22:40
Dan moet je naar de stage verwijzen en niet naar de class zoals je dat nu doet :).

stage.addChild(loadTF); ?

josko
%Europe/Berlin %916 %2007, 22:59
Hoop dat ik het goedzeg hoor :)

Binnen de scope van je functie bevinden zich geen verwijzingen naar objecten van de stage.
Dus je kan niet gewoon loadTf aanroepen, zoals jij zou willen.

Hoe zou hij dan moeten?
Zo:
public class PreloaderClass extends MovieClip
{
public var loadTF:MovieClip;
public function PreloaderClass( Target:MovieClip)
{
loadTF = Target;
addChild(loadTF);
loadTF.alpha = 0;

loadTF.x = (stage.stageWidth/2)-(loadTF.width/2);
loadTF.y = (stage.stageHeight/2)-(loadTF.height/2)+10;

var ldr:Loader = new Loader();
addChild(ldr);
var urlReq:URLRequest = new URLRequest("portfolio.swf");

var loaderUp:Tween = new Tween(loadTF,"alpha",Strong.easeOut,loadTF.alpha,1,0.3,true);
new Tween(loadTF,"y",Strong.easeOut,loadTF.y,(stage.stageHeight/2)-(loadTF.height/2),0.3,true);
loaderUp.addEventListener(TweenEvent.MOTION_FINISH ,on_progress);
loaderUp.addEventListener(TweenEvent.MOTION_FINISH ,load_movie);

function on_progress(event:TweenEvent):void
{
loadTF.text = "LOADING "+Math.round((ldr.contentLoaderInfo.bytesLoaded/ldr.contentLoaderInfo.bytesTotal)*100)+"%"
}
function load_movie(event:TweenEvent):void
{
ldr.load(urlReq);
}
}

}
heb aangenomen dat loadTF een MC is, dat weet ik natuurlijk nog niet [:o)]

jawel
%Europe/Berlin %924 %2007, 23:11
btw: Bedankt voor de hulp allebei.

Ik denk niet dat het probleem ligt bij loadTF. Als ik ldr.load(urlReq); weglaat krijg ik de foutmelding namelijk niet. Het heeft ook iets te maken met het laden van portfolio.swf, want InitClass is de Document Class van portfolio.swf. De Document Class van preloader.swf is PreloaderClass.

jawel
%Europe/Berlin %969 %2007, 00:16
dit is de structuur van InitClass. doe 2 keer addChild zonder stage. ofzoiets, is dit misschien het probleem?

package
{
import flash.display.*;
import flash.events.*;
import flash.text.*;
import bdJPG;
import fl.transitions.*;
import fl.transitions.easing.*;
import flash.geom.*;
import flash.net.URLRequest;

public class InitClass extends MovieClip
{

public function InitClass()
{

}


}

}

}

jawel
%Europe/Berlin %892 %2007, 22:25
Goed ik hoop echt dat iemand mij kan helpen want ik heb gewoon een preloader nodig :(

bijgaande sources van InitClass.as en PreloaderClass.as

Edit: Het gaat in ieder geval fout bij het verwijzen naar stage.

Torquez
%Europe/Berlin %921 %2009, 22:06
Mmm dat probleem heb ik ook... <ik krijg ook altijd problemen als ik er GEEN tijd voor heb ;)>
volgens mij heeft het te maken dat je in je initClass een aantal keer naar je stage verwijst...
Correct me if im wrong ;)

Ik had namelijk een programmaatje liggen die het wel deed met dezelfde preloader die ik ook gebruikte voor diegene die het niet deed..
dus om te testen had ik bij het programmaatje dat het WEL deed iets toegevoegd aan de stage.. en voila... hij deed het niet meer + ik kreeg die 1009 error...
Maargoed... nog geen oplossing gevonden hiervoor..

Als er mensen zijn die er wel verstand van hebben :P please help!!
suc6 ermee.. k hoor t graag als je het voor elkaar krijgt!


Edit:
Oh... lol ik lees nu dat je die conclussie ook al getrokken had ;)
Mensen HELP :P is er een andere manier om te verwijzen naar de stage... of moet ik dat gewoon niet meer doen..