کند شدن ریاد فلش پس از گذشت حدود 1 دقیقه

alideburgh

New Member
سلام
دوستان به as3 فلشی ساختم که پس از گرفتن خروجی انیمیشن حدود 1 دقیقه به راحتی کار می کنه ولی پس از گذشت حدود 1 دقیقه یه دفعه cpu می چسبه به طاق و فلش من کند می شه در حد خیلی زیاد .

ممنون می شم اگه راه حلی پیشنهاد کنین
 

Flashium

Member
این یعنی شما کم کم فشار بر روی سی پی یو را زیاد می کنید.
یک حلقه For که پایانی نداشته باشد یا ساخت موی کلیپ داینانیک که تعداد محدودی ندارد و هیمنطور اضافه می شود یا یک محاسبه ریاضی سنگین و پیچیده ممکن است این مشکل را به وجود آورد.
فرم ریت یا همان تعداد فرم در ثانیه هم ممکن است تاثیر داشته باشد.
اگر امکان دارد کد های استفاده شده را برای برسی قرار دهید.
 

++Hadi++

Active Member
سیستم وکتور و سیستم فریم های تایم لاین فلش همین خصیصه رو داره. بهتره دور صحنه یه ماسک درست کنین و کل انیمیشن رو تحت اون ماسک به حالت masked در بیارین. و اینکه اونو به صورت swf در یه فایل main لود کنین. و اینکه تا جاییکه امکانش هست ، سیستمو از حالت وکتور به حالت بیت مپ ببرین.
وکتور=حجم پایین swf و پرفرمنس بد
بیت مپ= حجم بالای swf ولی پرفرمنس خوب
و اینکه خیلی از بزرگان برنامه نویسی زمینه اکشن ، از مووی کلیپ استفاده نمی کنند چون از نظر اشغال حافظه رم و از نظر cpu ، خیلی گزینه جالبی نیست .البته می تونین انیمیشن رو چند تیکه کنین و تو چند swf تیکه تیکه قرار بدین و بعد هر تیکه رو که لود کنین و بعد از نمایش ، آنلود کنین و بعدی رو لود کنین.البته unloadAndStop
 

alideburgh

New Member
سلام به دوستان
تشکر می کنم که پاسخ دادید . ولی دوستان من جاهای مختلفی کد دارم . کدوم کد رو می خواین که آپلود کنم تا بررسی کنید ؟

دوست عزیزم حقیقت اینه که من خیلی حرفه ای نیستم و فقط در حد تجربی با as3 کار کردم و قبلا فلش هم ساختم ولی اصلا این طوری نشده.

به هر حال هر چیزی احتیاج دارید بفرمایید
 
منم این مشکل رو دارم چکار کنم؟
البته فکر کنم از فرمان add event listener باشه اخه من مثلا 25 دکمه دارم توی یک فایل که هرکدام 3 addevent listener دارن .به نظر شما مشکل از این نیست؟راه حل هم داره؟
 

++Hadi++

Active Member
فک نکنم البته تو تعداد زیاد می تونه مشکل پیدا کنه چون هر کدوم گوش به زنگ رویدادن ولی تو فلش رویداد های سیستمی رو نمی شه کاریش کرد. یعنی مثل یونیتی و ... نیست که بشه با دستوری شبیه به onRelease ، بعد از اجرای یه اتفاق ، به سبک تابع اونو اجرا کرد. ولی شما می تونی رویداد هایی رو که در حال حاضر نیاز نیستند رو اضافه نکنین یا حذف کنین و بعد از اتفاق افتادنشون اونا رو ست کنین . یعنی چی؟
یعنی اینکه مثلا وقتی هنوز موس رو دکمه ای نرفته لازم نیست که به رویداد بیرون اومدن موس یا roll_out یا mouse_out گوش کنه . پس همینکه موس روش رفت ، اون eventListener خروج موس یا mouse_out رو بهش تو تابع mouse_over بدین.
 
من وقتي فايلو اجرا مي كنم توي taskmanager نگاه كردم . مثلا ram كه مي گيره 25 هست .اما بعد از يه مدت يواش يواش زياد ميشه تا بره روي مثلا 300 حتي 400 .اين باعث هنگي ميشه. من در فلشم از 30 تا دكمه كه هر 30 تا 3 تا addeventlistenrt دارن و 9 فايل فلش كه گاري هستن و با component UILoder لود كردم و 5 مويي كليپ درست كردم كه با استفاده از scroolpane از توي لايبرري لود مي كنم.نميدونم مشكل از چيست ؟ تورو خدا كمك كنيد .اخه كارم بد جور گيره. . .
 
