لینک رو دوباره چک کنید
محتوای مربوطه به لینک رو اینجا هم وارد می کنم
بخش ششم – unloadAndStop در فلش پلیر ۱۰
متد unloadAndStop در پاسخ به چالش های پیش روی توسعه دهندگان اکشن اسکریپت برای توقف محتوای swf بارگزاری شده و حذف آن از حافظه (Memory) ، به اکشن اسکریپت در فلش پلیر ۱۰ افزوده شد.
البته این مورد افزوده شده را نمی توان مانند گلوله ای جادویی برای حل همه مشکلاتی که در این زمینه وجود دارد دانست! ، برای روشن شدن بیشتر توضیح می دهیم که این مورد چه کاری انجام می دهد ، در مرحله اول این متد تلاش می کند محتوای بارگزاری شده را برای جمع آوری آماده کند ، و در مرحله بعد به جمع آورنده زباله (Garbage Collector) که می بایست عملیات جمع آوری زباله را انجام دهد ارجاع می شود. شما می توانید از مرحله دوم (که همان جمع آوری زباله gc می باشد) با دادن مقدار false به عنوان آرگمان اول متد ، جلوگیری به عمل آورید.
با استفاده از این متد دریافت فایل swf باقی مانده در حافظه ساده می باشد ، اما انجام این کار به صورت تصادفی خیلی دشوار تر می باشد.
در زیر به فهرستی از مواردی که unloadAndStop آنها را برای فایل های swf بارگزاری شده آماده می کند را مشاهده می کنید :
* ایست کردن تمامی MovieClip ها
* ایست کردن تمامی صداهای در حال پخش و Stream (پخش در جریان)
* ایست و حذف همه تایمر (Timer) های استفاده شده
* حذف همه شنونده های رویداد عمومی ، برای enterFrame , exitFrame , frameconstructed , activeate , deactivate
* حدف همه شنونده های مربوطه به stage که توسط فرزند (child) ایجاده شده است
* بستن همه NetConnection ها و NetStream ها (Video.attachNetStream/attachCamera(0) – Microphone.setLoopback(0))
* حدف فونت های AS3 از جدول فونت های عمومی
* ایست ؛ socket ها ، xmlsocket ها ،دانلودهای filerefrence ، و دیگر اشاء مربوطه به دانلود (grandchildren (سطح نوه والد) ) و…
* آزاد کردن bitmap های در ارتباط با cacheAsBitmap و filterها و…
تذکر : تمامی موارد بالا به صورت بازگشتی اجرا می شوند ، به طوری که این موارد به هر یک از فرزندان تو در تو (nested) و فایل های swf بارگزاری شده در آن ها ، نیز اعمال می شود.
حال به مثالی در این زمینه می پردازیم :
PHP:
var loader:Loader = new Loader();
loader.load ( new URLRequest ( "sample_content.swf" ) );
addChild ( loader );
stage.addEventListener ( MouseEvent.CLICK, unloadSWF );
function unloadSWF ( e:MouseEvent ):void
{
//unloadAndStop استفاده از متد
loader.unloadAndStop();
}
در کد بالا ابتدا یک شی Loader ساخته می شود و فایل نمونه آزمایشی ما را با نام sample_content.swf را بارگزاری می کند و سپس شی به DisplayObject افزوده (addChild) می شود.
در مرحله بعد با رویدادی که برای کلیک موس در stage در این مثال ایجاد می کنیم در زمان کلیک تابع unloadSWF را فراخوانی می کنیم
در این تابع با استفاده از متد unloadAndStop عمل unload را انجام می دهیم.
موفق و پیروز باشید.