آموزش کلاس MovieClipLoader برای مبتدی ها

BioDread

Banned
تو این آموزش می خوام کلاس MovieClipLoader رو آموزش بدم و توسط ان یه گالری کوچیک درست کنیم
از unknowuser تشکر میکنم چون ان به من این کلاس رو توضیح داد!
کلاس MovieClipLoader برای لود کردن انواع مووی و عکیس هست که موتونین برای ان ها preloader درست کنسد
اسن گالری شامل 3 بخش کد هست که به الویت آموزش داده میشه (خط به خط)

لازم به ذکر هست که ممکنه این کد ها رو به روش های مختلف به کار ببرید و یا بعضی از ان ها رو حذف کنید

قسمت اول (preloader اصلی گالری)

PHP:
onClipEvent (enterFrame) {
	percent =(Math.round(_root.getBytesLoaded() / _root.getBytesTotal() *100) + "% Loaded");
	biobar._xscale = (_root.getBytesLoaded() / _root.getBytesTotal() *100);
	lloaded = (_root.getBytesLoaded());
	ttotal = (_root.getBytesTotal());
	if (percent == 100) {
		_root.gotoAndStop(5);
	}
	else if (percent <100) {
		_root.stop()
	}
}

قسمت دوم (اصلی ترین بخش این گالری که کلاس MovieClipLoader در همین بخش هست)

PHP:
stop();
var num:Number = 1
setProperty(_root.swfloader, _yscale, 51.6);
setProperty(_root.swfloader, _xscale, 65.7);
var MCL:MovieClipLoader = new MovieClipLoader();
MCL.loadClip("image"+num+".jpg" , _root.swfloader);
var listener:Object = new Object();
listener.onLoadProgress = function(target:MovieClip ,BL:Number , BT:Number) {
	_root.percent.text = Math.round(BL/BT*100)+"%Loaded";
	_root.biobar._xscale = (BL/BT*100);
}
listener.onLoadComplete = function() {
	_root.percent._visible = false;
	_root.biobar._visible = false;
}
MCL.addListener(listener);

_root.bionext.onPress = function (){
	setProperty(_root.swfloader, _yscale, 51.6);
	setProperty(_root.swfloader, _xscale, 65.7);
	if (num == 1) {
		num++
	}
	else if (num>1) {
		num++
	}
	_root.bioimage._visible = true;
	_root.bionum._visible = true
	_root.percent._visible = true;
	_root.biobar._visible = true;
	var MCL:MovieClipLoader = new MovieClipLoader();
	MCL.loadClip("image"+num+".jpg" , _root.swfloader);
	var listener:Object = new Object();
	listener.onLoadProgress = function(target:MovieClip ,BL:Number , BT:Number) {
		_root.percent.text = Math.round(BL/BT*100)+"%Loaded";
		_root.biobar._xscale = (BL/BT*100);
	}
	listener.onLoadComplete = function() {
		_root.percent._visible = false;
		_root.biobar._visible = false;
	}
	listener.onLoadError = function(swfloader:MovieClip, error:String, http:Number) {
		_root.gotoAndPlay(4);
	}
	MCL.addListener(listener);
}
_root.bioback.onPress = function () {
	setProperty(_root.swfloader, _yscale, 51.6);
	setProperty(_root.swfloader, _xscale, 65.7);
	if (num > 1) {
		num--
	}
	else if (num == 1) {
		num = 1
	}
	_root.bioimage._visible = true;
	_root.bionum._visible = true
	_root.percent._visible = true;
	_root.biobar._visible = true;
	var MCL:MovieClipLoader = new MovieClipLoader();
	MCL.loadClip("image"+num+".jpg" , _root.swfloader);
	var listener:Object = new Object();
	listener.onLoadProgress = function(target:MovieClip ,BL:Number , BT:Number) {
		_root.percent.text = Math.round(BL/BT*100)+"%Loaded";
		_root.biobar._xscale = (BL/BT*100);
	}
	listener.onLoadComplete = function() {
		_root.percent._visible = false;
		_root.biobar._visible = false;
	}
	MCL.addListener(listener);
}

بخش سوم (به کار بر امکان انتخاب شماره عکس برای دیدن ان رو میدید)

