View Full Version : آموزش اكشن اسكريپت
ninijapoli
12 May 2005, 04:17 AM
سلام به همه ....
من تصميم گرفتم كه در اين تاپيك آموزش اكشن اسكريپت رو به صورت مرحله به مرحله و بصورت درس به درس شروع كنم .......
و از ابتدا شروع ميكنم ........ هرچند كه ما به ابزارهاي فلش نيازي نداريم ولي دونستن چيزهايي از طراحي فلش لازمه يعني بايد اول فلش رو كمي بشناسيد بعد شروع به يادگيري اكشن اسكريپت كنيد.
من اين تاپيك رو قفل ميكنم كه پيوستگي درسها قطع نشه ....
اما يك تاپيك ديگه براي سوال هاي احتمالي در مورد اين آموزشها ايجاد ميكنم ... كه در اون تاپيك با اشاره به شماره درس سوالات رو مطرح بفرماييد ..
در ضمن بايد از Macromedia Flash MX Professional 2004 استفاده بفرماييد و آخرين نسخه كه ورژن 7.2 ميباشد. 8)
ninijapoli
12 May 2005, 05:45 AM
درس 1 - توضيحات كلي
اكشن اسكريپت از خانواده C و Java هست يعني اگر كسي يكي از اين زبانها رو بلد باشه يادگيري براش آبخوردن ميشه .
در فلش كدنويسي فقط در 3 محل امكان پذير ميباشد :
1. تايم لاين ( فريم ) ( Frame )
2. روي MovieClip كه از اين به بعد براي راحتي بجاش از واژه MC استفاده ميكنم . ( توجه كنيد كه گفتم روي MC نه داخل MC ... بعدا فرقش رو متوجه ميشيم.)
3. روي دكمه ها ( Button ) ( توجه كه داخل دكمه ها نميشه كدنويسي كرد .)
حالا اينها چي هستن .......
فريمها همون سلولهاي كوچكي هستند كه فلش ما رو تشكيل ميدن و در حالت ديفالت هر 12 فريم معادل 1 ثانيه است( 12fps )...... و در پنل Timeline قابل مشاهده هستند.
MC و دكمه ها سيمبل هستند كه توسط خود شما ايجاد ميشوند با استفاده از كليدهاي Ctrl+F8 و يا F8 قابل ساخت هستند.
حالا فرق اينها چيه با هم ......
اجراي كدهايي كه در فريمها نوشته شده به اينصورت است كه وقتي زمان نمايش به فريم مربوطه ميرسه .كدهاي موجود در اون فريم بترتيب از بالا به پايين يكي يكي اجرا ميشن
اما در مورد MC ها و دكمه وضع به اين شكل نيست ... بلكه كدها فقط در اثر يك اتفاق اجرا ميشن كه به اون اتفاق Event ميگن.
Eventها براي MC به شرح زير است ( يعني در صورت بروز يكي از اين اتفاقها كدي كه به اون اتفاق نسبت داده شده اجرا ميشود ) :
1.load ........ وقتيكه MC به نمايش در بياد يا همون بهتر لود بشه
2.unload ........ وقتيكه MC بخواد از بين بره
3.enterFrame ...... بستگي به fps شما داره كه در حالت ديفالت هر ثانيه اين Event دوازده بار روي ميده
4.mouseDown ...... وقتي دكمه چپ موس فشار داده بشه
5.mouseMove .......وقتي موس روي فلش حركت كنه ...
6.mouseUp ....... وقتي دكمه چپ موس كه فشار داده شده , رها بشه .
7.keyDown ......وقتي يك دكمه از كيبورد فشار داده بشه.
8.keyUp ...... وقتي دكمه فشار داده شده , رها بشه .
9.data ..... وقتي يك data به MC ما برسه يا يك MC ديگه توش لود بشه .( به اين يكي زياد توجه نكنين ... فعلا بهش نيازي نيست بعدن راجبش بحث ميكنيم. )
Eventها براي دكمه ها بشرح زير است :
1.press ... وقتي كه روي دكمه كليك چپ كنيم با موس
2.release .... وقتي روي دكمه كليك چپ كنيم و رها كنيم در هنگام رها شدن اين اتفاق رخ ميدهد.
3.releaseOutside ....وقتي روي دكمه كليك چپ كنيم و رها نكنيم و اشاره گر رو به خارج از محدوده دكمه برده و اونجا رها كنيم.
4.rollOver ....وقتي اشاره گر موس وارد محدوده دكمه ميشود .
5.rollOut .... وقتي اشاره گر موس از محدوده دكمه خارج شود .
6.dragOut ..... وقتي روي دكمه كليك چپ كنيم و در حاليكه چپ موس رو پايين نگه داشتيم از محدوده دكمه خارج شويم.
7.dragOver .... وقتي كار بالا رو انجام داده ولي اينبار بعد از خروج بخواهيم با پايين بودن چپ موس وارد محدوده دكمه بشيم.
8."<keyPress"<Left وقتي اين كليد از كيبرد فشرده بشه كه بجاي Left ميشه اين كليد ها رو نيز جايگزين كرد :
Left , Right , Home , End , Insert ,Delete , Backspace ,Enter ,Up , Down , PageUp , pageDown , Tab , Escape , Space
----------------------------------
با توجه به مطالب بالا ميتونيد در يك فريم كدنويسي كنيد و اونها بترتيب از بالا به پايين اجرا بشن كه در اين حالت كاربري كه فلش شما رو ميبينه دخالتي نداره ......
يا اينكه روي MC يا دكمه كدنويسي كنيد كه بر اثر اعمالي كه كاربر انجام ميده و با كليك يا حركت دادن موس يا چيز ديگر باعث بروز يك Event ميشه و بسته به كاري كه انجام داده كدهاي مربوط به اون Event اجرا ميشن.
ninijapoli
14 May 2005, 03:56 PM
درس 2 , Timeline Control
اكشن اسكريپت يه زبان oop است در نتيجه با object ها سرو كار داريم . براي نسبت دادن يك فرمان به يك آبجكت بايد اون آبجكت رو از طريق آدرس دهي مشخص كنيم.
براي اين كار 3 تا كلمه اصلي وجود داره ( root ,_ parent , this_ ) .
root_ ..... بيان كننده ريشه اصلي فلش است . يعني به خوده فلش اصلي اشاره داره كه از مقدار زيادي سيمبل و دكمه و تصوير تشكيل شده.
parent_ ...... به يك مرحله بالاتر ( قبلتر ) از جايي كه داريم كد مينويسم اشاره دارد.
this .... دقيقا به آبجكت و محلي كه اونجا كدنويسي ميشه اشاره داره.
----------------------------------------------
در كد نويس در يك فريم به چيزي نياز نيست فقط كافيست پنل اكشن رو باز كنيد و فريم مورد نظر رو انتخاب كنيد و شروع به نوشتن كد كنيد .
اما براي MC و دكمه ها بايد مشخص كنيد كه داريد براي كدوم Event كدنويسي ميكنيد كه كدهاي شما بين { } قرار ميگرد
براي MC :
onClipEvent(evnet مورد نظر){
//كد خود را اينجا بنويسيد
}
براي دكمه ها :
on(evnet مورد نظر){
//كد خود را اينجا بنويسيد
}
در انتهاي دستورات اجرايي هم باي ( ; ) قرار داد ..... هم براي فريم هم MC وهم دكمه ها
----------------------------------------------
كدنويسي رو با كنترل جريان نمايش فلش ( Timeline Control ) شروع ميكنيم و دستورها و كارهايي كه انجام ميدن رو يكي يكي نام ميبريم و براي هر كدوم مثال ميزنيم.
---------------------------------------------->gotoAndPlay
gotoAndPlay([scene:String,] frame:Object);
از اين كد براي جهش از يك فريم به فريم ديگر استفاده ميشه .... اگر در Scene نوشته بشه ميتونه به Sceneهاي ديگر هم جهش كرد ولي اگر در يك MC نوشته بشه فقط همون MC رو مديريت ميكنه .... كه مشكلش رو بعدن خودمون با يك تابع خودساخته حل ميكنيم ....
اين تابع بعد از جهش به فريم جديد به پخش فلش ادامه ميده .
اين تابع به 2 صورت آرگومان ميگيره كه اگر يك آرگومان بهش بديم بايد حتمن شماره فريم يا lable باشه كه تو پنل Properties به فريم اختصاص ميدم ولي اگر 2 تا آگومان ميديم اولي بايد اسم Scene باشه و دومي شماره فريم .
براي فريم هم Number قبول ميكنه هم string كه استرينگ حتمن بايد بينه كوتيشن قرار بگيره
( Number يعني عدد و String هم يعني يك رشته كه اينها متغير هم ميتوننن باشن ).
در اكشن اسكريپت آرگومانها رو با يه كاما ( , ) از هم جدا ميكنن.
مهــــــــــــــــــــــم : اكشن اسكريپت به بزرگ يا كوچك بودن حروف حساس است و تابع ها هم هميشه با حرف كوچك شروع ميشن و اگر اسم تابع از چند كلمه تشكيل شده باشه حرف اول كلمهاي دوم به بعد بزرگ نوشته ميشن مثله تابع بالا ....
مثـــــال:
gotoAndPlay(30);
//در يك فريم نوشته شده و باعث جهش به فريم شماره 30 شده و از اونجا به پخش فلش ادامه ميده
gotoAndPlay("myLable");
//در يك فريم نوشته شده و به فريمي كه خودمان در پنل پروپرتيس بهش اسمه (ماي ليبل )داديم جهش ميكند
gotoAndPlay("myScene",30);
//در يك فريم نوشته شده و به سين مورد نظر رفته و اونجا 30امين فريم رو شروع به پخش ميكنه
on(press){
_root.gotoAndPlay(30);
}
//براي حالت پرس يك دكمه نوشته شده و فلش اصلي رو به فريم 30 انتقال ميدهد.
onClipEvent(load){
gotoAndPlay(45);
}
//روي يك ام.سي نوشته شده و وقتي ام.سي لود شود درجا همون ام.سي رو به فريم 45 انتقال ميده
شرمنده در كد ها نمي تونم فارسي و انگليسي با هم بنويسم براي همين كلمات انگليسي رو هم فارسي نوشتم و خواهم نوشت
---------------------------------------------->gotoAndStop
gotoAndStop([scene:String,] frame:Object);
اين دستور دقيقن عين gotoAndPlay عمل ميكنه فقط بعد از جهش به فريم مورد نظر در همونجا توقف ميكنه ..... مثالها و توضيحات و آرگومانهادقيقن يكي است .....
---------------------------------------------->nextFrame
nextFrame();
اين دستور هيچ آرگوماني نميگيره و همونجور كه از اسمش معلومه يه فريم به جلو حركت ميكند.
در ضمن باعث متوقف شدن اجراي فلش بعداز رفتن به فريم بعدي نيز ميشود
---------------------------------------------->nextScene
nextScene();
اين دستور هيچ آرگوماني نميگيره و همونجور كه از اسمش معلومه يه Scene به جلو حركت ميكند.
---------------------------------------------->play
play();
اين دستور هيچ آرگوماني نميگيره و اگر فلش يا يك MC توقف شده باشه ميشه اون رو به ادامه حركت وا داشت
---------------------------------------------->prevFrame
prevFrame();
اين دستور هيچ آرگوماني نميگيره و همونجور كه از اسمش معلومه يه فريم به عقب حركت ميكند. و باعث توقف اجراي فلش نيز ميشود.
---------------------------------------------->prevScene
prevScene();
اين دستور هيچ آرگوماني نميگيره و همونجور كه از اسمش معلومه يه Scene به عقب حركت ميكند.
---------------------------------------------->stop
stop();
اين دستور هيچ آرگوماني نميگيره و اگر فلش يا يك MC در حال اجرا شدن باشه ميشه اون رو متوقف كرد.
---------------------------------------------->stopAllSounds
stopAllSounds();
اين دستور هيچ آرگوماني نميگيره و باعث قطع شدن تمامي صوتهاي در حال پخش در فلش ميشه ولي خوده فلش به پخش شدن ادامه ميده . ( صداهاي stream از قاعده مستثنا هستند .)
houtanal
18 May 2005, 02:41 AM
براي خارج نشدن از موضوع از ارسال پست هاي فضايي جدا خودداري كرده و صرفا زماني كه مي خواهيد مطلبي به مطالب گفته شده اضفه كنيد يا آن ها را اصلاح كنيد پست كردن مجاز مي باشد
براي طرح سوالات تاپيك جداگانه اي باز كنيد
ninijapoli
16 July 2005, 05:21 AM
درس 3 , Browser/Network
---------------------------------------------->fscommand
fscommand("command", "parameters");
اين کد 4 تا کاربرد داره که ربطي به خود فلش ساخته شده شما نداره و عوامل خارجي رو تنظيم يا کنترل ميکنه , يا پارامترهايي رو به اونها ارسال ميکنه.
اين کد 2 تا آرگومان دارد که به آرگومان اول command و به دومي parameters ميگن.
1. براي Flash Player :
در اين حالت شما به فلش پلير دستوراتي ميديد مثل فول اسکرين کردن , بسته شدن فلش پلير و غيره که command دستور رو مشخص ميکنه و parameters مقداري که ميخواهيم براش ست کنيم.
command :"quit" .............. parameters : None
با اين آرگومانها شما ميتونيد فلش پلير رو ببنديد.
command :"fullscreen" .............. parameters : true or false
با اين کد شما ميتونيد فلش پلير رو فول اسکرين کنيد. در parameters از 2 مقدار false يا true ميتونيد استفاده کنيد .
command :"allowscale" .............. parameters : true or false
اين کد از تغيير سايز اشکال شما در اثر تغيير سايز فلش پلير توسط کاربر جلوگيري ميکنه و انا رو هميشه 100% نگه ميداره. و از افت کيفيت عکسها جلوگيري ميکنه.
command :"showmenu" .............. parameters : true or false
اين کد باعث ميشه منو هاي بالاي فلش پلير از بين برن و در ضمن با راست کليک کردن ديگه ابزار کنترلي نظير Zoom , Play و غيره ديده نميشه.
command :"exec" .............. parameters : Path to application
با اين کد شما ميتونيد يک فايل با فرمت exe رو اجرا کنيد. البته يادتون باشه که فايل مذکور بايد در فولدري به اسم fscommand قرار بگيره و اون فولدر هم بايد در همان دايرکتوري قرار داشته باشه که فايل فلش شما هست.
command :"trapallkeys" .............. parameters : true or false
اين کد براي حالتهاي (onClipEvent(keyDown/keyUp هست همونطور که در درس 1 گفتم با فشار يک دکمه از کيبورد اين ايونت ها صدا زده ميشن .... اما بعضي از دکمه ها نظير Enter, Shift ,Esc ,Tab و از اين قبيل دکمه ها که کارهاي خاص دارن استثنا هستند.
حال اگر مقدار اين parameters رو برابر true قرار بديد اين دکمه ها به بقيه دکمه ها پيوسته و با فشارشون اون ايونت صدا زده ميشه.
2. براي web browser :
براي ارسال پيام به زبانهاي اسکريپتي مثل JavaScript يا VBScript در مرورگر اينترنت.
در اين حالت command و parameters جفتش فقط نقش مقدار براي يک تابع که با زبان اسکريپتي مذکور در صفحه اينترنتي نوشته شده را دارند.
يعني اينکه شما در صفحه وب خود با يکي از زبانهاي مذکور تابعي به اين شکل ميسازيد : ( مثال براي JavaScript )
function myDocument_DoFSCommand(command, args) {
// محل قرار گرفتن کدها
}
که myDocument دقيقن همون اسمي است که شما جلوي اتربيوت NAME در تگ EMBED يا در پروپرتيه ID در تگ OBJECT که بوسيله آن فلشتون رو در صفحه وب قرار داديد نوشته ايد.
3. براي Macromedia Director :
براي ارسال يک پيام يا يک ايونت به کدهاي لينگو که زبان مربوط به ماکرومديا دايرکتور است استفاده ميشه . که بايد براي دريافت اين پيامها يا ايونتها به زبان لينگو در فايل دايرکتور کدهايي بنويسيد.
4. براي ++ Visual Basic, Visual C, و کلن برنامه هايي که از ActiveX controls استفاده ميکنند :
با استفاده از اين کد شما يک ايونت VB با 2تا استرينگ به برنامه ميفرستيد .
براي اطلاعات بيشتر کلمه "Flash method" رو در www.macromedia.com/support/flash (http://www.macromedia.com/support/flash) سرچ کنيد.
---------------------------------------------->getURL
getURL(url:String [, window:String [, "variables":String]]) : Void
//مثال :
getURL("http://www.macromedia.com", "_blank", "GET");
اين تابع براي باز کردن يک صفحه وب ميباشد . اما کاربردهاي خيلي زيادي داره.
همونطور که در مثال ميبينيد اين تابع ماکزيمم 3 تا آرگومان ميگيره . که اولي اجباري ولي دومي و سومي اختياري هستند.
آرگومان اول آدرسي هست که بايد باز بشه.
آرگومان دوم مدل باز شدن رو تعيين ميکند. که عبارتند از :
self_ آدرس جديد رو در صفحه جاري باز ميکند.
blank_ آدرس جديد رو در صفحه ايي جديد باز ميکند.
parent_ در حالي است که صفحه جاري فريمي از يک صفحه وب باشد و آدرس جديد در صفحه وب اصلي باز ميشود.
top_ در حالي است که صفحه جاري فريمي از يک صفحه وب باشد و آدرس جديد در فريمي باز ميشود که بالاترين سطح رو داره.
آرگومان سوم ، اگر از اين آرگومان استفاده کنيد وقتي صفحه جديد باز شود متغير هاي شما که در فلش شما موجود است نيز به صفحه جديد ارسال ميشوند.
که 2 حالت GET و POST دارد که اولي متغيرها رو به حالت querystring و در address bar ميفرستد و دومي با حالت post ميفرستد.
اما 2 کار ديگه هم با اين تابع ميشه انجام داد :
1. فرستادن ايميل :
getURL("mailto:you@somedomain.com");
2. ارسال کدهاي جاوا اسکريپت به مرورگر شما :
getURL("javascript:alert('you clicked me')");
که براي اين حالت حتمن بايد فلش شما در يک صفحه وب قرار داشته باشد.
---------------------------------------------->loadMovie
loadMovie(url:String,target:Object [, method:String]) : Void
loadMovie(url:String,target:String [, method:String]) : Void
از این دستور برای فراخوانی کردن یک فایل JPEG یا یک فایل SWF که روی هارد دیسک یا در وب قرار دارد استفاده میشه.
این دستور فایل لود شده رو در level صفر قرار میدهد. و اگر فایل مذبور در محلی است که از آدرس دهی نسبی نمیشه استفاده کرد و مجبور به آدرس دهی مطلق هستید. حتما باید از
http:// or file:///استفاده کنید.
این دستور 3 تا پارامتر دارد که پارامتر سوم اختیاری است.
پارامتر اول : آدرس فایلی که باید لود بشه در اون قرار میگیره.
پارامتر دوم : اسم MC ایی که قراره فاییل لود شد جایگزین اون بشه.
که 2 حالت داره ، هم میشه آدرس اون رو داد هم اسمش رو به صورت استرینگ :
loadMovie("circle.swf", _level0.mySquare);
loadMovie("circle.swf", "mySquare");
پارامتر سوم : اگر از اين آرگومان استفاده کنيد وقتي صفحه جديد باز شود متغير هاي شما که در فلش شما موجود است نيز به صفحه جديد ارسال ميشوند.
که 2 حالت GET و POST دارد که اولي متغيرها رو به حالت querystring و در address bar ميفرستد و دومي با حالت post ميفرستد.
اگر چیزی برای فرستادن ندارید این پارامتر رو بیخیال شید.
---------------------------------------------->loadMovieNum
loadMovieNum(url:String,level:Number [, variables:String]) : Void
این دستور شبیه دستور loadMovie هست ولی با هم 2تا فرق عمده دارن.
1. فایلی که قراره لود بشه باید حتمن در فولدری باشه که فایل فلش شما قرار داره.
2. در پارامتر دوم شما level ایی که میخواهید فایلتون اونجا لود بشه رو انتخاب میکنید.
---------------------------------------------->loadVariables
loadVariables (url:String , target:Object [, variables:String]) : Void
با این دستور شما میتونید کلی متغیر رو در فلشتون لود کنید .
میتونید با کمک زبانهای تحت وب به بانکهای اطلاعاتی دسترسی پیدا کنید.
میتونید نوشته های توی فلش رو بدونه تعویض هر روز اون فقط با ادیت کردن یک فایل تکست عوض کنید.
این دستور میتونه مقادیر متغیر ها رو از این فایلها بگیره :
فایل txt
فایلهای تکستی که با یکی از زبانهای زیر جنریت شده باشن:
ColdFusion, a CGI script, Active Server Pages (ASP), PHP, Perl script
و در فلش متغیرهایی با همون نامها بسازه ... اگر هم قبلن با اون اسمها متغیری باشه . مقدارش رو با مقدار جدید عوض میکنه.
توجه : اگر از فلش قدیمی، قبل از ورژن 7 استفاده میکنید ... آدرس فایل که میدید باید در همون سوپر دامین باشه که فایل فلشتون هست . ( منظور اینکه اگر در ساب دامین هم باشه اشکالی نداره )
اما اگر از فلش 7 یا بالاتر استفاده میکنید باید دامینها دقیقن یکی باشن.
نحوه نگارش متغیرها هم در فایل مذکور دقیقن شبیه querysting هست یعنی متغیرها با یک اند ساین "&" از هم جدا میشن.
مثال:
name=ALEX&lastName=Del Peiro&team=Juventus Football Clubدر اینجا 3 تا متغیر بنامهای name , lastName, team داریم که بترتیب مقادیر ALEX , Del Piero , Juventus football Club رو دارن.
این دستور 3 تا پارامتر میگیره :
پارامتر اول : آدرس فایلی که باید متغیرها از اون لود بشن.
پارامتر دوم : آدرس MC ایی که متغیرها باید اونجا لود بشن تا بعدن از طریق اون و آدرس دهی درست به متغیرها دسترسی پیدا کنیم.
پارامتر سوم : اگر از اين آرگومان استفاده کنيد وقتي صفحه جديد باز شود متغير هاي شما که در فلش شما موجود است نيز به صفحه جديد ارسال ميشوند.
که 2 حالت GET و POST دارد که اولي متغيرها رو به حالت querystring و در address bar ميفرستد و دومي با حالت post ميفرستد.
اگر چیزی برای فرستادن ندارید این پارامتر رو بیخیال شید.
---------------------------------------------->loadVariablesNum
loadVariablesNum (url:String ,level:Number [, variables:String]) : Void این دستور شبیه دستور loadVariables هست فقط یک تفاوت دارد.
در پارامتر دوم شما بجای مشخص کردن MC ایی که هدف باشد یک level رو انتخاب میکنید. و متغیر ها در یک level لود خواهند شد.
---------------------------------------------->unloadMovie
unloadMovie(target:MovieClip) : Void
unloadMovie(target:String) : Void با این دستور شما میتونید MC ایی که با دستور loadMovie لود کردید رو remove کنید.
که تنها یک پارامتر دارد و آن هم، هم متونه اسم اون MC بصورت استرینگ باشه و یا آدرس اون MC .
---------------------------------------------->unloadMovieNum
unloadMovieNum(level:Number) : Void با این دستور شما میتونید MC ایی که با دستور loadVariablesNum لود کردید رو remove کنید.
که تنها یک پارامتر دارد و آن هم شماره level ایی است که فایل مذکور رو آنجا لود کردید.
hosseingholi
23 January 2006, 01:06 PM
دستت درد نكته بخاطر مقاله ي خوبت
rtech
19 March 2006, 09:54 AM
آقا خیلی عالی بود من یک PDF دارم درست میکنم که فارسی هست در مورد Action script که حتما از نوشته های شما هم استفاده خواهم کرد
مارال55
22 May 2006, 12:42 AM
سلام
نمي دونم اين تاپيك ماله كي هست از نوينسندش هم خيلي ممنونم ولي كاش ادامه داشته باشه
sunny girl
13 September 2006, 03:10 AM
مطالبتون عالي و بي نظيره... لطفا ادامه بديد...:icon_excl
vBulletin v3.7.1, Copyright ©2000-2008, Jelsoft Enterprises Ltd.