حذف کلیه متغیرها و کدها

alirezaghodarzi

New Member
با سلام دوستای عزیز لطفا منو راهنمایی کنید
من داخل استیج خودم تعداد زیادی swf لود میکنم swf های برنامه pdf publisher که خودش یه برنامه است
اما فکر میکنم متغیر ها و ... این برنامه داخل استیج من میمونه چون یکی دیگه رو لود میکنم میره قبلی و میاره با ایراد

چجوری تمام کدها و متغیر های اون برنامه که جا میزاره توswf پاک کنم

لطفا کمکم کنید بدجوری گیر کردم؟؟؟؟
:cry:
 

alirezaghodarzi

New Member
عنوان مسئله جوری دیگه

وقتی یه swf لود میشه داخل swf من تمام متغیر هاش و غیره باقی میمونه متغیرهاشم نمیدونم چون یخ برنامه تولیدش میکنه ووقتی میخوام ه فایل هم خانواده رو لود کنم گند میزنه و قبلی رو باز میکنه با ایراد

حالا چحوری بشه کل اطلاعات اون فایل رو باز کرد؟؟؟؟
 

++Hadi++

Active Member
اگه یه swf رو تو فلش اصلیتون لود کردین،باید بعد از اتمام کارش ،هر جا که نیاز نداشتین اونو unload کنین تا تمام اشیای داخلیش و حتی متغیر ها و event هاش،غیر فعال شن.من اکشن 2 بلد نیستم ولی می تونین عبارت زیر رو تو گوگل سرچ کنین :
as2 unload loaded swf
 

JavidFlasher

کاربر فعال
خود لودر فلش باگ زیاد داره
مثلا برای لود swfهایی که با flashpaperساخته شدن مشکل ایجاد میکنه
بهتره از کلاس LoaderMaxاستفاده کنی
 

alirezaghodarzi

New Member
هادی جان نشد
همونه
جاوید اینی که میگی کدش رو میدی
مسئله اینه این پابلیشر حتما برا خودش متغییر و از این حرفا داره
موضوع اینه چجوری کلیه متغیر ها و بولین ها و همه را خالی کرد که فلش بعدی لود میشه اینجوری نشه
 

پیوست ها

  • 0.zip
    7 کیلوبایت · بازدیدها: 41

++Hadi++

Active Member
البته من می یام و یه تابع Clear یا destructor برا پاک کردن رویداد ها و اشیایی که ساخته شده می نویسم تا هر وفت لازم شد اونو صدا بزنم و اونا رو پاک کنم و بعد System.gc رو صدا می زنم.بعد آنلود و ...
البته اگه اینا تو اکشن 2 باشند که فکر کنم نباشند...
در ضمن unload فلش و unloadAndStop اون مشکل داره ...(تست کردم) ولی اگه اونایی رو که گفتم رو عمل کنید و بعد یه unloadAmdStop بزنید درست می شه.لودر مکس کارش حرف نداره ولی مطمئن نیستم که درخت اشیایی که ساخته شده اند رو بتونه کلا از بین ببره یا نه...
 

alirezaghodarzi

New Member
میشه بگین چجوری تمام متغیرها و بولین ها و وار ها و همه کدها را خالی کرد ؟ دستوری هست
 

++Hadi++

Active Member
ببینید.متغیر های اصلی رو مقدار پیش فرض بزارید:
String=null;
int=0;
boolean=false;
Object=null;
, ...
تمامی اشیای دیگه رو هم برابر Null کنید.البته فرض کنید یه شی n تا شی دیگه توش ساخته شده و هر کدومشون m شی توشون.
طراحی قوی اینطوریه که هر کلاسی که می نویسید،یه Destructor و یه Clear داشته باشه.
Clear برا وقتی که یه شی رو قرار نیست از بین ببرید ولی قراره به حالت پیش فرضش reset شه.
Destructor برا وقتی که اون شی قراره کلا از بین بره.
پس destructor می یاد و Clear رو اول صدا می زنه تا محیط داخلی شی رو خالی کنه و بعد با ادامه دستورات،کلا شی ساخته شده از کلاس رو از بین ببره.
پس با یه حالت درختی،تمام میوه های درخت(اشیای نهایی) و بعد ساقه ها(واسطه ها) تا به بوته و ریشه،DEstrcuct می شن و نهایتا شی ساخته شده اولیه از بین می ره.شاید در این پروژه دیگه کار از کار گذشته و نمی شه یه پروژه بزرگو از اول تو زمان کم به این حالت رسوند ولی تو پروژه های بعدی که انشاأالله قراره نوشته شه بهتره از این روش استفاده شه.
در ضمن بگم که ارایه و Object و Vector رو بهتره یک به یک خونه های داخلیشونو Destruct کنین و برابر Null کنید و بعد دستور Splice رو رو آرایه به کار ببرید تا خونه هاشو به رم ازاد کنه و بعد اونو مساوی Null کنید.در نهایت بعد از اینکه کل درخت اشیا رو از بین بردید،یه System.gc می زنید تا کلا حافظه از لوس اشیای Null و ... آزاد شه.البته باز بگم متاسفانه تو فلش یه متغیر به طور کامل از بین نمی ره...یعنی بعد از gc باز اگه متغیر null شده رو تعریف نکنید و ازش استفاده کنید،استفاده می شه...
در کل به این روش به نسبت سخت می گن مدیریت حافظه و اینکه مثلا وقتی یه بازی مثل angrybirds رو بازی می کنید و با بازی های متوالی،رم و سی پی یو بیش از حد درگیر نمی شه و تو یه حالت ثابت می مونه می گن مدیریت حافظه...وگرنه رفته رفته رم سیستم اشغال می شه و باطری خالی می شه و سی پی یو در گیر می شه و حافظه OVERFLOW می شه و برنامه بعد از مدتی کلا هنگ و غیر قابل استفاده می شه...
بای...
 