PHP:
_root.onEnterFrame = function() {
	if (Key.isDown(13)) {
		setProperty(_root.swfloader, _yscale, 51.6);
		setProperty(_root.swfloader, _xscale, 65.7);
		num = (_root.bionum.text);
		_root.bioimage._visible = true;
		_root.bionum._visible = true
		_root.percent._visible = true;
		_root.biobar._visible = true;
		var MCL:MovieClipLoader = new MovieClipLoader();
		MCL.loadClip("image"+num+".jpg" , _root.swfloader);
		var listener:Object = new Object();
		listener.onLoadProgress = function(target:MovieClip ,BL:Number , BT:Number) {
			_root.percent.text = Math.round(BL/BT*100)+"%Loaded";
			_root.biobar._xscale = (BL/BT*100);
		}
		listener.onLoadComplete = function() {
			_root.percent._visible = false;
			_root.biobar._visible = false;
		}
		listener.onLoadError = function(swfloader:MovieClip, error:String, http:Number) {
			_root.gotoAndPlay(4);
		}
		MCL.addListener(listener);
	}
}
 

پیوست ها

  • image loader.zip
    295.8 کیلوبایت · بازدیدها: 325

BioDread

Banned
آموزش قسمت اول
تمامی کد های این بخش باید برای یه مووی کلیپ نوشته بشه
خط 1 - در as2 هر کدی رو که به خواهید روی مووی کلیپ بنویسید باید از onClipEvent استفاده کنیم
اگه دقت کنید میبینید که مقابل onClipEvent یه کد دیگه هم نوشته شده که ان باعث میشه که هر لحظه کد های داخش چک بشه که enterFrame همون کا رو میکنه
خط 2 - یه متغیر هست که یه محاسباتی رو انجام میده ... حالا این محاسبات چی هست؟
کلاس Math در هر زبانی که بشه باهاش محاسبات انجام داد هست یعنی کلیه زبان های برنامه نویسی حتی در بعضی از ماشین حساب ها دکمه ای برای انجام این کار هست
کلاس Math به محاسبات ریاضی فوکوس داره
Math.round یعنی هر مقداری که در این متغییر هست رو روند کنه و خورده ها رو نشون نده
_root.getBytesLoaded() یعنی هر چی از مقدار ری رو که لود میشه از کل root که همه کار شما در ان هست رو بر میگردونه
و
_root.getBytesTotal() یعنی حجم کل کار تونو بر میگردونه
و میبینید که نتیجه تقسیم این دو رو ضرب در 100 کردم چرا؟
چون می میخوام در 100 قسمت تموم بشه اگه شما ضرب در 200 کنید در 200 قسمت تموم میشه
و در آخر "% Loaded" به نتیجه کارم میچسبه و باعث میشه که کاربر بفهمه که مقادیر مربوط به چیه
خط 3 - داخل ان مووی کلیپ یه مووی دیگه هست که اسمش biobar هست که همون خط load ماست که باعث قشنگ شدن کارمون میشه
من به فلش گفتم مقدار _xscale مساوی با (_root.getBytesLoaded() / _root.getBytesTotal() *100); قرار بده یعنی طول biobar مساوی با هر مقداری که لود بشه میشه
خط 4 - مقادیر کل bytes های لود شده رو در خودش نگه میداره و در یه textfielf نشون میده
خط 5 - مقادیر کل bytes ها کارم رو در خودش نگه میداره و در یه textfielf نشون میده
خط 6 .7 .8 - با یه دستور شرطی به فلش گفتم که هر موقع مقدار متغیر percent مساوی با 100 شده بره ان فرمی که من میخوام
خط 9 .10 .11 - شاید لازم نباشه و لی گفتم به فلش که اگر مقدار percent کم تر از 100 بود همین جا بمونه
به زودی آموزش قسمت دوم و سوم رو میدم
 
آخرین ویرایش:

BioDread

Banned
سلام

تصمیم گرفتم آموزش قسمت دوم رو هم بدم

شماره هایی که اول هر توضیح مینویسم بدین معنا هست که این توضیح برای همون شماره خط هست

شروع میکنیم

1- یعنی تو همین فریم بمون (فکر کنم دیگه هر کسی که با فلش شروع میکنه اول stop رو یاد میگیره)

2- در اینجا من یه متغییر از نوع Number تعریف کردم که مقدارشو برابر با 1 قرار دادم (کار ایم متغییر ذخیره کردن شماره عکس مورد نظر هست به طور مثال image5 در اینجا 5 همون مقدار num هست)

