مشکل PreLoader هنگام استفاده از TLF

sabersoft

Active Member
سلام
برای گذاشتن پرلودر سفارشی برای فایل فلش هنگامی که از TLF :sad:استفاده می کنم مشکل داشتم که مقاله زیر رو خوندم اما مشکلم حل نشد:

کد:
http://jeffkamerer.com/blog/2010/08/12/using-a-custom-preloader-loop-with-tlf-text/
اگه ممکنه اساتید که مطمئنم همیشه یه راهی رو باز می کنند راهنمایی کنند
با تشکر:rose:
 

yaa110

کاربر فعال
سلام، با توضیحات کمی که دادید فکر می کنم اگر مقدار Default Linkage را در ActionScript 3.0 Settings روی Merged into code قرار بدید و فونت TLF را Embed کنید، احتمالا مشکلتون حل بشه. برای روشن تر شدن موضوع، مشکلتون را کامل تر شرح بدید.
 

sabersoft

Active Member
ممنون از راهنماییتون
ببخشید کامل توضیح ندادم
در لینکی که گذاشتم نوشته باید یک فیلد متنی با اسم percent_txt در فریم اول بسازیم و کد زیر را در فریم اول قرار بدیم :
PHP:
import fl.events.RSLEvent;

stop();

var swfComplete:Boolean = false;
var rslComplete:Boolean = false;

this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, onLoading);
this.loaderInfo.addEventListener(Event.COMPLETE, onComplete);
this.addEventListener(RSLEvent.RSL_LOAD_COMPLETE, onRSLComplete);

function onLoading(evt:ProgressEvent):void {
    var loaded:Number = evt.bytesLoaded / evt.bytesTotal;
    percent_txt.text = (loaded*100).toFixed(0) + "%";
};

function onComplete(event:Event):void {
    this.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, onLoading);
    this.loaderInfo.removeEventListener(Event.COMPLETE, onComplete);
    swfComplete = true;
    if (rslComplete && swfComplete) {
        gotoAndStop(2);
    }
};

function onRSLComplete(e:RSLEvent):void
{
    this.removeEventListener(RSLEvent.RSL_LOAD_COMPLETE, onRSLComplete);
    rslComplete = true;
    if (rslComplete && swfComplete) {
        gotoAndStop(2);
    }
}
بعد تنظیمات رو به شکل زیر قرار بدیم :​
advancedas3settingsdlg.png

اما با وجود انجام این کارا و Embed کردن فونت باز هم مشکل پا برجاست.
فایل رو ضمیمه کردم اگه ممکنه تست کنید و بنده رو راهنمایی کنید.مشاهده پیوست tlf.zip
حتی Merge رو دستکاری کردم و تمام تنظیمات رو دستکاری کردم اما مشکل حل نشد.
این نکته هم عرض کنم که این یه مثال ساده بود گذاشتم برای تست و نکته مهمی هم که در پروژه اصلیم هست اینه که فلش دارای کلاس Document هست و مووی کلیپ ها و ... که استفاده شدن همه کلاسهای مخصوص به خود را دارند که توی تنظیمات باید Export classes for frame رو روی 2 قرار بدم تا در فریم اول لودینگ و کدهای اون قرار بگیره.اگه مشکلم با همین مثال ساده که گذاشتم حل بشه گمان می کنم اونجا مشکلی نداشته باشم.

اگه راه حل دیگه ای هم برای گذاشتن پرلودر برای فایلهای فلش حاوی TLF دارید تقاضا می کنم با گذاشتن یه مثال ساده راهنمایی کنید.
با سپاس
 

spryboy

کاربر فعال
سلام

اگر از فلش cs5.5 یا cs6 استفاده میکنید، برای لود کردن، به جای کلاس Loader از کلاس ProLoader استفاده کنید. تمام پراپرتی ها و متدهای این کلاس و عملکرد اونها، مثل کلاس Loader هست. البته باید به جای کلاس LoaderInfo هم، از کلاس ProLoaderInfo استفاده کنید. پراپرتی های این دوتا کلاس هم با هم یکی هست. مراحل کار با لود کردن معمولی فرقی نداره.

برای فلش cs5 باید به همون روشی که در مقاله گفته شده عمل کنید. البته من بررسی نکردم تا ببینم مشکل شما از کجاست ولی راهش همونه.

موفق باشید
 

sabersoft

Active Member
سلام

اگر از فلش cs5.5 یا cs6 استفاده میکنید، برای لود کردن، به جای کلاس Loader از کلاس ProLoader استفاده کنید. تمام پراپرتی ها و متدهای این کلاس و عملکرد اونها، مثل کلاس Loader هست. البته باید به جای کلاس LoaderInfo هم، از کلاس ProLoaderInfo استفاده کنید. پراپرتی های این دوتا کلاس هم با هم یکی هست. مراحل کار با لود کردن معمولی فرقی نداره.

برای فلش cs5 باید به همون روشی که در مقاله گفته شده عمل کنید. البته من بررسی نکردم تا ببینم مشکل شما از کجاست ولی راهش همونه.

موفق باشید
متشکرم
اما اگه به متن سوال بنده توجه کنید متوجه می شید که منظورم لود کردن فایل خارجی در فلش نیست منظور بنده لودینگ اولیه خود فایل فلش است.
 

