加载SWF游戏的时候,同时刺激下载,但不正常的错误但不、加载、正常、错误

2023-09-09 21:49:42 作者:分不散的友谊

好了,所以当我跑我的loader.swf,它的加载我game.swf完美的罚款。但是,当我下载的刺激,恰好在70%,我game.swf音乐开始播放,它显示了以下错误:

  

类型错误:错误#1009:无法访问空对象引用的属性或方法。     在GAME_fla :: MainTimeline / frame11()

  

错误#2044:未处理IOErrorEvent :.文本=错误#2036:加载从未完成

通常加载游戏的时候工作完全正常。这个问题仍然存在,当我把它上传在网上,并检查它的工作。它没有。我的加载器非常适用于其他SWF文件。如何解决这个问题?

code层1,框架11

 进口flash.media.SoundChannel;
  VAR bgmusic2:loverswalk =新loverswalk;
  VAR bgmusic:春天=新的春天;
  VAR forestmusic:NatureAmbiance =新NatureAmbiance;
  VAR cafemusic:cafeteria1 =新cafeteria1;


  VAR shopmusic:pamfluiteloop =新pamfluiteloop;

  VAR现金:CashRegisterChaChing =新CashRegisterChaChing;
  VAR哔哔声:哔=新的提示音;
  VAR musicboxsound:BlaclRockShooterMusicBox =新BlaclRockShooterMusicBox;
  VAR failsound:失败=新的失败;
  VAR stgup:stageup =新stageup;
  VAR talkbg:talkbag =新talkbag;
  VAR CA:正确=新的正确的;
  VAR myChannel:的SoundChannel =新的SoundChannel();
  变种BG:的SoundChannel =新的SoundChannel();
  VAR MB:的SoundChannel =新的SoundChannel();
  VAR myChanneltalk:的SoundChannel =新的SoundChannel();
  VAR lastpositionbg:数= 0;
  变种moodshop = 0;
  变种dilbgrun = 0;
  VAR alertsound:警惕=新的警报;
 

2层,框架20

