J'utilise un fichier SWF (accueil) dans un autre fichier SWF (ranchleblanc_fr), ce qui provoque l'erreur 1009 apparaître:Erreur # 1009, ActionScript 3
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at accueil_fla::MainTimeline/frame1()"
Le premier SWF a un effet de particules en elle et ne démarre pas lorsque je charge la page pour la première fois. Si je clique sur n'importe quel bouton de la page principale et retourne à la page d'accueil, l'effet fonctionne. Mais si je clique à nouveau sur un autre bouton, j'obtiens une autre erreur 1009, mais cette fois-ci elle n'apparaît pas seulement une fois. Il apparaît encore et encore jusqu'à ce que je ferme le SWF.
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at accueil_fla::MainTimeline/newFlake()"
je vais inclure le code, mais avant de le faire, je dois dire que j'ai vérifié la boîte pour permettre le débogage dans les paramètres de publication, et je ne dispose pas d'un numéro de ligne pour localiser l'erreur. J'ai utilisé trace et a découvert que la variable null
est flake
. J'ai cherché sur Internet comment résoudre mon problème, et je pense que je dois utiliser une instruction if, donc assurez-vous que le programme fonctionne avec une variable null
. Je pense que je devrais vérifier si la variable flake est null
et si c'est le cas, déclarez une sorte de valeur.
Le problème est que je ne sais comment le code que l'instruction if ...
Voici mon code pour accueil_fla, cadre 1 (où toutes les actions de ce fla peuvent être trouvés)
for (var i:uint = 0; i < 50; i++)
{
flake.x = Math.random() * stage.stageWidth;
flake.y = Math.random() * stage.stageHeight;
flake.alpha = randRange(.3,1);
flake.scaleX = flake.scaleY = randRange(.3,1);
addChild(flake);
}
function randRange(low:Number, high:Number):Number
{
var randNum:Number = Math.random() * (high - low) + low;
return randNum;
}
this.addEventListener(Event.ENTER_FRAME, newFlake);
function newFlake(e:Event):void
{
var flake:Snowflake = new Snowflake(randRange(-1,1), randRange(2,5));
flake.x = Math.random() * stage.stageWidth;
flake.y = -5;
flake.alpha = randRange(.3,1);
flake.scaleX = flake.scaleY = randRange(.3,1);
addChild(flake);
}
var flake:Snowflake = new Snowflake(randRange(-1,1), randRange(2,5));
Je peux également inclure le code de la page principale pour déterminer pourquoi l'effet des particules de neige ne fonctionne pas sur la première charge.
//----------------initialization---------------\\
extLoader_mc.visible = false;
//--------------------loader------------------------\\
var loader:Loader = new Loader;
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, preload);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, done);
function preload (e:ProgressEvent):void
{
extLoader_mc.visible = true;
var pct:Number = e.bytesLoaded/e.bytesTotal;
extLoader_mc.extLoaderBar_mc.scaleX = pct;
}
function done (e:Event):void
{
extLoader_mc.visible = false;
canvas_mc.addChild(loader);
}
//-----------------------end loader----------------\\
var firstLoad:URLRequest = new URLRequest("accueil.swf");
loader.load(firstLoad);
var currentPage:MovieClip;
currentPage=accueil_mc;
currentPage.gotoAndPlay("down");
accueilHit_mc.targetmc = accueil_mc;
aProposHit_mc.targetmc = aPropos_mc;
animauxHit_mc.targetmc = animaux_mc;
locationHit_mc.targetmc = location_mc;
contactHit_mc.targetmc = contact_mc;
accueilHit_mc.buttonMode = true;
aProposHit_mc.buttonMode = true;
animauxHit_mc.buttonMode = true;
locationHit_mc.buttonMode = true;
contactHit_mc.buttonMode = true;
function el()
{
accueilHit_mc.addEventListener(MouseEvent.CLICK, accueilPage);
accueilHit_mc.addEventListener(MouseEvent.MOUSE_OVER, btnOver);
accueilHit_mc.addEventListener(MouseEvent.MOUSE_OUT, btnOut);
//aProposHit_mc.addEventListener(MouseEvent.CLICK, aProposPage);
aProposHit_mc.addEventListener(MouseEvent.MOUSE_OVER, btnOver);
aProposHit_mc.addEventListener(MouseEvent.MOUSE_OUT, btnOut);
//animauxHit_mc.addEventListener(MouseEvent.CLICK, animauxPage);
animauxHit_mc.addEventListener(MouseEvent.MOUSE_OVER, btnOver);
animauxHit_mc.addEventListener(MouseEvent.MOUSE_OUT, btnOut);
locationHit_mc.addEventListener(MouseEvent.CLICK, locationPage);
locationHit_mc.addEventListener(MouseEvent.MOUSE_OVER, btnOver);
locationHit_mc.addEventListener(MouseEvent.MOUSE_OUT, btnOut);
contactHit_mc.addEventListener(MouseEvent.CLICK, contactPage);
contactHit_mc.addEventListener(MouseEvent.MOUSE_OVER, btnOver);
contactHit_mc.addEventListener(MouseEvent.MOUSE_OUT,btnOut);
}
function btnOver (e:MouseEvent):void
{
e.currentTarget.targetmc.gotoAndPlay("over");
}
function btnOut (e:MouseEvent):void
{
e.currentTarget.targetmc.gotoAndPlay("out");
}
function handCursor()
{
accueilHit_mc.useHandCursor = true;
aProposHit_mc.useHandCursor = true;
animauxHit_mc.useHandCursor = true;
locationHit_mc.useHandCursor = true;
contactHit_mc.useHandCursor = true;
accueilHit_mc.enabled = true;
aProposHit_mc.enabled = true;
animauxHit_mc.enabled = true;
locationHit_mc.enabled = true;
contactHit_mc.enabled = true;
}
el();
accueilHit_mc.removeEventListener(MouseEvent.CLICK, accueilPage);
accueilHit_mc.removeEventListener(MouseEvent.MOUSE_OVER, btnOver);
accueilHit_mc.removeEventListener(MouseEvent.MOUSE_OUT, btnOut);
handCursor();
accueilHit_mc.useHandCursor = false;
accueilHit_mc.enabled = false;
function accueilPage (e:MouseEvent):void
{
currentPage.gotoAndPlay("out");
var req:URLRequest = new URLRequest("accueil.swf");
loader.load(req);
el();
accueilHit_mc.removeEventListener(MouseEvent.CLICK, accueilPage);
handCursor();
accueilHit_mc.useHandCursor = false;
accueilHit_mc.enabled = false;
accueilHit_mc.removeEventListener(MouseEvent.MOUSE_OVER, btnOver);
accueilHit_mc.removeEventListener(MouseEvent.MOUSE_OUT, btnOut);
accueil_mc.gotoAndStop("down");
currentPage=accueil_mc;
}
function aProposPage (e:MouseEvent):void
{
currentPage.gotoAndPlay("out");
var req:URLRequest = new URLRequest("aPropos.swf");
loader.load(req);
el();
aProposHit_mc.removeEventListener(MouseEvent.CLICK, aProposPage);
handCursor();
aProposHit_mc.useHandCursor = false;
aProposHit_mc.enabled = false;
aProposHit_mc.removeEventListener(MouseEvent.MOUSE_OVER, btnOver);
aProposHit_mc.removeEventListener(MouseEvent.MOUSE_OUT, btnOut);
aPropos_mc.gotoAndStop("down");
currentPage=aPropos_mc;
}
function animauxPage (e:MouseEvent):void
{
currentPage.gotoAndPlay("out");
var req:URLRequest = new URLRequest("animaux_fr.swf");
loader.load(req);
el();
animauxHit_mc.removeEventListener(MouseEvent.CLICK, animauxPage);
handCursor();
animauxHit_mc.useHandCursor = false;
animauxHit_mc.enabled = false;
animauxHit_mc.removeEventListener(MouseEvent.MOUSE_OVER, btnOver);
animauxHit_mc.removeEventListener(MouseEvent.MOUSE_OUT, btnOut);
animaux_mc.gotoAndStop("down");
currentPage=animaux_mc;
}
function locationPage (e:MouseEvent):void
{
currentPage.gotoAndPlay("out");
var req:URLRequest = new URLRequest("location.swf");
loader.load(req);
el();
locationHit_mc.removeEventListener(MouseEvent.CLICK, locationPage);
handCursor();
locationHit_mc.useHandCursor = false;
locationHit_mc.enabled = false;
locationHit_mc.removeEventListener(MouseEvent.MOUSE_OVER, btnOver);
locationHit_mc.removeEventListener(MouseEvent.MOUSE_OUT, btnOut);
location_mc.gotoAndStop("down");
currentPage=location_mc;
}
function contactPage (e:MouseEvent):void
{
currentPage.gotoAndPlay("out");
var req:URLRequest = new URLRequest("contact.swf");
loader.load(req);
el();
contactHit_mc.removeEventListener(MouseEvent.CLICK, contactPage);
handCursor();
contactHit_mc.useHandCursor = false;
contactHit_mc.enabled = false;
contactHit_mc.removeEventListener(MouseEvent.MOUSE_OVER, btnOver);
contactHit_mc.removeEventListener(MouseEvent.MOUSE_OUT, btnOut);
contact_mc.gotoAndStop("down");
currentPage=contact_mc;
}
Merci encore pour votre aide, il est très apprécié.
lorsque vous chargez un fichier .swf dans le second, alors le fichier SWF ne doit pas avoir de référence de la scène.cela renvoie une erreur si vous avez une référence de scène. –
Salut et bienvenue à Stack Overflow. Tout d'abord, bien que ce soit sûrement une bonne intention qui vous ait fait publier votre code entier, cela n'aide pas la lisibilité de votre question - c'est un ** lot ** de code à lire. En outre, le re-formatage était une douleur: S'il vous plaît noter que l'éditeur de code sur SO s'attend à ce que les espaces soient des caractères espace, pas des onglets ... – weltraumpirat
s'il vous plaît trace (stage) avant de faire l'appel stage.stageWidth. Votre scène peut être nulle. Sinon, ça va! –