spryboy

کاربر فعال
سلام
معذرت میخوام اگه درست توجه نکردم. (ولی درست توجه کردم)

یک نمونه طبق روشی که توی مقاله توضیح داده بود براتون درست کردم. یک نمونه هم با ProLoader. من خودم استفاده از ProLoader رو ترجیح میدم، چون نه نیاز به تغییر در تنظیمات ActionScript داره و نه موقع اجرا صفحه سفید میمونه. و البته فلش هم اخطار خاصی نمیده.

فایلها رو برای ورژن cs6 ذخیره کردم، اگه از فلش های قبلی استفاده میکنید، بگید تا دوباره آپلود کنم.

موفق باشید
 

پیوست ها

  • Dear_Sabersoft.zip
    4.1 مگایابت · بازدیدها: 33

spryboy

کاربر فعال
فایلی رو که خودتون الصاق کرده بودید الان دیدم (چون قاطی متن ها بود، قبلا ندیده بودم). اون رو هم تست کردم، درست بود.
 

sabersoft

Active Member
از راهنماببتون بسیار ممنونم کمک خیلی بزرگی کردید
فقط جسارتا یه سوال دیگه داشتم اینکه شما فلش cs6 رو از کجا دانلود کردید؟چون بنده از تورنت گرفتم ولی بعد از یکی دو دقیقه کار (مخصوصا هنگام استفاده از tlf) خطا میده و برنامه رو می بنده!روی چند سیستم دیگه هم تست کردم هم ویندوز xp هم 7 همون مشکل رو داشت گفتم شاید مربوط به فایل اصلی یا کرکش باشه
بازم ممنون
 

sabersoft

Active Member
با تشکر فراوان
باز هم به مشکل خوردم اگه ممکنه راهنماییم کنید
من دقیقا همون دو فایل start و main رو که شما زحمت کشیدید آماده کردید بردم تو پروژه خودم اما مشکل اصلی اینجاست که وقتی برای main یک داکیومنت کلاس تعریف می کنید دیگه start کار نمی کنه و خطای زیر رو می ده :
کد:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at classes::mainClass()
نام کلاس لینک شده با فایل main هست mainClass و در داخل پوشه ای به اسم classes قرار داره
این هم کدش در ساده ترین حالت ممکن :
PHP:
package  classes{		public class mainClass {
		public function mainClass() {			// constructor code		}
	}	}
 
آخرین ویرایش:

spryboy

کاربر فعال
سلام

در مورد سوال قبلتون:
من هم، با فلش cs6 مشکل کرش رو دارم و هر چقدر هم تست کردم، متوجه نشدم که چه چیزی باعث مشکل میشه.هم فلش مستقل رو نصب کردم و هم Master Collection cs6 رو. در هر دو حالت فلش کرش میکنه. وقتی فلش رو مستقل نصب میکنم، باید فایل amtlib.dll رو جایگزین کنم تا کرک بشه. در مورد Master Collection cs6 فایلی تغییر داده نمیشه و با وارد کردن سریال نامبر برنامه ها اکتیو میشن. در هر حال مشکل کرش وجود داره اما نه همیشه. بعضی وقتها خیلی خوب کار میکنه، حتی وقتی دارم از TLF استفاده میکنم. در هر صورت اگر براتون اهمیت داره، فلش رو از سایت p30day.com و Master Collection cs6 رو از سایت p30download.com دانلود کردم.


در مورد سوال دومتون:


Document Class به خودی خود مشکلی ایجاد نمیکنه. شما احتمالا از پراپرتی هایی استفاده میکنید که موقع اجرای فایلتون هنوز در دسترس نیستند، مثلا پراپرتی های مربوط به stage .


تمام کدهایی که داخل متد ()Constructor نوشتید رو به داخل یک متد دیگه در بدنه کلاس منتقل کنید و اسم اون رو مثلا ()init بذارید. بعد داخل ()Constructor رویداد Event.ADDED_TO_STAGE رو شنود کنید و متد ()init رو اجرا کنید. ضمنا، این قضیه هیچ ربطی به TLF یا ProLoader نداره و همیشه موقع لود کردن فایلهای swf ، باید به اون توجه کنید. به عنوان یک Best Practice همیشه این کار رو انجام بدید، چه برای فایلهای مستقل و چه برای فایلهایی که قراره لود بشن.


البته توی نمونه کدی که قرار دادید، کلاس mainClass باید زیر کلاس Sprite یا MovieClip باشه، که در اینجا نیست. اگر توی برنامه اصلیتون هم این اشتباه اتفاق افتاده باشه، احتمالا تنها مشکلتون همونه. اما باز هم Event.ADDED_TO_STAGE رو شنود کنید.


امیدوارم با این موارد مشکلتون برطرف بشه.


موفق باشید
 

پیوست ها

  • ProLoader with DocClass_INIT.zip
    2 مگایابت · بازدیدها: 35

sabersoft

Active Member
بی نهایت سپاس
کاملا مشکلم حل شد
مشکلم این بود که دستور دسترسی به stage قبل از لود شدن کامل صادر می شد
این ProLoader هم عجب چیزی بود و نمی دونستم
 

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

بالا