VAR马力:INT = 100;  VAR日:INT = 1;  VAR周:INT = 1;  VAR钱:数= 0;  VAR吊坠:= 0;  VAR手镯:= 0;  VAR漫画:= 0;  VAR poetrys:= 0;  VAR T恤衫:= 0;  VAR命名为:字符串=驱动程序;  VAR年龄:INT = 17;  VAR回复:=​​ 0;  VAR dilrun:字符串=;  VAR ncpvar:= -1;  VAR ncpvare:= -1;  VAR ncpvarm:= -1;  VAR flavie_stage:= 0;  VAR shannon_stage:= 0;  VAR vivette_stage:= 0;  VAR audrey_stage:= 0;  VAR gabriel_stage:= 0;  VAR toret:= 0;  功能refresh1(事件:事件):无效{    对象(this).bar.hp_text.text =字符串(马力);    对象(this).bar.day_text.text =字符串(天);    对象(this).bar.week_text.text =字符串(周);    对象(this).bar.money_text.text =字符串(钱);  }  功能bedbtn(事件:MouseEvent)方法:无效{    alert_mc.gotoAndStop(警报);    alert_mc.alert_mc.alert_text.text =你睡了一晚,并获得了巨大的100马力享受!    HP = 100;    天=日+ 1;    如果(天== 8){      天= 1;      周=周+ 1;    }  }  函数的女人(事件:MouseEvent)方法:无效{    如果(==将event.target audrey_btn){      如果(HP> = 30){        HP = HP - 30;        dilrun =小贝贝;        dial_mc.gotoAndPlay(对话);      } 其他 {        alertsound.play();        alert_mc.gotoAndStop(警报);        alert_mc.alert_mc.alert_text.text =去得到一些更多的HP傻了!      }    }    如果(==将event.target shannon_btn){      如果(HP> = 30){        HP = HP - 30;        dilrun =香;        dial_mc.gotoAndPlay(对话);      } 其他 {        alertsound.play();        alert_mc.gotoAndStop(警报);        alert_mc.alert_mc.alert_text.text =去得到一些更多的HP傻了!      }    }    如果(==将event.target vivette_btn){      如果(HP> = 30){        HP = HP - 30;        dilrun =Vivette;        dial_mc.gotoAndPlay(对话);      } 其他 {        alertsound.play();        alert_mc.gotoAndStop(警报);        alert_mc.alert_mc.alert_text.text =去得到一些更多的HP傻了!      }    }    如果(==将event.target gabriel_btn){      如果(HP> = 30){        HP = HP - 30;        dilrun =加布里埃尔;        dial_mc.gotoAndPlay(对话);      } 其他 {        alertsound.play();        alert_mc.gotoAndStop(警报);        alert_mc.alert_mc.alert_text.text =去得到一些更多的HP傻了!      }    }    如果(==将event.target flavie_btn){      如果(HP> = 30){        HP = HP - 30;        dilrun =Flavie;        dial_mc.gotoAndPlay(对话);      } 其他 {        alertsound.play();        alert_mc.gotoAndStop(警报);        alert_mc.alert_mc.alert_text.text =去得到一些更多的HP傻了!      }    }  }  NCP功能(事件:MouseEvent)方法:无效{    如果(==将event.target odile_btn){      如果(HP> = 10){        HP = HP - 10;        dilrun =奥迪尔;        dial_mc.gotoAndPlay(对话);      } 其他 {        alertsound.play();        alert_mc.gotoAndStop(警报);        alert_mc.alert_mc.alert_text.text =你需要更多的HP交谈奥迪尔。      }    }    如果(==将event.target elias_btn){      如果(HP> = 10){        HP = HP - 10;        dilrun =利亚;        dial_mc.gotoAndPlay(对话);      } 其他 {        alertsound.play();        alert_mc.gotoAndStop(警报);        alert_mc.alert_mc.alert_text.text =你需要更多的HP交谈利亚。      }    }    如果(==将event.target mikel_btn){      如果(HP> = 10){        HP = HP - 10;        dilrun =米克尔;        dial_mc.gotoAndPlay(对话);      } 其他 {        alertsound.play();        alert_mc.gotoAndStop(警报);        alert_mc.alert_mc.alert_text.text =你需要更多的HP交谈米克尔。      }    }  }  功能买入(事件:MouseEvent)方法:无效{    如果(==将event.target gifts_btn){      对象(this).menu_mc.gotoAndStop(商店);    }    如果(==将event.target buy_food_btn){      对象(this).menu_mc.gotoAndStop(咖啡馆);    }  }  功能任务(事件:MouseEvent)方法:无效{    alertsound.play();    alert_mc.gotoAndStop(警报);    如果(==将event.target job1_btn){      如果(HP> = 40){        HP = HP - 40;        钱=金钱+ 30;        alert_mc.alert_mc.alert_text.text =您可以为40 HP earnt 30;      }否则如果(HP< 40){        alert_mc.alert_mc.alert_text.text =你没有40马力到更好的睡眠或吃饭,以获得更多的HP。      }    }    如果(==将event.target job2_btn){      如果(HP> = 30){        HP = HP - 30;        钱=金钱+ 20;        alert_mc.alert_mc.alert_text.text =你earnt 20 30 HP;      }否则如果(马力小于30){        alert_mc.alert_mc.alert_text.text =你没有30马力到更好的睡眠或吃饭,以获得更多的HP。      }    }    如果(==将event.target job3_btn){      如果(HP> = 20){        HP = HP - 20;        钱=金钱+ 10;        alert_mc.alert_mc.alert_text.text =你earnt 10 20 HP;      }否则如果(马力小于20){        alert_mc.alert_mc.alert_text.text =你没有20 HP到更好的睡眠或吃饭,以获得更多的HP。      }    }  } 我的勇者预下载之后打不开游戏怎么解决

如果我添加它们,其他帧不能够访问那些变量。

装载机code面前:

VAR myrequest:的URLRequest =新的URLRequest(GAME.swf); VAR myloader:装载机=新的Loader(); myloader.load(myrequest); myloader.contentLoaderInfo.addEventListener(使用ProgressEvent.PROGRESS,progresshandler); 功能progresshandler(myevent:ProgressEvent):无效{   VAR myprogress:数= myevent.target.bytesLoaded / myevent.target.bytesTotal;   bar_mc.scaleX = myprogress;   percentage_text.text = Math.round(myprogress * 100)+%; } myloader.contentLoaderInfo.addEventListener(引发Event.COMPLETE,已完成); 功能完成(myevent:事件):无效{   的addChild(myloader);   removeChild之(percentage_text);   removeChild之(bar_mc);   removeChild之(background_mc); }

