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

rezaee

Member
با سلام به دوستای خوبم توی انجمن فلش........
اگه لطف کنید و درباره کدنویسی این کار کمکم کنید خیلی ممنونتون میشم.:)
من میخواستم یه ماسک ایجاد کنم که بر اساس زمان جابه جا بشه و قسمتهای مختلف تصویر ماسک شده رو نشون بده(یعنی هرچی ساعت تغییر میکنه، ماسک ما هم بر اساس زمان تغییر موقعیت بده) این کار رو از دو حالت میشه در نظر گرفت:
1- از طریق ایجاد یک موی کلیپ و قرار دادن ماسک و مسیر حرکتی ما درون آن و انجام عملیات با توجه به زمان با استفاده از کد نویسی :shock:
2- استفاده از مختصات دهی ماسک توسط کد نویسی با توجه به زمان :shock:
البته حتما راه های دیگه هم وجود داره که این دوتا به ذهن من رسیده. البته من راه اول به کارم میاد چون دومی محدودیت بیشتر در تنوع مسیر حرکتی داره
ماسک رو درون یک مووی کلیپ ایجاد کنیم و به اون افکت حرکتی (موشن تویین) بدیم و با استفاده از کد نویسی بگیم که درصورتی که ساعت مثلا 22 شب بود به آهستگی شروع به حرکت بکنه و سپس باز برای مثال در ساعت 7 صبح به انتهای مووی کلیپ ما رسیده باشه.
با توجه به تصویر زیر که لایه ماسک ما مربع سبز رنگ و لایه ماسک شده چند ضلعی است. در قسمت اول"شماره1" تصویر با توجه به مثال بالا در فریم اول وقتی ساعت برابر 22 شد موشن تویین ما شروع به حرکت بکنه به طوری که در ساعت 2/30 صبح به قسمت "شماره2"تصویر فریم 20 که وسط حرکت لایه ماسک ما هست رسیده باشه(باتوجه به اینکه ما در مثال بالا ساعت شروع حرکت ماسک را 22 و انتهای حرکت ماسک را 7 صبح قرار دادیم، وسط آن ساعت 2/30 صبح می باشد). و در ساعت 7 صبح به فریم 40 برسد که انتهای مسیر حرکت ماسک می باشد.قسمت"شماره3"تصویر
http://i37.tinypic.com/140hp2v.gif[/IMG[/CENTER]]
فایل اف ال ای ماسک حرکتی رو براتون گذاشتم تا راحت تر متوجه بشید.(البته این مووی کلیپ نیست)
اگر خواستید کد دریافت زمان جاری رو هم دارم. لطفا فایل Fla رو آپلود کنید. از لطفتون پیشاپیش ممنونم.
:rose:​
 

پیوست ها

  • simple.zip
    5.4 کیلوبایت · بازدیدها: 19

<3pehr>

Active Member
سلام
یه سوال : شما می خواین این حرکتتون چجوری باشه؟یعنی هر ثانیه یا دقیقه حرکت کنه یا نه مثلا هر ساعت که می گذره حرکت کنه؟
اگه هر ثانیه بخواین حرکتی داشته باشه بهتره از روش دومی که خودت تو پست اول گفتی استفاده کنی(یعنی همون مختصات دهی) اما اگه نه هر ساعت حرکتی داشته باشه راحت ترین راه اینه مثلا بگی اگه ساعت 22 برو فریم 1 اگه 23 فریم 2 و الی آخر.
حالا شما بگو کدوم به کارت میاد!



سپهر
 

rezaee