++Hadi++

Active Member
Clear محتوای داخلی کلاس رو خالی و Destructor اونو اول با استفاده از تابع Clear خالی و بعد از بین می بره.پس هر شیی که باید از بین بره اول باید Clear شه (بوسیله تابع Destcructor و بعد Destructor اونو از بین ببره) و بعد کلاس والدش اونو null کنه و نهایتا وقتی کل اشیا دیگه از بین رفتند،فقط یه دونه System.gc اینو واسه تکمیل توضیحات نوشتم....
 

alirezaghodarzi

New Member
شرمنده من یه خورده بی سوادم لطف میکنی یه سورسی بدی که این کارهایی که گفتی انجام بده
من اکشن اسکریپت رو تا (تصمیم کبری) بلدم
بدجوری گیر کردم :cry:
 

JavidFlasher

کاربر فعال
سلام
تا اونجا که یادمه تو as2از deleteاستفاده میکردیم :
PHP:
var myVar="hi!"
trace(myVar)//hi
delete myVar
trace(myVar)//undefined
 

alirezaghodarzi

New Member
سلام
تا اونجا که یادمه تو as2از deleteاستفاده میکردیم :
PHP:
var myVar="hi!"
trace(myVar)//hi
delete myVar
trace(myVar)//undefined
جاوید جان ما نمیدونیم چه متغیری و.... تعریف کرده طرف، اون خروجیش یه swf که ما لود میکنیم داخل پروژه حالا از همون اس دبلیو اف 2 تا داریم وقتی یکیشو لود میکنیم مشکل نیست دومی رو که لود میکنیم بهم میریزه چون فکر میکنم تمام تعریفاتش باقی میمونه حتی با آنلود هم نمیره لطف میکنید راهنمایی کنید کل پروژه خوابیده اگه کمک کنید ممنون میشم
:sad:
 

alirezaghodarzi

New Member
دست همتون درد نکنه من این کار رو تو مالتی مدیا بیلدر کردم اونجا درسته اما ایندکس من تو فلش as2 یه سرچرم دارم توش لطف میکنید یه راه حل تو as2 پیدا کنید
مگه میشه مالتی مدیا بیلدر بتون فلش با این قدرتش نتونه
:tavajoh:

:shock:
میدونم اذیت شدید ولی به کمک شما احتیاج دارم


این لینک رو از سایتش پیدا کردم فکر کنم تمامه متغیراشو نوشته میشه ببینید و بگویید چه کنم؟؟

http://flippingbook.com/en/help/html-edition/docs/parameters-description
 
آخرین ویرایش:

myfirst

Member
سلام.
یه مووی کلیپ خالی به اسم loader بساز.
فایلای فلش رو توش لود کن
PHP:
loadMovie()
هر موقع که خواستس unload کن با دستور
PHP:
unloadMovie()
همون طوریکه آقای عباسی گفتن باید فایلاتو unload کنی
 

alirezaghodarzi

New Member
این کارو کردم
loadMovie("104.swf",kk);
unloadMovie("kk");
ولی وقتی بعدی لود میکنم تو یه مووی کلیپ دیگه کلا فلاش پلایر ایراد میگیره نمیتونه فایلو باز کنه

اگه یه swf باز کنیم تو swf خودمون دستوراتش باقی میمونه ؟ پس چرا با آنلود نمیره
 

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

بالا