وقتي فايلو اجرا مي كنم همينطور ram مورد استفاده بالا مي ره تا وقتي كه سرعت فايل كم ميشه.كسي نمي دونه مشكل از چيست؟
 

Flashium

Member
بهتره سرعت پخش فرم ها را کم کنید.
حلقه های For یکی یکی حذف کنید. و بعد ببینید کی مشکل حل می شود.
به احتمال زیاد یک حلقه for باعث اینکار میشود.

اگر هم فایل را بگذارید بررسی شود بهتر به جواب می رسید.
 
[FONT=&quot]من فایل رو ضمیمه کردم.لطفا اگر کسی بلده منو راهنمایی کنه.من در این فایل 16 دکمه دارم که هر کدوم رو بزنی میره توی یک صفحه.اما نمیدونم مشکل از کجاست که بعد از یه چند دقیقه سرعتش کم میشه. اول نگاه کنید چه سرعت بالایی داره اما بعد از مثلا 5 دقیقه سرعتش کم می شه. [/FONT]Cpu [FONT=&quot]رو هم 22 یا بیشتر اشغال می کنه.[/FONT]​
 

پیوست ها

  • flash.rar
    925.6 کیلوبایت · بازدیدها: 10

++Hadi++

Active Member
عزیزم آیا تو پروژه ات از کد نویسی استفاده کردین ؟
اگه نه بهتره همه چی رو با کد پیش ببرین.کنترل اشیای برنامه نویسی اینجوری بهتره البته تا حد امکان؟
آیا فقط از تایم لاین واسه هر چی استفاده می کنین ؟ اگه بله و اگه کار انیمیشن نیست و یه سری کارای ساده هست که بشه با کد انجامشون داد ، کاملا اشتباه کردید.چون تایم لاین مشکل داره.
آیا تو کار از وکتور استفاده می کنین.اپه بله بهتره تا حد امکان از بیت مپ استفاده کنین.
آیا تو پروژتون از
PHP:
System.gc()
استفاده می کنین ، اگه نه سعی کنین هر چند وقت یه بار از این دستور استفاده کنین.
آیا تو پروژتون اگه با برنامه نویسی پیش می رید ، اشیای (برنامه نویسی) که دیگه لازم نیست رو از رم پاکش می کنین ؟ اگه نه باید تو جایی که لازم نیست دیگه پاکشون کنید.
آیا تو پروژتون همه چیز رو در یه آن لود می کنین یا فقط چیزایی رو که در لحظه لازمند رو لود می کنین ؟ اگه اولیه درسته ، پس بهتره همه چیز رو با فرمت swf یا هر چیز دیگه ای از بیرون لود کنین و بعد از استفاده و اتمام وظیفه اونو پاک و دستور System.gc رو اجرا کنین.من به نمونه ای که گذاشتین وقت نکردم نگاه کنم ولی اگه لازم بود بگین تا نگاه کنم.
 

smmousazadeh

Well-Known Member
***اگه میتونید تصاویر وکتور استفاده نکنید .
**اگه از کامپوننت استفاده می کنید بجای استفاده از Linkage از بیرون بخونید
سعی کنید اگه قراره ابجکتی که لود شده نباشه ، unload کنید.
 

e_naderlou

Member
سلام مردان شریف
من مدتها این مشکل رو داشتم و همه ی این راه حلها رو امتحان کردم ولی وضعیت بهتر شد اما حل نشد تایم لاین من 3500 فریم بود و همه ی این کارها رو تست کردم "وکتور به بیت مپ و جی سی و آنلود کردن و..." اما هیچکدوم کارساز نبود
تا اینکه از نمونه هایی که آقا هادی توی امضاشون قرار دادن استفاده کردم و کاملا مشکل حل شد و یه درس کامل بود .
و من شخصا از ایشون تشکر میکنم هر کسی میخواد این مشکلش حل بشه از این نمونه استفاده کنه
HadiMetalFrameNavigator Sample01
http://forum.majidonline.com/showthread.php?t=154366
مثال 1 رو تست کنید و ایشونو دعا کنید
 
آخرین ویرایش:

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

بالا