装载机code后:

VAR myrequest:的URLRequest =新的URLRequest(GAME.swf); 进口flash.net.URLRequest; 进口的flash.display.MovieClip; 进口对象类型:flash.events.Event; VAR myloader:装载机=新的Loader(); myloader.load(myrequest); 功能progresshandler(myevent:ProgressEvent):无效{   VAR myprogress:数= myevent.target.bytesLoaded / myevent.target.bytesTotal;   bar_mc.scaleX = myprogress;   percentage_text.text = Math.round(myprogress * 100)+%; } myloader.contentLoaderInfo.addEventListener(Event.INIT,已完成); myloader.contentLoaderInfo.addEventListener(引发Event.COMPLETE,完成); 功能完成(myevent:事件):无效{   的addChild(myloader);   removeChild之(percentage_text);   removeChild之(bar_mc);   removeChild之(background_mc); } 函数完成(myevent:事件):无效{   VAR的LoaderInfo:的LoaderInfo = myevent.target为的LoaderInfo;   VAR SWF:对象= loaderInfo.content;   swf.play(); }

解决方案

也许你应该给一个尝试此事件: ADDED_TO_STAGE 。 当一个对象被添加到舞台(很好奇的姓名和相关性)的ADDED_TO_STAGE事件被触发,那就是当你执行的addChild方法。

