مشکل در لود External Swf

evt

Member
PHP:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
خطایی که در بالا مشاهده می کنید ، مشکل اصلی من در load یک فایل swf خارجی به درون برنامه اصلی ام است . پیش از این هرگز با چنین مشکلی برخورد نداشتم . و معمولا این عمل به آسانی به نتیجه می رسید .

مراحل کار طی شده بدین شکل است :

1- ما قصد داریم یک فایل swf را به درون stage لود کنیم . در شرایط عادی کد زیر پاسخ گو است :

PHP:
var myLoader:Loader = new Loader(); 
            var url:URLRequest = new URLRequest("test.swf"); 
            myLoader.load(url); 
 mc.addChild(myLoader);
2 - خوب در شرایط عادی کد بالا جواب گو است . اما در این مورد test.swf به درستی لود نمی شود . و خطای مواجه با مقدار تهی را بر می گرداند . البته راه هایی را برای حل این مشکل امتحان کردم ، ولی جوابی نگرفتم .
بعد از این مشکل ، احتمال دادم که در تعیین stage ، دچار مشکل هستیم . پس تابع را با رویداد زیر فراخوانی کرده ام :
PHP:
addEventListener(Event.ADDED_TO_STAGE, init);
همچنین از ApplicationDomain و LoaderContext هم برای رفع مشکل همپوشانی بهره بردم ، که جوابی نگرفتم و همچنان این خطا مشکلی است که وجود دارد .

ممنون خواهم شد ، اگر دوستان در این زمینه تجربه ای دارند ، به اشتراک بگذارند .
اگر نیاز بود ، فایل swf مربوطه را آپلود کنم .


 

JavidFlasher

کاربر فعال
سلام استاد
شاید اگه ایونت complete واسه لودرتون تعریف کنین حل شه!!
به هر حال فایلتون رو پیوست کنین شاید کمکی از دستمون بر بیاد
 
  • Like
Reactions: evt

++Hadi++

Active Member
PHP:
var loader:Loader=new Loader();
addChild(loader);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,comp);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,err);
loader.load(new URLRequest("mySWF.swf"));
function err(evt:IOErrorEvent):void
{
   trace("Error In IO!");
}
function comp(evt:Event):void
{
    loader.width=100;
   loader.height=200;
   loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,comp);
    loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR,err);
}
البته اگه تو document class می نویسین بهتره شرایط چک بالا اومدن stage رو حتما داشته باشین یعنی تو کانسترکتور می نویسین :
PHP:
public function constructor():void
{
   if(stage)INIT();
   else
addEventListener(Event.ADDED_TO_STAGE,INIT); 
}
function INIT(evt:Event=null):void
{
   removeEventListener(Event.ADDED_TO_STAGE,INIT);
   settings();
}
 

evt

Member
ممنون جاوید و هادی . مشکلم حل شد .

اما یک سوال دیگه : وقتی swf رو فراخوانی می کنم . در حالت عادی مشکلی نیست . اما وقتی طول و عرض swf رو تغییر می دهم ، نسبت تصویر بهم می خوره و کلا فایل خراب می شه . آیا برای این مورد هم راه حلی هست ؟
 

JavidFlasher

کاربر فعال
وقتی که swfبه طور کامل لود شد دیگه نباید مشکلی داشته باشه.
یعنی شما باید بعد از comoleteشدن لود طول و عرض لودر رو تغیر بدین
 

++Hadi++

Active Member
برای حفظ کردن ratio می تونی اونو با scale کم و زیادش کنی ...
یعنی اگه scaleX اونو کردی 0.5 که نصف اندازه واقعیش بشه ، scaleY اونو هم بکن 0.5
 

جدیدترین ارسال ها

بالا