اينم از يه آماتور بپذيريد دستور movie clip line to
سلام دوستان :rolleye:
اين اولين پست من تو اين فورومه پس به همگي سلام ميكنم و به دوستاني هم كه تواين پست زحمت زيادي كشيدن خسته نباشيد ميگم
اما براي اينكه دست خالي هم نيومده باشم با اجازه حرفه اي ها يه مطلب مي نويسم تا بعد ... ;)
با دستور lineto میتوان نقطه شروع و خاتمه یک خط را مشخص کرد که در یک movie clip قرار دارد
تا فلش خط را رسم کند
اینجا یک سورس میذارم که بدنیست نگاهش کنید
on (release) {
with (clip_1) {
lineStyle(5, 0xFF00FF, 100);
moveTo(200, 200);
lineTo(300, 300);
lineTo(100, 300);
lineTo(200, 200);
}
}
اول یک نماد movie clip درست میکنیم که میتواند خالی باشد و نام آن را clip_1 میگذاریم
linestyle سه پارامتر داره
(1)border که در این مثال 5 (2)کدرنگ خط (3)آلفای خط 0 تا 100
move to به نقطه شروع خط میرود وخط از آنجا شروع میشود
lineto نقطه آخر خط را مشخص میکند
که در حالتی که از دستور moveto استفاده نکنیم نقطه فعلی نقطه شروع فرض میشود
(خط سوم به بعد برنامه )
واما یک نکته ای رو بگم و اون اینه که نیاز نیست حتما برای اجرای این دستور داخل یک نماد را هدف گیری کنید و حتی میتوانید در تایم لاین جاری هم ازاین دستور استفاده کنید که واقعا چیز عالیه
بیشترین کاربرد این دستور زمانی است که شما میخواهید کشیدن خط را به کاربر بسپارید ویا بنا بر نیاز میخواهید یک خط را در همان لحظه تعریف کنید اینم یک مثال که میتونید به یک دکمه نسبت دهید
on (release) {
lineStyle(5, 0xFF00FF, 100);
moveTo(200, 200);
lineTo(300, 300);
lineTo(100, 300);
lineTo(200, 200);
}
ضمنا شما میتوانید به جای مقدار دهی دقیق x,y از متغیر ها هم استفاده کنید
سئوالی بود در خدمتم
موفق باشید
انواع حلقه ها در فلش (loop)
فلش سه نوع حلقه را در زبان اکشن اسکریپت جای داده است که هر کدام برای قصد خاصی طراحی شده اند :
• While : حلقه ای که شرطی در بالای حلقه دارد . اگر شرط درست باشد دستورات حلقه اجرا میشند . اینکار تا زمانیکه شرط درست است ادامه پیدا میکند .
• Do While : شرط در این حلقه بعد از دستورات میاد . یعنی حداقل یکبار دستورات حلقه اجرا میشوند تا نوبت به شرط می رسد . حال اگر شرط برقرار بود دوباره دستورات اجرا میشوند .
• FOR : این نوع حلقه شرطش بصورت چک کردن یک عدد است . م برای تکرار حلقه به تعداد معین باید ازین حلقه کمک گرفت .
دستورات = da
شرط = sh
اجرای حلقه While
XXXXXXXXX
While(sh) {
// da //
}
XXXXXXXXX
اجرای حلقه Do While
XXXXXXXXX
Do{
// da //
;While(sh) }
XXXXXXXXX
اجرای حلقه FOR
XXXXXXXXX
for(i=0 ; i<=5 ; i++){
// da //
}
XXXXXXXXX
دراین جلقه در ابتدا i=0 است و هر بار به کد i++ یک واحد اضافه میشد و شرط ایستادن حلقه این است که i<=5 باشد .
اكشن اسكريپت : متغير هاي رشته اي ، عددي و بولين و نال
تاپیک عالیه . از این به بعد منم پایم :5: اجازه می دید ؟
سطح تاپیک رو یه زره زود بردید بالا . اول یه کم باید مفاهیم پایه ای و صد البته مهم رو توضیح بدید بعد بریم سراغ کدها و ...
یکی از مفاهیم پایه ای و مهمه مهم رشته هاست که اشاره ای به اون نشده . اگه اجازه بدید برم سراغ رشته ها :
رشته چيست ؟
رشته مجموعه اي از كاراكتر هاست كه در كنار هم قرار گرفته اند و ميتواند شامل حروف و اعداد و كاراكتر هاي نقطه گذاري باشند . براي نوشتن رشته ها بايد آنها را در ميان كوتيشن قرار داد.
مثلا : “p30world”
شما ميتوانيد از عملگر + جهت متصل كردن دو رشته به هم استفاده كنيد . اكشن اسكريپت فاصله ها را در ابتدا يا انتهاي رشته ها جزو رشته به حساب مي آورد . يعني هر فاصله دقيقا مانند يك كاراكتر از رشته است . گر چه در اكشن اسكريپت متغير ها ، نام اشياء و ليبل فريم ها حساس به بزرگي يا كوچي حروف نيستند ، اما در مورد رشته ها اين خاصيت برقرار است .در مثال زير جملات نوشته شده خروجي هاي گوناگوني را نشان ميدهند . چون دو لغت “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 چك ميشود .
XXXXXXXXXXXXXX
if (++age >= 30)
XXXXXXXXXXXXXX
اما در مثال زير age بعد از انجام عمل مقايسه اضافه ميشود .
XXXXXXXXXXXXXX
if (age++ >= 30)
XXXXXXXXXXXXXX
همچنين ميتوانيد از متد هاي آماده آبجكت رياضي اكشن اسكريپت براي دستكاري اعداد استفاده كنيد . در مثال زير ازمتد sqrt جهت جذر گرفتن از عدد داده شده استفاده كرده ايم :
XXXXXXXXXXXXX
Math.sqrt(100);
XXXXXXXXXXXXX
نوع داده بولين :
يك مقدار بولين مقداريست كه دو حالت بيشتر نداره ، يا true يا false . اكشن اسكريپت اين دو مقدار را به دو مقدار 1 و 0 نيز تبديل ميكند . مقادير بولين معمولا با عملگر هاي منطقي در جملات اكشن اسكريپت استفاده ميشوند كه باعث انجام مقايسه اي براي اجراي كد بعدي ميشود . بطور مثال در كد زير فيلم در صورتي اجرا ميشود كه متغير Password مقدارش true باشد
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
onClipEvent(enterFrame) {
if (userName == true && password == true){
play();
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
نوع داده تهي(NULL) :
اين نوع داده فقط يك مقدار دارد و آنهم NULL است به معناي پوچ ، يعني هيچ داده اي وجود ندارد. اين نوع داده براي تفاوت قائل شدن بين وضعيت هاي گوناگون كاربرد دارد . چند مثال :
• براي اينكه نشون بده هنوز يك متغير مقدار دهي نشده يا اينكه در اين لحظه هيچ مقداري نداره .
• براي هنگامي كه ميخواهيد در يك فانكشن مقدارش را چك كنيد تا در صورت وجود ارسال شود .
• و ...
نوع داده اي تعريف نشده ( Undefined) :
اين نوع داده نيز فقط يك مقدار دارد كه Undefined است و براي متغير ها استفاده ميشود كه هنوز مقداري نگرفته اند .
ببخشید که کد ها رو تو تگ کد قرار نداددم . چون حسابی قاتی پاتی میشه .همین طوری هم فاصله ها رعایت نشده . اونم به خاطر سیستم ویرایش پست های سایته که نمی ذاره بین کاراکترهای نوشتاریه حروف بیشتر از یک فاصله وجود داشته باشه . امیدوارم این مشکل به زودی برطرف بشه :20: :41:
اكشن اسكريپت : متغير ها در فلش
بعد از شناخت انواع متغیر ها میرسیم به کاربرد اونها و طریقه استفاده ازشون :
کاربرد یک متغير چيست ؟
يك متغير يك نگه دارنده اطلاعات است كه بخشي از حافظه را بنام خود ميكند تا شما بتوانيد داخلش مقدار هاي متفاوتي را بنويسيد و پاك كنيد . متغير خودش ثابت ميماند اما مقدار داخلش تغيير ميكند .براي نگه داشتن مقادير انجام شدن يك كار خاص يا گرفتن اطلاعات از كاربر ، اول اطلاعات به حافظه رم كامپيوتر منتقل ميشود كه اينجا متغير ها هستند كه نقش نگه داري اطلاعات را انجام ميدهند .
يك ايده خوب در بكار گيري متغير ها اينه كه همون اول كه متغير را تعريف ميكنيم يه مقدار اوليه بهش بديم . به اينكار ميگويند initialize كردن . اينكار را معمولا در فريم اول انجام ميدن .
متغير ها ميتوانند انواع مختلفي از اطلاعات را در خود نگه دارند مانند اعداد ، رشته ها ، مقادير بولين ، آبجكت ها يا مووي كليپ ها .
نام گذاري متغير ها :
نام يك متغير از قوانين زير پيروي ميكند :
• بايد اسم آن نشان دهنده نوع آن باشد .
• نام متغير نميتواند از بين keyword هاي اكشن اسكريپت باشد . همچنين نميتواند از كلمات تعيين كننده مانند true , false , null و undefiend باشد.
• نام متغير بايد در محيط خودش يكتا باشد .
مقدار دهي متغير :
در فلش نيازي نيست كه نوع متغير را در ابتداي كار تعيين كنيد . فلش هنگامي كه شما به آن مقدار ميدهيد نوع متغيرش را تعيين ميكند.
X = 3 ;
در عبارت فوق ، فلش داده سمت راست مساوي را تعيين هويت ميكند و ميفهمد كه نوع آن عدد است . يك مقدار دهي ديگر ميتواند نوع x را عوض كند . مثلا ”x = “hello; مقدار x را به نوع رشته اي تغيير ميدهد . متغيري كه هنوز هيچ داده اي به آن نداده ايم نوع undefiend دارد .
وقتي يك عبارت اكشن اسكريپت يك متغير را با نوع داده اي خاصي طلب ميكند ، اكشن اسكريپت بصورت اتوماتيك نوع آن را تغيير ميدهد تا نوع داده اي مطلوب حاصل شود . بطور مثال وقتي شما مقداري را به دستور trace ميدهيد مقدارش به نوع داده رشته اي تغيير ميكند و سپس آن را نمايش ميدهد . در عبارت هايي كه عملگر هاي رياضي و مانند آن قرار دارند اكشن اسكريپت متغير ها را به نوع داده اي مورد نياز تبديل ميكند . مثلا در عبارت زير 7 يك عدد است كه براي جمع با رشته تبذيل به رشته ميشود .
xxxxxxxxxxxxxxxxxxxxx
"Next in line, number " + 7
xxxxxxxxxxxxxxxxxxxxx
پس از تبديل جواب جمع رشته بصورت زير در ميايد :
"Next in line, number 7"
وقتی شما اسکریپت هایتان را اشکال زدایی میکنید نگاهی به نوع متغیرها بیندازید.
کد زیر نوع متغیر را اعلام میکند
xxxxxxxxxxxxxxxxxxxx
trace(typeof(name));
xxxxxxxxxxxxxxxxxxxx
قلمرو يك متغير :
قلمرو يك متغير به محدوده اي ميگويند كه آن متغير در آن شناسايي ميشود و ميتوان به آن دسترسي داشت . سه نوع قلمرو براي متغير ها در اكشن اسكريپت موجود است .
• متغير هاي local (محلي) : اين متغيرهادر بلوك كد خودشان قابل دسترسي هستند (كه بلوك كد آنها با آكولاد محصور ميشود) .
• متغير هاي Timeline : كه در هر تايم لايني كه از Target path استفاده كنيد قابل دسترسي هستند .
• متغير هاي عمومي (global) : كه در هر تايم لايني قابل دسترسي است . حتي اگر از target path استفاده نكرده باشيد .
براي اعلام كردن يك متغير(declare) ميتوانيد از عبارت var استفاده كنيد . بطور مثال متغير هاي j و i معمولا براي استفالده در حلقه ها استفاده ميشوند (البته هر اسمي ميشه گذاشت ، فكر نكني اسمش چيز خاصي داره ها .. اما خوب برنامه نويسا به يه سري اسامي عادت كردن ديگه) .
در كد زير i به عنوان يك متغير محليبگار رفته كه فقط در فانكشن makedays وجود دارد .
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
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;
}
}
}
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
اعلام كردن يا مقدار دهي متغير (declaration):
• براي ديكلر كردن متغير هاي تايم لاين ، از اكشن set variable استفاده ميشود و يا از عملگر مساوي . هر دو متد يك كار را انجام ميدهند .
• براي ديكلر كردن متغير هاي محلي از عبارت var در داخل فانكشن ها استفاده ميشود . يك متغير محلي در بلوك فانكشن محصور است و با رسيدن كد به خط پاياني فانكشن ، متغير محلي (اصطلاحا) ميميرد . متغير محلي اي كه در داخل بلوك نباشد با رسيدن به پايان اسكريپتش مي ميرد .
• براي دكلر كردن متغير هاي عمومي (global ) از عبارت _global قبل از اسم متغير استفاده ميشود. كدي كه مشاهده ميكنيد يك متغير عمومي بنام myname ميسازد :
_global.myName = "SHARAFI";
استفاده از يك متغير :
به مثال زير توجه كنيد :
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
getURL(myWebSite);
myWebSite = "http://www.macromediax.net";
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
اين كد دچار مشكل است و باعث ايجاد خطا در اسكريپت ميشود . چون در اين كد ابتدا از يك متغير استفاده كرده ايم و بعد آن را مقدار داده ايم . پس مقدار دهي بايد قبل از استفاده صورت گيرد .
يك مثال ديگر : در مثال زير x مقدار 15 گرفته و سپس مقدارش در Y كپي شده . در خط سوم مقدار x مساوي با 30 شده است . اما مقدار Y همان 15 ميماند . چون Y مقدارش را از X كپي گرفته و ديگر كاري به كار هم ندارند .
xxxxxxxxx
var x = 15;
var y = x;
var x = 30;
xxxxxxxxx
خوب اینم از مفاهیم پایه ای . تو پست های بعدی یه کم سطح رو میبرم بالا .
امیدوارم به دردتون خورده باشه :46:
اکشن اسکریپت : اولويت عملگر هاي فلش
وقتي در يك عبارت رياضي اكشن اسكريپت چند عملگر گوناگون را در كنار هم بكار ميبريد فلش براي بعضي عملگر ها نسبت به بقيه حق تقدم قائل ميشود . بطور مثال ضرب هميشه قبل از جمع انجام ميشود .گرچه پرانتز ها هميشه بر همه چيز تقدم دارند .
مثال زير را مشاهده كنيد :
xxxxxxxxxxxxxx
Total = 2 + 4 * 3 ;
xxxxxxxxxxxxxx
مقدار توتال در مثال فوق 14 است (اول ضرب و بعد جمع)
xxxxxxxxxxxxxxxx
Total = (2 + 4) * 3 ;
xxxxxxxxxxxxxxxx
در مثال دوم جواب 18 است . (اول پرانتز محاسبه شده و بعد ضرب)
جدول زير ليست عملگر هاي اكشن اسكريپت و موقعيت آنها و اولويت آنها را از بالا به پايين ليست كرده است .
کد:
عملگر
توضيحات
پشت هم آمدن
بالاترين اولويت
_______________
+
Unary plus
راست به چپ
_______________
-
Unary minus
راست به چپ
_______________
~
Bitwise one's complement
راست به چپ
_______________
!
Logical NOT
راست به چپ
_______________
not
Logical NOT (Flash 4 style)
راست به چپ
_______________
++
Post-increment
چپ به راست
_______________
--
Post-decrement
چپ به راست
_______________
( )
Function call
چپ به راست
_______________
[ ]
Array element
چپ به راست
_______________
.
Structure member
چپ به راست
_______________
++
Pre-increment
راست به چپ
_______________
--
Pre-decrement
راست به چپ
_______________
new
Allocate object
راست به چپ
_______________
delete
Deallocate object
راست به چپ
_______________
typeof
Type of object
راست به چپ
_______________
void
Returns undefined value
راست به چپ
_______________
*
Multiply
چپ به راست
_______________
/
Divide
چپ به راست
_______________
%
Modulo
چپ به راست
_______________
+
Add
چپ به راست
_______________
add
String concatenation (formerly &)
چپ به راست
_______________
-
Subtract
چپ به راست
_______________
<<
Bitwise left shift
چپ به راست
_______________
>>
Bitwise right shift
چپ به راست
_______________
>>>
Bitwise right shift (unsigned)
چپ به راست
_______________
<
Less than
چپ به راست
_______________
<=
Less than or equal to
چپ به راست
_______________
>
Greater than
چپ به راست
_______________
>=
Greater than or equal to
چپ به راست
_______________
lt
Less than (string version)
چپ به راست
_______________
le
Less than or equal to (string version)
چپ به راست
_______________
gt
Greater than (string version)
چپ به راست
_______________
ge
Greater than or equal to (string version)
چپ به راست
_______________
==
Equal
چپ به راست
_______________
!=
Not equal
چپ به راست
_______________
eq
Equal (string version)
چپ به راست
_______________
ne
Not equal (string version)
چپ به راست
_______________
&
Bitwise AND
چپ به راست
_______________
^
Bitwise XOR
چپ به راست
_______________
|
Bitwise OR
چپ به راست
_______________
&&
Logical AND
چپ به راست
_______________
and
Logical AND (Flash 4)
چپ به راست
_______________
||
Logical OR
چپ به راست
_______________
or
Logical OR (Flash 4)
چپ به راست
_______________
?:
Conditional
راست به چپ
_______________
=
Assignment
راست به چپ
_______________
*=, /=, %=, +=, -=, &=, |=, ^=, <<=, >>=, >>>=
Compound assignment
راست به چپ
_______________
,
Multiple evaluation
چپ به راست
_______________
پايين ترين اولويت
موفق باشید