3 و 4 - در اینجا شما میتونین ان شی ای که میخوایید رو انگولک کنید به طور مثال من _xscale و _ yscale یه مووی رو دست کاری کردم

5- در اینجا من یه متغییر از نوع MovieClipLoader ایجاد کردم که در خطوط جلوتر با طرز کارش آشنا میشیم

6- اگه دقت کنین میبینید که اول خط من همون متغییری که از نوع MovieClipLoader بود رو نوشتم بعد یه نقطه گذاشتم بعد نوشتم loadClip همون طور که از اسمش پیدا هست به کلاس MovieClipLoader میگه چیو لود کنی
در پرانتز مقابل ما دو قسمت داریم که اولی آدرس فایلی هست که قرار لود بشه و دومی نام مووی هست که او عکس ها به جای ان در صفحه میشینن اگه دقت کنین من در خط 3 و 4 اندازه این مووی رو تعیین کردم
قسمت اول همین پرانتز یه توضیح کوچولو داره که بهتون میگم
اول نوشتم image بعد متغییر num و بعد فرمت عکس ها رو نوشتم
از انجایی که اول و آخر اسم های همه عکس ها مشابه هست و فقط شماره عکس ها با هم فرق میکنه , ما هم اگه بخوایم عکس جدید لود کنیم دیگه لازم نیست کل آدرس ان عکس رو بنویسیم فقط کافیه با این روش مقدار متغییر num رو تغییر بدیم )

7- در این خط من تصمیم گرفتم یه listener تعریف کنم (شاید با خودتون بگید listener چیه هاهاهاهاها الان میگم)

توضیح listener رو دوست خوبم محمد و یا همون mshgames داده که جا داره ازش تشکر کنم

در مورد لستینر فقط می تونم بگم یه همانند یه سنسور عمل میکنه


این بخاری هایه جدیدو دیدی اگه اکسیژن هوا کم بشه خود به خود خاموش میشن
که وظیفه خاموش کردنو اون سنسور ایفا میکنه حالا تو فلش توسط لیستنر یه تابع شروع به اجرا در میاد

بزار یه مثال بزنم

PHP:
var n=0; 
var mesal:Object=new Object(); 
mesal.onMouseMove=function(){ 
    n++; 
    trace("salam"+n); 
}

ببین تو کد بالا من یه متغییرو بر حسب آبجکت تعریف کردم (اساس کار لیستنر با آبجکتایه)


حالا اسمه اون آبجکت چیه مشخصه mesal زمانی که موس حرکت می کنه
یه تابع اجرا میشه که یه متغییر رو به نام n افزایش میده و اونو + عبارت "سلام"
میکنه تا اینجا که روشنه

حالا این کدو تو فریمه اولت کپی کن و موسو تکون بده میبینی که هیچ عکس العملی نشون نمیده کد کار نمیکنه

حالا این عبارت اضافه کن

PHP:
Mouse.addListener(mesal);


کد ما این شکلی میشه

PHP:
var n=0; 
var mesal:Object=new Object(); 
mesal.onMouseMove=function(){ 
    n++; 
    trace("salam"+n); 
} 
Mouse.addListener(mesal);

زمانی که ماوس تکون میخوره توسط لیستنر تحریک میشه و تابع شروع به کار میکنه

همین نوع دیگر لیستنر هم داریم که الان دیگه حالو حوصله توضیح دادنشو ندارم

تمام شد
هاهاهاهاهاها این یه زنگ تفریح از طرف من برای محمد
محمد این جمله تو رو یاده چه بازی می انداره؟!!!!!11

PHP:
چون این چند روزه درگیر این بازی (ساخت بازی) بودم که بلاخره بعد از 5 ماه نسخه دموش ساخته شده به احتمال قوی فردا برایه دانلود میزارمش دیگه از هرچی فلشه بدم میاد مخصوصا نسخه های 9 به بعدش


موفق باشی

محمد

فکر کنم با این توضیه خوب به معنی listener پی بردید!

من این listener رو برای متغییر MCL که از نوع MovieClipLoader بود درست کردم که در خطوط بعدی طرز کارشو میگم

راستشو بخوایید خسته شدم!!!!!!! :sad:

8- در این خط به listener گفتم وقتی عملیات لود کردن در حال انجام هست انو برابر با یه تابع قرار بده
که مقادری که قبول میکنه سه نوع هست , به ترتیب از چپ به راست توضیح میدم
اولی اسمش target هست که از نوع MovieClip هست شما حتما باید این سه متغییر رو بسازید چون کلاس MovieClipLoader به انا احتیاج داره دومی اسمش BL هست که مخفف byteloaded هست و سومی اسمش BT که مخفف bytetotal هست راستی همون طور که میبینید متغییر های 2 و 3 از نوع number هست
9- من در stage کاریم یه کادر متن پویا درست کردم که اسمش percent هست که توسط کدی که نوشتم به فلش گفتم مقدار کادر متن پویا percent رو برابر با Math.round(BL/BT*100)+"%Loaded"; قرار بده
من آوزش این قسمت رو در اول همین پست دادم میتونید به انجا مراجع کنید

10- من علاوه بر کادر متن در stage یه مووی مستطیل شکل هم دارم که اسمش biobar هست که کار این مووی همون کار لودینگ خود ویندوز رو میکنه که وقتی بخوایید نرم افزاری رو نصب کنید یه خطی پر میشه این همون کارو برای لود عکس ها میکنه که به فلش گفت طولشو برابر با (BL/BT*100); قرار بده
 

BioDread

Banned
ادامه قسمت دوم

12 و 13 و 14- فکر کنم شما هم مثل من از Listener ها کم کم داره خوشتون میاد نه؟ :D
در این خط به listener گفتم وقتی عملیات load به اتمام رسید این کار ور بکنه
کارش اینه
کادر متن پویا percent و مووی کلیپ biobar رو مخفی کنه و دیگه کار بر نتونه انا رو ببینه! :shock:
چون وقتی عملیات لود کردن عکس تموم شد چرا کار بر باید مقدار درصد 100 و لودینگ رو ببینه؟!!!!!!!!!!!!!

16- در این خط من به متغییر MCL گفتم حواسط باشه که کارایی که متغییر listener انجام میده توهم انجام بده :lol:
برای اینکه بخوایید به یه چیزی یه listener نسبت بدید باید از دستور addListener استفاده کنید!

18- من در stage یه دکمه دارم که اسمش bionext هست که به فلش گفتم وقتی روش کلیک شد کد های زیرش اجرا بشه!
اگه دقت کنید میبینید که کد های زیر این دکمه همون کد های بالایی هستن!!!!!!!!!!!!!!!!!!!!!
من چرا دوبار این کد هارو نوشتم؟ عجیبه نه؟!!!
علت رو الان بهتون میگم

کد های قبل خط 18 بخاطر اینه که وقتی گالری اجرا شد خود به خود یه عکس لود بشه و منتظر بمونه تا کاربر عکس بعدی رو انتخاب کنه

و کد های بعد از خط 18 عکسی که کار بر با دکمه عقب و جلو انتخاب میکنه رو لود میکنه

42- در این خط کد هایی که میبینید یکم با کد های قبلی فرق میکنه الان طرز کارشو میگم

من به متغییر listener گفتم که وقتی عملیات لود دچار مشکل شد برگرد به فریم 4 که همون کد های اولی هست

منظورم از دچار مشکل این هست که اگه عکسی رو که کلاس MovieClipLoader برای لود کردن پیدا نکرد بیاد از اول
منم با خودم گفتم که اگه عکسی نبود حتما عکس ها تموم شده پس بیاد عکس اول نشون بده

onLoadError سه نوع متغییر میگیره که شما میتونید اگه دوست داشتید به کار بر توسط این یه متغییر بگید که چه خطایی روخ داده

46- خط 46 همون کار های قبلی رو میکنه با این تفاوت که دیگه به مقدار متغییر num اضافه نمی کنه یعنی ازش یه واحد کم میکنه این کار ها برای دکمه برگشت هست :cool:

آه بالاخره تموم شد :oops:

امید وارم این کلاس به درد as2 کارها بخوره

من سعی کردم خط به خط آموزش بدم تا برای مبتدی ها قابل فهم باشه

اگه اشتباهی و یا کم و کاستی بود منو ببخشید

اگه قسمت شد آموزش قسمت سوم هم میدم! :wink:
 

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

بالا