اسکریپت
زبان های اسکریپتی برای ارائه تحولات و ایجاد پویایی در صفحات وب ایجاد شدند . این زبان ها از روی زبان های برنامه نویسی ساخته شدند و بهمین دلیل دارای تشابه بسیاری با هم هستند . این زبان ها در اصل نمونه کوچک شده زبان های مادر خود هستند . تعدادی از فرمان ها و امکانات زبان های بزرگ در این زبان ها حذف شده اند . مثلا امکان نوشتن فایل یا پاک کردن فایل ها برروی سیستم کاربر مانند زبان های برنامه نویسی وجود ندارد . البته این زبان ها برای استفاده در زمینه کاری شبکه طراحی شده اند و حذف این دستورات علل خاصی ( از جمله بالا رفتن امنیت و ... ) داشته است .
VB Script
این زبان نمونه کوچک شده زبان VB است و کسانی که با ویژوال بیسیک کار کرده اند در یاد گیری این زبان بیشتر راه را پیموده اند و کافیست تفاوت های آن را با ویژوال بیسیک یاد گیرند . این زبان برای افزودن افکت به صفحات وب نیز کاربرد دارد . ولی کاربرد برتر آن در نوشتن برنامه های سمت سرور است که بر اساس تکنولوژی ASP صورت میگیرد . این زبان به عنوان زبان پیش فرض برای نوشتن صفحات ASP است . یاد گیری این زبان برای کسانی که تا کنون برنامه نویسی نکرده اند بسیار آسان است و شروع بسیار خوبی برای ورود به دنیای برنامه نویسی است .
JAVA Script
این زبان ساختاری شبیه زبان C دارد و بیشتر برای ایجاد افکت بر روی کامپیوتر کاربر استفاده میشود (Client-side) .احتمالا تا کنون سایت هایی را دیده اید که در آن کلمه خاصی دنبال موس میدود . یا هنگام وارد شدن به آن سایت مرورگر شما در صفحه ویندوزتان میلرزد . این قبیل کد ها که فقط روی سیستم کاربر اجرا میشوند و نیازی به پردازش توسط سرور ندارند را کد های سمت کاربر (کلاینت ساید) میگویند . البته این زبان نیز قابلیت های استفاده به صورت server-side را داراست . اما چون استفاده از زبان VBS آسانتر است معمولا از VBS برای نوشتن برنامه های سرور-ساید استفاده میشود . یکی از تفاوت های این دو زبان در طرز نوشتن حروف است . در VBS تفاوتی ندارد که دستورات را با حروف کوچک یا بزرگ بنویسید ، اما در JavaScript اگر دستوری که با حروف کوچک است با حروف بزرگ بنویسید با Error در صفحات خود مواجه میشوید.برای دیدن قدرت زبان JavaScript میتوانید از سایت AnfyTeam دیدن کنید . این سایت همچنین امکان دانلود برنامه ای برای ساخت افکت های جاوا اسکریپت خود را در اختیارتان میگذارد .
رشته چيست ؟
رشته مجموعه اي از كاراكتر هاست كه در كنار هم قرار گرفته اند و ميتواند شامل حروف و اعداد و كاراكتر هاي نقطه گذاري باشند . براي نوشتن رشته ها بايد آنها را در ميان كوتيشن قرار داد. مثلا : “Mediax”
شما ميتوانيد از عملگر + جهت متصل كردن دو رشته به هم استفاده كنيد . اكشن اسكريپت فاصله ها را در ابتدا يا انتهاي رشته ها جزو رشته به حساب مي آورد . يعني هر فاصله دقيقا مانند يك كاراكتر از رشته است . گر چه در اكشن اسكريپت متغير ها ، نام اشياء و ليبل فريم ها حساس به بزرگي يا كوچي حروف نيستند ، اما در مورد رشته ها اين خاصيت برقرار است .در مثال زير جملات نوشته شده خروجي هاي گوناگوني را نشان ميدهند . چون دو لغت “macro”و “MACRO” دو رشته واقعي هستند :
invoice.display = "macro";
invoice.display = "MACRO";
براي نشان دادن كوتيشن در يك رشته ، بايد قبل از آن يك كاراكتر بك اسلش بگذاريد . به اينكار ميگويند فرار (Escaping) كاراكتر . كاراكترهاي ديگري هم هستند كه در اكشن اسكريپت نشان داده نميشوند مگر اينكه از روش هاي فرار كاراكتر خاص آنها استفاده كنيد . جدول زير تمامي كاراكتر هاي استفاده براي فرار يك كاراكتر را نشان ميدهد :
|
Escape sequence |
Character |
|
\b |
Backspace character (ASCII 8) |
|
\f |
Form-feed character (ASCII 12) |
|
\n |
Line-feed character (ASCII 10) |
|
\r |
Carriage return character (ASCII 13) |
|
\t |
Tab character (ASCII 9) |
|
\" |
Double quotation mark |
|
\' |
Single quotation mark |
|
\\ |
Backslash |
|
\000 - \377 |
A byte specified in octal |
|
\x00 - \xFF |
A byte specified in hexadecimal |
|
\u0000 - \uFFFF |
A 16-bit Unicode character specified in hexadecimal |
اعداد :
نوع داده اي عدد از نوع داده اي بسيار دقيق شناور ميباشد . شما ميتوانيد از عملگر هاي حسابي زير جهت عمليات رياضي استفاده كنيد :
+ جمع
- تفريق
* ضرب
/ تقسيم
% به پيمانه
++ افزايش
ـ ـ كاهش
- توجه : ++ جهت افزودن يك واحد به يك متغير عددي كاربرد دارد . بيشترين استفاده از آن نوشتن i++ بجاي i=i+1 ميباشد . اين عملگر هم قبل و هم بعد از نام متغير عددي استفاده ميشود . در مثال زير متغير age ابتدا يك واحد اضافه شده و سپس با عدد 30 چك ميشود .
if (++age >= 30)
اما در مثال زير age بعد از انجام عمل مقايسه اضافه ميشود .
if (age++ >= 30)
همچنين ميتوانيد از متد هاي آماده آبجكت رياضي اكشن اسكريپت براي دستكاري اعداد استفاده كنيد . در مثال زير ازمتد sqrt جهت جذر گرفتن از عدد داده شده استفاده كرده ايم :
Math.sqrt(100);
نوع داده بولين :
يك مقدار بولين مقداريست كه دو حالت بيشتر نداره ، يا true يا false . اكشن اسكريپت اين دو مقدار را به دو مقدار 1 و 0 نيز تبديل ميكند . مقادير بولين معمولا با عملگر هاي منطقي در جملات اكشن اسكريپت استفاده ميشوند كه باعث انجام مقايسه اي براي اجراي كد بعدي ميشود . بطور مثال در كد زير فيلم در صورتي اجرا ميشود كه متغير Password مقدارش true باشد .
onClipEvent(enterFrame) {
if (userName == true && password == true){
play();
}
}
نوع داده تهيNULL) ) :
اين نوع داده فقط يك مقدار دارد و آنهم NULL است به معناي پوچ ، يعني هيچ داده اي وجود ندارد. اين نوع داده براي تفاوت قائل شدن بين وضعيت هاي گوناگون كاربرد دارد . چند مثال :
- براي اينكه نشون بده هنوز يك متغير مقدار دهي نشده يا اينكه در اين لحظه هيچ مقداري نداره .
- براي هنگامي كه ميخواهيد در يك فانكشن مقدارش را چك كنيد تا در صورت وجود ارسال شود .
- و ...
نوع داده اي تعريف نشده ( Undefined) :
اين نوع داده نيز فقط يك مقدار دارد كه Undefined است و براي متغير ها استفاده ميشود كه هنوز مقداري نگرفته اند .
وقتي شما يك اكشن اسكريپت مينويسد ،از پنل Actions براي ضميمه كردن كد ها به فريم يا دكمه يا مووي كليپ ها استفاده ميكنيد . اسكريپت هايي كه به فريم ها ضميمه ميكنيد زماني اجرا ميشوند كه هد اجرايي فلش وارد آن فريم شود . اما فريم اول فيلم فلش بگونه اي متفاوت از ساير فريم ها عمل ميكند . چون اولين فريم فيلم فلش كم كم لود ميشود و اشياء در آن همينطور كه دانلود ميشوند نمايش داده ميشوند و اين موضوع بر روي اجراي اسكريپت ها اثر ميگذارد . اما فريم هاي بعد از فريم اول تا وقتي تمام اشياء داخل آن فريم لود نشوند نمايش داده نميشوند .
اسكريپت هايي كه به مووي كليپ يا دكمه ها نسبت داده شده اند زماني اجرا ميشوند كه رويداد (event) خواسته شده اتفاق افتد . يك رويداد يك اتفاقي است كه توسط كاربر يا گاهي توسط فيلم فلش شما اتفاق مي افتد ، مانند كليك كردن موس ، فشردن يك دكمه از كيبورد ، و يا لود شدن يك مووي كليپ ( اين آخري توسط فيلم اتفاق افتاده) . شما ميتوانيد بر اساس رويداد هايي كه رخ ميدهد كد هاي متفاوتي بنويسيد تا در هنگام رخ دادن هر رويداد يك كد خاص اجرا گردد .
اكشن هايي كه به دكمه ها يا مووي كليپ ها نسبت ميدهيد در اكشن هاي خاصي بنام Handler حبث ميشوند .on و onClipEvent دوHandler هستند . شما ميتوانيد يك يا بيش از يك Event را در يك Handler قرار دهيد و همچنين ميتوانيد بيش از يك Handler براي هر شيئ قرار دهيد . هندلر onClipEvent براي مووي كليپ و هندلر on براي دكمه هاست . همچنين شما ميتوانيد از on براي خلق مووي كليپ دكمه اي استفاده كنيد كه رويداد هاي دكمه را دريافت ميكند .
رويداد هاي مووي كليپ و دكمه ها ميتوانند توسط متد هاي خود شيئ نيز بكار گرفته شوند . شما بايد يك فانكشن تعريف كنيد و آن را به متد Event Hadler ارجاع دهيد . اين فانكشن وقتي كه رويداد اتفاق بيافتد اجرا ميشود .
جدول زير متد ها و Event Handler هاي دكمه ها را نشان ميدهد :
|
Event handler actions |
Event handler methods |
|
on (press) |
onPress |
|
on (release) |
onRelease |
|
on (releaseOutside) |
onReleaseOutside |
|
on (rollOver) |
onRollOver |
|
on (rollOut) |
onRollOut |
|
on (dragOver) |
onDragOver |
|
on (dragOut) |
onDragOuot |
|
on (keyPress"...") |
onKeyDown, onKeyUp |
جدول زير متد ها و Event Handler هاي مووي كليپ ها را نشان ميدهد :
|
Event handler actions |
Event handler methods |
|
onClipEvent (load) |
onLoad |
|
onClipEvent (unload) |
onUnload |
|
onClipEvent (enterFrame) |
onEnterFrame |
|
onClipEvent (mouseDown) |
onMouseDown |
|
onClipEvent (mouseUp) |
onMouseUp |
|
onClipEvent (mouseMove) |
onMouseMove |
|
onClipEvent (keyDown) |
onKeyDown |
|
onClipEvent (keyUp) |
onKeyUp |
|
onClipEvent (data) |
onData |
با اكشن اسكريپت همچنين ميتوانيد رويداد هاي TEXTbox و ديگر اشياء اكشن اسكريپت را كنترل كنيد .
متغير چيست ؟
يك متغير يك نگه دارنده اطلاعات است كه بخشي از حافظه را بنام خود ميكند تا شما بتوانيد داخلش مقدار هاي متفاوتي را بنويسيد و پاك كنيد . متغير خودش ثابت ميماند اما مقدار داخلش تغيير ميكند .براي نگه داشتن مقادير انجام شدن يك كار خاص يا گرفتن اطلاعات از كاربر ، اول اطلاعات به حافظه رم كامپيوتر منتقل ميشود كه اينجا متغير ها هستند كه نقش نگه داري اطلاعات را انجام ميدهند .
يك ايده خوب در بكار گيري متغير ها اينه كه همون اول كه متغير را تعريف ميكنيم يه مقدار اوليه بهش بديم . به اينكار ميگويند initialize كردن . اينكار را معمولا در فريم اول انجام ميدن .
متغير ها ميتوانند انواع مختلفي از اطلاعات را در خود نگه دارند مانند اعداد ، رشته ها ، مقادير بولين ، آبجكت ها يا مووي كليپ ها .
نام گذاري متغير ها :
نام يك متغير از قوانين زير پيروي ميكند :
- بايد اسم آن نشان دهنده نوع آن باشد .
- نام متغير نميتواند از بين keyword هاي اكشن اسكريپت باشد . همچنين نميتواند از كلمات تعيين كننده مانند true , false , null و undefiend باشد.
- نام متغير بايد در محيط خودش يكتا باشد .
مقدار دهي متغير :
در فلش نيازي نيست كه نوع متغير را در ابتداي كار تعيين كنيد . فلش هنگامي كه شما به آن مقدار ميدهيد نوع متغيرش را تعيين ميكند.
X = 3 ;
در عبارت فوق ، فلش داده سمت راست مساوي را تعيين هويت ميكند و ميفهمد كه نوع آن عدد است . يك مقدار دهي ديگر ميتواند نوع x را عوض كند . مثلا x = “hello”; مقدار x را به نوع رشته اي تغيير ميدهد . متغيري كه هنوز هيچ داده اي به آن نداده ايم نوع undefiend دارد .
وقتي يك عبارت اكشن اسكريپت يك متغير را با نوع داده اي خاصي طلب ميكند ، اكشن اسكريپت بصورت اتوماتيك نوع آن را تغيير ميدهد تا نوع داده اي مطلوب حاصل شود . بطور مثال وقتي شما مقداري را به دستور trace ميدهيد مقدارش به نوع داده رشته اي تغيير ميكند و سپس آن را نمايش ميدهد . در عبارت هايي كه عملگر هاي رياضي و مانند آن قرار دارند اكشن اسكريپت متغير ها را به نوع داده اي مورد نياز تبديل ميكند . مثلا در عبارت زير 7 يك عدد است كه براي جمع با رشته تبذيل به رشته ميشود .
"Next in line, number " + 7
پس از تبديل جواب جمع رشته بصورت زير در ميايد :
"Next in line, number 7"
وقتی شما اسکریپت هایتان را اشکال زدایی میکنید نگاهی به نوع متغیرها بیندازید.
کد زیر نوع متغیر را اعلام میکند
trace(typeof(نام متغير));
قلمرو يك متغير :
قلمرو يك متغير به محدوده اي ميگويند كه آن متغير در آن شناسايي ميشود و ميتوان به آن دسترسي داشت . سه نوع قلمرو براي متغير ها در اكشن اسكريپت موجود است .
- متغير هاي local (محلي) : اين متغيرهادر بلوك كد خودشان قابل دسترسي هستند (كه بلوك كد آنها با آكولاد محصور ميشود) .
- متغير هاي Timeline : كه در هر تايم لايني كه از Target path استفاده كنيد قابل دسترسي هستند .
- متغير هاي عمومي (global) : كه در هر تايم لايني قابل دسترسي است . حتي اگر از target path استفاده نكرده باشيد .
براي اعلام كردن يك متغير(declare) ميتوانيد از عبارت var استفاده كنيد . بطور مثال متغير هاي j و i معمولا براي استفالده در حلقه ها استفاده ميشوند (البته هر اسمي ميشه گذاشت ، فكر نكني اسمش چيز خاصي داره ها .. اما خوب برنامه نويسا به يه سري اسامي عادت كردن ديگه) .
در كد زير i به عنوان يك متغير محليبگار رفته كه فقط در فانكشن makedays وجود دارد .
function makeDays() {
var i;
for( i = 0; i < monthArray[month]; i++ ) {
_root.Days.attachMovie( "DayDisplay", i, i + 2000 );
_root.Days[i].num = i + 1;
_root.Days[i]._x = column * _root.Days[i]._width;
_root.Days[i]._y = row * _root.Days[i]._height;
column = column + 1;
if (column == 7 ) {
column = 0;
row = row + 1;
}
}
}
اعلام كردن يا مقدار دهي متغير (declaration):
- براي ديكلر كردن متغير هاي تايم لاين ، از اكشن set variable استفاده ميشود و يا از عملگر مساوي . هر دو متد يك كار را انجام ميدهند .
- براي ديكلر كردن متغير هاي محلي از عبارت var در داخل فانكشن ها استفاده ميشود . يك متغير محلي در بلوك فانكشن محصور است و با رسيدن كد به خط پاياني فانكشن ، متغير محلي (اصطلاحا) ميميرد . متغير محلي اي كه در داخل بلوك نباشد با رسيدن به پايان اسكريپتش مي ميرد .
- براي دكلر كردن متغير هاي عمومي (global ) از عبارت _global قبل از اسم متغير استفاده ميشود. كدي كه مشاهده ميكنيد يك متغير عمومي بنام myname ميسازد :
_global.myName = "SHARAFI";
استفاده از يك متغير :
به مثال زير توجه كنيد :
getURL(myWebSite);
myWebSite = "http://www.macromediax.net";
اين كد دچار مشكل است و باعث ايجاد خطا در اسكريپت ميشود . چون در اين كد ابتدا از يك متغير استفاده كرده ايم و بعد آن را مقدار داده ايم . پس مقدار دهي بايد قبل از استفاده صورت گيرد .
يك مثال ديگر : در مثال زير x مقدار 15 گرفته و سپس مقدارش در Y كپي شده . در خط سوم مقدار x مساوي با 30 شده است . اما مقدار Y همان 15 ميماند . چون Y مقدارش را از X كپي گرفته و ديگر كاري به كار هم ندارند .
var x = 15;
var y = x;
var x = 30;