尝试监听此事件中的主类的外部SWF,所以,没有code会被执行,你甚至在加载过程中此相应的对象添加到舞台前,(现在你可以听到音乐。

请一些例子:

 包
 {
        进口flash.display.Sprite;
        进口对象类型:flash.events.Event;

        公共类TheMainClassOfYou​​rExternalSWF扩展Sprite
        {
               公共职能TheMainClassOfYou​​rExternalSWF()
               {
                    的addEventListener(Event.ADDED_TO_STAGE,initHandler);
               }

               私有函数initHandler(事件:事件):无效
               {
                    removeEventListener(Event.ADDED_TO_STAGE,initHandler);
                    跟踪(这是舞台上:'阶段);
                    跟踪('这是我的父母:,this.parent);
                    //在这里开始,包括你的逻辑
               }
        }
  }
 

如果您使用的是FLA文件,并使用时间轴添加您的code,你可以试试:

 的addEventListener(Event.ADDED_TO_STAGE,initHandler);

 功能initHandler(事件:事件):无效
 {
         removeEventListener(Event.ADDED_TO_STAGE,initHandler);
         //在这里开始,包括你的逻辑,打电话给你的功能,初始化您的情况...
 }
 

Okay, so When I run my loader.swf, it's loads my game.swf perfectly fine. But when I stimulate download, at exactly 70%, My music of game.swf starts playing and it shows following errors:

TypeError: Error #1009: Cannot access a property or method of a null object reference. at GAME_fla::MainTimeline/frame11()

And

Error #2044: Unhandled IOErrorEvent:. text=Error #2036: Load Never Completed.

The game works perfectly fine when loaded normally. This issue persists when I upload it online and check if it's working. It doesn't. My loader works well for other swf files. How to solve this?

Code of layer 1, frame 11

  import flash.media.SoundChannel;
  var bgmusic2: loverswalk = new loverswalk;
  var bgmusic: spring = new spring;
  var forestmusic: NatureAmbiance = new NatureAmbiance;
  var cafemusic: cafeteria1 = new cafeteria1;


  var shopmusic: pamfluiteloop = new pamfluiteloop;

  var cash: CashRegisterChaChing = new CashRegisterChaChing;
  var beeps: beep = new beep;
  var musicboxsound: BlaclRockShooterMusicBox = new BlaclRockShooterMusicBox;
  var failsound: fail = new fail;
  var stgup: stageup = new stageup;
  var talkbg: talkbag = new talkbag;
  var ca: correct = new correct;
  var myChannel: SoundChannel = new SoundChannel();
  var bg: SoundChannel = new SoundChannel();
  var mb: SoundChannel = new SoundChannel();
  var myChanneltalk: SoundChannel = new SoundChannel();
  var lastpositionbg: Number = 0;
  var moodshop = 0;
  var dilbgrun = 0;
  var alertsound: alert = new alert;

Layer 2, frame 20

 var hp: int = 100;
 var day: int = 1;
 var week: int = 1;
 var money: Number = 0;
 var pendants: int = 0;
 var bracelets: int = 0;
 var comics: int = 0;
 var poetrys: int = 0;
 var tshirts: int = 0;
 var named: String = "Driver";
 var age: int = 17;
 var reply: int = 0;

 var dilrun: String = " ";
 var ncpvar: int = -1;
 var ncpvare: int = -1;
 var ncpvarm: int = -1;
 var flavie_stage: int = 0;
 var shannon_stage: int = 0;
 var vivette_stage: int = 0;
 var audrey_stage: int = 0;
 var gabriel_stage: int = 0;
 var toret: int = 0;

 function refresh1(event: Event): void {
   Object(this).bar.hp_text.text = String(hp);
   Object(this).bar.day_text.text = String(day);
   Object(this).bar.week_text.text = String(week);
   Object(this).bar.money_text.text = String(money);
 }



 function bedbtn(event: MouseEvent): void {
   alert_mc.gotoAndStop("Alert");
   alert_mc.alert_mc.alert_text.text = "You slept a night and gained a massive 100 HP. Enjoy!";

   hp = 100;
   day = day + 1;
   if (day == 8) {
     day = 1;
     week = week + 1;
   }

 }

 function woman(event: MouseEvent): void {


   if (event.target == audrey_btn) {
     if (hp >= 30) {
       hp = hp - 30;
       dilrun = "Audrey";
       dial_mc.gotoAndPlay("Dialogue");
     } else {
       alertsound.play();
       alert_mc.gotoAndStop("Alert");
       alert_mc.alert_mc.alert_text.text = "Go get some more HP silly!";
     }

   }
   if (event.target == shannon_btn) {


     if (hp >= 30) {
       hp = hp - 30;
       dilrun = "Shannon";
       dial_mc.gotoAndPlay("Dialogue");
     } else {
       alertsound.play();
       alert_mc.gotoAndStop("Alert");
       alert_mc.alert_mc.alert_text.text = "Go get some more HP silly!";
     }



   }
   if (event.target == vivette_btn) {
     if (hp >= 30) {
       hp = hp - 30;
       dilrun = "Vivette";
       dial_mc.gotoAndPlay("Dialogue");
     } else {
       alertsound.play();
       alert_mc.gotoAndStop("Alert");
       alert_mc.alert_mc.alert_text.text = "Go get some more HP silly!";
     }


   }
   if (event.target == gabriel_btn) {
     if (hp >= 30) {
       hp = hp - 30;
       dilrun = "Gabriel";
       dial_mc.gotoAndPlay("Dialogue");
     } else {
       alertsound.play();
       alert_mc.gotoAndStop("Alert");
       alert_mc.alert_mc.alert_text.text = "Go get some more HP silly!";
     }
   }
   if (event.target == flavie_btn) {
     if (hp >= 30) {
       hp = hp - 30;
       dilrun = "Flavie";
       dial_mc.gotoAndPlay("Dialogue");
     } else {
       alertsound.play();
       alert_mc.gotoAndStop("Alert");
       alert_mc.alert_mc.alert_text.text = "Go get some more HP silly!";
     }

   }
 }

 function NCP(event: MouseEvent): void {
   if (event.target == odile_btn) {

     if (hp >= 10) {
       hp = hp - 10;

       dilrun = "Odile";
       dial_mc.gotoAndPlay("Dialogue");
     } else {
       alertsound.play();
       alert_mc.gotoAndStop("Alert");
       alert_mc.alert_mc.alert_text.text = "You need more HP to talk to Odile.";
     }



   }
   if (event.target == elias_btn) {

     if (hp >= 10) {
       hp = hp - 10;

       dilrun = "Elias";
       dial_mc.gotoAndPlay("Dialogue");
     } else {
       alertsound.play();
       alert_mc.gotoAndStop("Alert");
       alert_mc.alert_mc.alert_text.text = "You need more HP to talk to Elias.";
     }



   }
   if (event.target == mikel_btn) {

     if (hp >= 10) {
       hp = hp - 10;

       dilrun = "Mikel";
       dial_mc.gotoAndPlay("Dialogue");
     } else {
       alertsound.play();
       alert_mc.gotoAndStop("Alert");
       alert_mc.alert_mc.alert_text.text = "You need more HP to talk to Mikel.";
     }



   }
 }

 function buy(event: MouseEvent): void {
   if (event.target == gifts_btn) {
     Object(this).menu_mc.gotoAndStop("Shop");
   }
   if (event.target == buy_food_btn) {
     Object(this).menu_mc.gotoAndStop("Cafe");
   }
 }


 function job(event: MouseEvent): void {
   alertsound.play();
   alert_mc.gotoAndStop("Alert");

   if (event.target == job1_btn) {
     if (hp >= 40) {
       hp = hp - 40;
       money = money + 30;
       alert_mc.alert_mc.alert_text.text = "You earnt 30 for 40 HP";
     } else if (hp < 40) {
       alert_mc.alert_mc.alert_text.text = "You don't have 40 HP to that. Better sleep or eat to gain more HP.";
     }
   }
   if (event.target == job2_btn) {
     if (hp >= 30) {
       hp = hp - 30;
       money = money + 20;
       alert_mc.alert_mc.alert_text.text = "You earnt 20 for 30 HP";
     } else if (hp < 30) {
       alert_mc.alert_mc.alert_text.text = "You don't have 30 HP to that. Better sleep or eat to gain more HP.";
     }
   }
   if (event.target == job3_btn) {
     if (hp >= 20) {
       hp = hp - 20;
       money = money + 10;
       alert_mc.alert_mc.alert_text.text = "You earnt 10 for 20 HP";
     } else if (hp < 20) {
       alert_mc.alert_mc.alert_text.text = "You don't have 20 HP to that. Better sleep or eat to gain more HP.";
     }
   }
 }

If I add them, other frames are not being able to access those variables.

Loader code before:

var myrequest: URLRequest = new URLRequest("GAME.swf");
var myloader: Loader = new Loader();
myloader.load(myrequest);

myloader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progresshandler);
function progresshandler(myevent: ProgressEvent): void {

  var myprogress: Number = myevent.target.bytesLoaded / myevent.target.bytesTotal;


  bar_mc.scaleX = myprogress;
  percentage_text.text = Math.round(myprogress * 100) + "%";
}

myloader.contentLoaderInfo.addEventListener(Event.COMPLETE, finished);
function finished(myevent: Event): void {

  addChild(myloader);
  removeChild(percentage_text);
  removeChild(bar_mc);
  removeChild(background_mc);
}

Loader Code After:

var myrequest: URLRequest = new URLRequest("GAME.swf");

import flash.net.URLRequest;
import flash.display.MovieClip;
import flash.events.Event;
var myloader: Loader = new Loader();


myloader.load(myrequest);

function progresshandler(myevent: ProgressEvent): void {

  var myprogress: Number = myevent.target.bytesLoaded / myevent.target.bytesTotal;

  bar_mc.scaleX = myprogress;
  percentage_text.text = Math.round(myprogress * 100) + "%";
}



myloader.contentLoaderInfo.addEventListener(Event.INIT, finished);

myloader.contentLoaderInfo.addEventListener(Event.COMPLETE, completes);


function finished(myevent: Event): void {

  addChild(myloader);
  removeChild(percentage_text);
  removeChild(bar_mc);
  removeChild(background_mc);
}

function completes(myevent: Event): void {


  var loaderInfo: LoaderInfo = myevent.target as LoaderInfo;
  var swf: Object = loaderInfo.content;
  swf.play();

}

解决方案

Maybe you should give a try to this event: ADDED_TO_STAGE. The ADDED_TO_STAGE event is triggered when an object is added to stage (very curious name and correlation), that is when you execute an addChild method.

Try to listen to this event in your Main class of your external SWF, so, no code will be executed before you add this respective object to stage (now you can hear the music even during the load process.

Follow some example:

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

        public class TheMainClassOfYourExternalSWF extends Sprite 
        {
               public function TheMainClassOfYourExternalSWF() 
               {
                    addEventListener(Event.ADDED_TO_STAGE, initHandler);
               }

               private function initHandler(event:Event):void 
               {
                    removeEventListener(Event.ADDED_TO_STAGE, initHandler);
                    trace('this is the stage:', stage);
                    trace('this is my parent:', this.parent);
                    // here you start to include your logic
               }
        }
  }

if you are using a FLA file and adding your code using timeline, you can try:

 addEventListener(Event.ADDED_TO_STAGE, initHandler);

 function initHandler(event:Event):void 
 {
         removeEventListener(Event.ADDED_TO_STAGE, initHandler);
         // here you start to include your logic, call your functions, initialise your instances...
 }