Member
اگه به عکس دقت کنی میبینی که یه مووشن تویین شامل از 40 فریم به ماسک ما داده شده. (که البته به اشتباه به لایه ماسک شده هم داده شده که مهم نیست) ما به متغییری احتیاج داریم که فاصله زمانی بین دو ساعت رو (مثلا 22 تا 7) را محاصبه کنه (هرچی واحد کوچکتر باشه انیمیشن بهتر اجرا میشه، مثلا به جای ساعت یا دقیقه فاصله بین دو زمان را به ثانیه محاسبه کنه) و سپس آن رو به 40 قسمت تقسیم کنیم(به علت اینکه انیمشن ما 40 فریم داره) و سپس بگیم اگه 1/40 از عدد بدست آمده بود ماسک برود به فریم یک، اگه در قسمت 2/40 بود برو به فریم 2 (ازچهل فریم)
با یه مثال عددی راحت تر متوجه میشی........
اگه فاصله ای که می خواییم از ساعت 22 تا 7 باشه، از ساعت 22 تا اینکه ساعت 7 بشه باید 9 ساعت سپری بشه هر ساعت شامل 3600 ثانیه هست. و 9 ساعت شامل 32400 ثانیه هست. درصورتی که کل انیمیشن ما 40 فریم باشه باید 32400 رو تقسیم بر 40 کنیم که میشه 810. با این حساب باید مشکل حل شده باشه، ما به یک شرط احتیاج داریم که بگه اگر در 810 ثانیه اول بود ماسک رو در فریم اول مووشن تویین نمایش بده، اگه در 810 ثانیه دوم بود ماسک رو در فریم دوم موشن تویین نمایش بده و....... اگه در 810 ثانیه 40 ام بود ماسک رو در فریم چهل ام نمایش بده.
:tavajoh:و صد البته در ابتدا چک میشه که اگه ساعت قبل از ساعت شروع ما یا بعد از ساعت پایان ما (یعنی قبل از ساعت 22 و بعد از ساعت 7) ماسک رو نمایش نده.
مشکلی که هست من از لحاظ الگوریتمی این کار رو بلدم اما کد نویسی شرمندم:-<
باتشکر اگه مشکلی پیش اومد و احتیاج بود بگو توضیحات بیشتری بدم. راستی عکس مناسب پیدا نکردی؟؟؟؟&gt;|&lt;
 

mshgames

Well-Known Member
سلام دوسته من:D

شما میتونی تو اکشن از هر روشی استفاده کنی برایه تعیین مسیر شی Math یا مثلا ذخیره مختصات در یک Array و یا این روشی که بهت الان میگم

یه فایله برات آماده کردم ابتدا شما دو تا مووی کلیپ بسازید یکی اسمشو تو نوار پایین Properties و در قسمت Instance Name بدید
mc این عکسه شمایه (همون تصویر پشت ماسک) و اون مووی کلیپ دیگری بزارید در سمت بالا و سمت راست اون گوشه واسمشو بزارید mas


خوب حالا اندازه استیج فایله فلشتون به صورت دیفالت باشه یعنی طوله صفحه باشه 550 و عرضش 400 تغییرش ندیید

حالا این کدو تو فریمه 1 وارد کنید (تو فریم فریمو انتخاب و دکمه F9) کیبرد

PHP:
mc.setMask(mas);
var speedx=5;
var speedy=0;
var speedxx=5;
onEnterFrame=function(){
	mas._x-=speedx;
	mas._y+=speedy;
	if(mas._x<=0){
		speedx=0;
		speedy=3;
	}
	if(mas._y>=140){
		speedy=0;
		mas._x+=speedxx;
	}
	if(mas._x>=400){
		speedxx=0;
		speedy=3;
	}
	if(mas._y>300){
		speedy=0;
		mas._x-=5;
	}
};


توضیحش واقعا واضح بازی کردن با ایکس ایگرگ مووی (برایه ثانیه باید از ست اینتوال استفاده کنی تا امشب وقت کردم یه نمونه برات درست می کنم فقط کافیه بعضی جاها این کدو تبدیل به فانشن و فراخوانی توسط ست اینتروال کنی


موفقباشی:paint:

اینم فایله Fla

محمد
 

پیوست ها

  • Move.rar
    9.1 کیلوبایت · بازدیدها: 15
آخرین ویرایش:

mshgames

Well-Known Member
منظورتو گرفتم تازه

الان برم ببینم چیکار می تونم بکنم
 

mshgames

Well-Known Member
سلام

آقا شما باید اول یه ساعت درست کنید تاریخ و وقت این جور چیزا سپس نسبت به اون شرط گذاری کنید
یه نمونه ساده ساختم


این دستور مورد نظر تو فریمه یک

PHP:
mc.setMask(mas);
var speedx=0;
onEnterFrame=function(){
	mas._x-=speedx;
	if(mm.clock=="18"+":"+"50"+":"+"50"){
		speedx=5;
	}
	if(mas._x<=0){
		speedx=0;
	};
}





اینم فایله Fla

ساعت ویندوزتو رو 6 و 48 دقیقه بزار و نتیجه رو ببین

موفق باشی

محمد
 

پیوست ها

  • MMM.rar
    11.9 کیلوبایت · بازدیدها: 9

rezaee

Member
رفیق عزیز ام MShGames دمت گرم........:wink:
اما فکر میکنم منظورم رو اصلا متوجه نشدی(در ضمن دومی در ساعتی که گفتی هیچ کاری انجام نمیداد)
بهتره یه جور دیگه پیش بریم. من چند تا از کدها رو نمی دونم اونا رو از شما بپرسم بهتره.
چطور میشه این دستور رو نوشت: شی ماسک با نام "فلان" درون مووی کلیپ "بمان" برود به فریم بعدی( یا فریم شماره X) و متوقف شود. از این دستور من فقط gotoAndStop رو بلدم
در ضمن دوستان دیگه اگه سوال تاپیک رو متوجه شدن لطفا کمک کنند.

:tavajoh: دوست عزیز MShGames خان از اینکه وقت گذاشتی خیلی خیلی ممنونم. صد البته من بد توضیح دادم باید ببخشی

منتظرتون هستم............:shock:
 

rezaee

Member
تو این انجمن با این همه حرفه ای کسی نبود جواب سوال مارو بده؟؟؟؟؟؟؟؟؟؟؟؟؟

:razz:
 

rezaee

Member
اگه نه هر ساعت حرکتی داشته باشه راحت ترین راه اینه مثلا بگی اگه ساعت 22 برو فریم 1 اگه 23 فریم 2 و الی آخر.
حالا شما بگو کدوم به کارت میاد!



سپهر

من دومی به کارم میاد
اگه فقط لطف کنی و بگی چطور میتونم کدی بنویسم که بگم لایه ماسک از مووی کلیپ فلان بره به فلان فریم از همون مووی کلیپ ممنون میشم( مثلا اینکه موی کلیپ فلان بره به فریم دومش و متوقف شه) با این کار میتونیم با استفاده از دستوارت شرطی (برای بررسی زمان) این کار رو انجام بدیم که وقتی زمان به ساعت x رسید برو به فریم بعد از مووی کلیپ فلان.


:shock:مخم از گوشام پاشید بیرون از صبح تا حالا دارم با این ور میرم.ایول خودم دارم به یه نتایجی میرسم ..............

:neutral:چرا کسی جواب سوالم رو نمیده(دومی فکر میکنم خیلی آسون باشه):cry:
 
آخرین ویرایش:

<3pehr>

Active Member
سلام
کد:
اسم مووی کلیپ.gotoAndStop(شماره فریم);
شرمنده الان دارم میرم جایی وقت ندارم فعلا کدرو نوشتم براتون اگه نتونستین استفاده کنین امشب تا فردا صبح کامل براتون توضیح می دم و یه مثال واستون می ذارم.





سپهر
 

rezaee

Member
دوست من
از این کد استفاده کردم اما پیغام خطا میداد و میگفت که:.........................:shock:
ووااای ی ی من که دارم دیونه میشم......
از صبح تا حالا 1000 نوع مختلف روی این کد کار کردم اما error میداد:shock:
الان که خواستم دوباره انجامش بدم و پیغامش رو برای شما بنویسم کارکرد.......
بماند چه بهتر. من اول که این رو نوشتم تا کار کرد this.gotoAndStop(60) به هر حال ممنووووووووووووون


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

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

<3pehr>

Active Member
سلام
مثل اینکه خداروشکر حل شده پس!
شما گفته بودین انیمیشنتون توی یه مووی کلیپه برای همین من اون کد رو گذاشتم،اونجوری شما از بیرون اون مووی کلیپ بهش دستور رفتن به فریم بعد رو می دین اما اینی که شما نوشتی ماله وقتیه که دستور رو روی خود مووی کلیپ بنویسین!فکر کنم منظورم و رسوندم;)
آخه من توی این منظور رسوندن همیشه مشکل دارم :دی
خلاصه اگه بازم حل نشده بود بگو.


سپهر
 

rezaee

Member
MissionCompleted هورااا

سلاااااااام:rose::oops::oops::oops:

بالاخره انجام شد.

دیگه مغزم داشت میترکید که بعد رفع کردن 2342904284724 :shock:Erorr بالاخره انجام شد.

فایلش رو به صورت اس دبلیو اف براتون میزارم ( و همینطور اف ال ای):paint:

کار این نوع کد نویسی که بش رسیدم اینه که مووی کلیپ رو بر اساس ساعت حرکت بده ( مووی کلیپی که دارای مووشن تویین هست و ما روی نوار زمان اون برحسب زمان پیمایش میکنیم.)

:tavajoh:پس از دریافت فایل و خارج کردن از حالت فشرده :
اول MovieClipHandling رو باز کنید تا مووشن توویین رو بدون کد نویسی و به صورت عادی ببینید
دوم actionScriptProgramin(movieClipHandling) رو باز کنید و ساعت کامپیوترتون رو به 22 شب تغییر بدید و سپس دقیقه اون رو به زمانی جلو تر از زمان جاری کامپیوتر تغییر بدید. این مووی کلیپ باید از ساعت 22 شب، مسیر مشخص شده رو حرکت بکنه و در ساعت 1 صبح به جای اولی رسیده باشه.
نوع عددی زمان دردسرهایی رو تو بخش کد نویسی برام ایجاد کرد که بلاخره حل شد.

باید ببخشید که کدش به هم ریخته. چون خیلی تغییرات توش دادم . و الان هم حال معقولانه کردن کدهام رو ندارم. اگه میبینید متغییر های اضافی تعریف کردم بخاطره اینه که اکشن من ضعیف و بر اساس آشنایی با برنامه نویسی های دیگه باش برخورد میکردم ( موقعی که خطایی پیش میومد میگفت شاید این Operand به این صورت اینجا اعمال نمیشه)

از این امکانات در جاهای بسیار مختلفی میتونیم استفاده کنیم. دوست دارم کارایی که در این زمینه به ذهنتون میرسه که با این روش انجام داد رو نام ببرید.(آخه حتما یه دلیلی داشته که من اومدم سراغش)&gt;|&lt;
 

پیوست ها

  • Hndling.zip
    74.1 کیلوبایت · بازدیدها: 29
  • SourcForMyFriends.zip
    199.1 کیلوبایت · بازدیدها: 13
آخرین ویرایش:

rezaee

Member
کد این فایل

اینم کد این فایل برای کسانی که نمی خوان فایلش رو دانلود کنند.


PHP:
_root.onEnterFrame = function (){
var myDate:Date = new Date ();
var myHours = myDate.getHours();
var myMinutes = myDate.getMinutes();
var mySeconds = myDate.getSeconds();
var stackMin,stackH,hX,X,stack:Number = 1;



stackH=myHours-22;

if(stackH<0) {
	hX=myHours+2;
}else {
	hX=myHours-22;
}

stackMin=hX*60;
stackMin=stackMin+myMinutes;
X=80*stackMin;
stack=X/540;
X=Math.round(stack);
mask_mc.gotoAndStop(X);




text_txt.text= myHours+" : "+myMinutes+" : "+mySeconds ;


}

اگر خواستید و یا بعدا خودم بیشتر وقت پیدا کردم آموزش کاملش رو براتون میزارم..........(اگر درخواست بدید حتما میزارم)
:paint:
 

force

Member
سلام:
موفق باشی کار جالبی بود........
ولی حالا میخوای ازش چه استفاده ای ببری.........؟
البته اگر نشه استفاده ای هم ازش کرد (که میشه) خوبه آدم بعضی وقتا یه چیزایی درست کنه که ................
من اگر یه سایت پر بازدید داشتم شاید تو تاپم ازش استفاده میکردم ,مثلا اگر شب بود تو سایت هم شب باشه و اگر روز بود..........(البته زمان رو با gmt تنظیم میکردم نه کامپیوتر شخص)..........
نگهش داشتم شاید یه روز به دردم خورد...(دیگه نشینم روش فکر کنم)...........:wink:
 

rezaee

Member
من اگر یه سایت پر بازدید داشتم شاید تو تاپم ازش استفاده میکردم ,مثلا اگر شب بود تو سایت هم شب باشه و اگر روز بود..........(البته زمان رو با gmt تنظیم میکردم نه کامپیوتر شخص)..........
:wink:
خوشم میاد زدی به خال........ دقیقا من برای همچین چیزی میخواستمش:wink:. (البته جاهای دیگه هم کاربرد داره) راستی قضیه Gmt رو لطف میکنی برام توضیح بدی و یه مثال هم بزنی؟؟؟؟؟؟؟؟
 

force

Member
سلام:
نویسنده rezaee
قضیه Gmt رو لطف میکنی برام توضیح بدی و یه مثال هم بزنی؟؟؟؟؟؟؟؟
منظورم از gmt اینکه ساعت با وقت جهانی تنظیم بشه نه با ساعت کامپیوتر شخصی.......مثل این ساعت الان این روی gmt+3.5 (زمان ایران) تنظیم شده چون معلوم نیست که حتما ساعت کامپوتر شخص درست باشه این رو گفتم : clock
 

amir_s

Active Member
در واقع همون ساعت Server ...
که می تونید از برنامه های Server Side استفاده کنید و اون ساعت رو استخراج کنید و بعد توسط Flash اون مقادیر رو دریافت و پردازش کنید .
 

amir_s

Active Member
در واقع همون ساعت Server ...
که می تونید از برنامه های Server Side استفاده کنید و اون ساعت رو استخراج کنید و بعد توسط Flash اون مقادیر رو دریافت و پردازش کنید .
 

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

بالا