ارسالی عباس
Script های مربوط به زمان
این ها script هایی هستند که مربوط به زمان هستند .
PageTimer(“”,””)
ExitTimer(“”)
ScriptTimer(“”,””)
RunScript(“”)
Pause(“”)
Return()
Refresh()
در آموزش های قبلی برخی از این کد ها استفاده کردیم اما در این بخش بیشتر به این script ها می پردازیم :
PageTimer(“ms”,”PageLabel”)
با اجرای این کد می توان پس از زمانی که تعیین می کنید به صفحه مورد نظر بروید . مثلا در این کد پس از گذشت 1000 میلی ثانیه (1 ثانیه) به صفحه ای که با Label آن را در قسمت دوم نوشته ایم (در اینجاpage 2 ) می رود :
PageTimer(“1000″,”Page 2”)
ExitTimer(“ms”)
این یک تایمر است که پس از گذشتن زمان مشخص شده پنجره بسته می شود (عمل Exit() انجام می شود) . در این کد پس از کذشتن یک دقیقه پس از اجرای این Script پنجره بسته خواهد شد .
ExitTimer(“60000”)
ScriptTimer(“ObjectLabel”,”ms”)
پس از گذشتن زمان تعیین شده Script مورد نظر اجرا می شود . در اینجا فقط منظور شئ Script نیست این کد مربوط به هر شئی که بتوان در آن Script مورد نظر خودتان را وارد کنید مثلا Text Button ، Rectangle و… می باشد . در قسمت اول نام شئ و در قسمت دوم زمان را می نویسیم . در مثال شئی با نام Script پس از 1 ثانیه اجرا می شود .
ScriptTimer(“Script”,”1000″)
RunScript(“ObjectLabel”)
این کد مانند کد بالا عمل می کند با این تفاوت که بلافاصله Script را اجرا می کند .
RunScript(“Script”)
Pause(“ms”)
می انید که برای اجرای کد ها ، آنها از بالا به پایین خوانده می شود (بدون هیچ وقفه ای) . از این دستور برای وقفه در بین خطوط کد ها استفاده می شود .
Return()
اگر خطوط Script ها را مانند یک رشته سیم فرض کنیم ، دستور Return مانند کلیدی است که این ارتباط و رسانایی بین رشته ها را قطع می کند . یا وقتی به این خط رسید بقیه خط ها را نمی خواند . از اینscript می توانید در دستور شرطی If یا حلقه for استفاده کنید .
Refresh()
تقریبا از اسم این کد می توان به طرز کار آن پی برد . این Script در حلقه ها بسیار مفید است . مثلا در یک حلقه Normal در هنگام شمارش شما نمی توانید از کلید های دیگر استفاده کند . اما اگر در حلقه خود Refresh را جای دهید این مشکل برطرطرف می شود .
برای اجرای کد های نمونه زیر ، یک Text با نام Counter ایجاد کنید .
یک حلقه با Refresh :
For n=1 To 100000
i=n
DisplayValue(“Counter”,”i”)
Refresh()
Next n
یک حلقه Normal :
For n=1 To 100000
i=n
DisplayValue(“Counter”,”i”)
Next n
تغییری که در اجرای این دو حلقه وجود دارد کاملا محسوس است .
جواب سوالها :
سوال 1 . تمرین N خط صفحه را به چند قسمت تقسیم می کند را طوری بنویسید که اگر عدد ورودی از 0 کمتر بود پیامی با این مضمون که “عدد را اشتباه وارد کرده اید ، دوباره تلاش کنید” ظاهر شود .
جواب : یک دستور شرطی If به آن اضافه می کنیم . دستور زیر مربوط به کلید است :
i=0
p=1
If (A>0) Then
For 1 To A
i=i+1
p=p+i
Next
DisplayValue(“Answer”,”p”)
Else
Message(“The number is not correct , try again .”,””)
End
سوال 2 . ساعتی بسازید که ساعت ، دقیقه و ثانیه را وارد می کنیم و در همان زمانی که ما مشخص کردیم یک موسیقی پخش کند . (برای پخش موسیقی از این Action script استفاده کنید : AudioOpen(“”) ) .
جواب : اول یک ساعت با قرار دادن CBK_TimeHMS در Label متن (Text) مورد نظر بسازید . بعد 3 تا InputText درست می کنیم تا ساعت ، دقیقه و ثانیه مورد نظر را در آنها ثبت کنیم . در Properties آنها ، دکمه رادیویی Integer را انتخاب و نام های Hour ، Min و Sec را برای آن ها انتخاب کنید . حالا یک دکمه بسازید که در آن دستور یک Script به نام TimeSet را اجرا می کند . کار این Script این خواهد بود که زمان وارد شده در TextInput ها را با زمان فعلی مطابقت دهد . همچنین این Script باید هر ثانیه اجر شود تا بتواند زمان را تشخیص دهد . پس برای دکمه می نویسیم :
RunScript(“TimeSet”)
و برای <;span style=”font-family: Tahoma”>Script می نویسیم :
H=CBK_Hour
M=CBK_Minute
S=CBK_Second
If (Hour=H) Then
If (Min=M) Then
If (Sec=S) Then
AudioOpen(“E:MusicsMansourThe Fugitive.mp3”)
End
End
End
ScriptTimer(“TimeSet”,”1000″)
در 3 خط اول ساعت ، دقیه و ثانیه را به 3 تا Integer نسبت میدهیم که در مراحل بعدی اسکریپت نویسی آسان تر باشد . دستور شرطی If هم در اینجا به این شکل کار می کند که اول ساعت را با ساعت کامپیوتر مقایسه می کند اگر مساوی بودند به سراغ دقیقه و پس از آن ثانیه می رود و اگر ثانیه هم درست بود دستور را اجرا می کند . در خط آخر هم پس از 1 ثانیه دوباره خودش را اجرا میکند .
سوال 3 . یک کلید بسازید که نام آن Play است . با کلیک کردن روی آن یک موسیقی پخش می شود و همچنین نام آن به Stop تغییر می کند که با کلیک کردن دو باره موسیقی قطع می شود . (برای قطع شدن موسیقی از این Action script استفاده کنید : AudioStop(“”) ) .
یک ترفندی که در اینجا می تونیم به کار ببریم این است که به هر کدام از حالت ها یک عدد نسبت دهیم مثلا یک عدد صحیح (Integer) تعریف می کنیم و برای حالت Play آن عدد 0 و برای حالت Stop عدد 1 را در نظر می گیریم . در اینجا نام عدد صحیح (Integer) ، play است . برای اینکه اولین بار که روی دکمه کلیک می کنید ، موسیقی پخش شود ، در قسمت Script مربوط به Properties صفحه ینویسید : play=0
نام دکمه را هم به Play تغییر دهید و این کد هارا در قسمت Script دکمه بنویسید :
If (play=0) Then
AudioOpen(“e:eethovenmoon shine.mp3”)
AudioPlay()
name$=’Stop’
LoadText(“TextBTN”,”name$”)
play=1
Return()
End
If (play=1) Then
AudioStop()
name$=’Play’
LoadText(“TextBTN”,”name$”)
play=0
End
در اینجا فرض شده که موسیقی ای باز نشده پس اول موسیقی را باز می کنیم و سپس آن را Play می کنیم . اما اگر بخواهیم به جای STOP از Pause استفاده کنیم یعنی از این Script استفاده کنیم : AudioPause()، باز هم از اول موسیقی اجرا خواهد شد .برای رفع این مشکل می توانیم دستور AudioOpen را در قسمت Script صفحه قرار دهیم ، و بعد از آن دستور Stop را می آوریم تا فورا موسیقی Stop شود . به این شکل :
play=0
AudioOpen(“e:eethovenmoon shine.mp3”)
AudioPause()
و در قسمت Script دکمه هم کد های زیر را می نوسیم :
If (play=0) Then
AudioPlay()
name$=’Stop’
LoadText(“TextBTN”,”name$”)
play=1
Return()
End
If (play=1) Then
AudioPause()
name$=’Play’
LoadText(“TextBTN”,”name$”)
play=0
End
سوال 4 . برنامه ای بسازید که مینیمم وماکزیمم بین دو عدد را به دست آورد و در دو خروجی مجزا (Text) نمایش دهد .
این نسبت به 3 تا قبلی آسون تره !
اول دو تا Text ایجاد کنید و نام آنها را Min و Max بگذارید. دو تا InputText هم بسازید ، آنها را به شکل Float تعریف کنید (در Properties قسمت Output گزینه Float را انتخاب کنید ) و نام آن ها (قسمت Output در Properties) را A1 و A2 بگذارید . یک دکمه هم بسازید و کد های زیر را در آن وارد کنید:
If (A1>A2) Then
DisplayValue(“Max”,”A1″)
DisplayValue(“Min”,”A2″)
End
If (A2>A1) Then
DisplayValue(“Max”,”A2″)
DisplayValue(“Min”,”A1″)
End
اما اگر هر دو مساوی باشند عددی برای نمایش در Min و Max نخواهد داشت . اگر این کد را وارد کنید در Min و Max می نویسد که دو عدد مساوی هستند .
If (A1>A2) Then
DisplayValue(“Max”,”A1″)
DisplayValue(“Min”,”A2″)
End
If (A2>A1) Then
DisplayValue(“Max”,”A2″)
DisplayValue(“Min”,”A1″)
End
If (A1=A2) Then
Equl$=CHAR(A1)+’ = ‘+CHAR(A2)
DisplayValue(“Max”,”Equl$”)
DisplayValue(“Min”,”Equl$”)
End
سوال 5 . برنامه ای بسازید که با وارد کردن 3 عدد به عنوان 3 ضلع مثلث بگوید که این مثلث قائم الزاویه هست با نه ؟ (با استفاده از قضیه فیثاغورس)
برای ورودی 3 عدد 3 تا Text Input بسازید و برای خروجی آن حالت Integer و نام های A ،B و C بگذارید . می خواهیم برنامه را طبق قضیه فیثاغورس بنویسیم :
<!–[if !vml]–><!–[endif]–>
اول با دستور شرطی مینویسیم که آیا مجذور A مساوی مجذور B به اضافه C است یا نه . اگر مساوی بود که پیامی ظاهر می شود و می گوید که مثلث قائمه است ، اگر مساوی نبود می بیند که آیا مجذور B مساوی مجذور C به اضافه A است یا نه و به همین شکل ادامه پیدا می کند و اگر 3 ضلع توانایی ساخت مثلث قائمه را نداشتن با پیامی به ما هشدار می دهد .
یک کلید بسازید و این دستور ها را به آن بدهید :
Yes$=’Yessss’
No$=’No’
If (A^2=B^2+C^2) Then
Message(“”,”Yes$”)
Else
If (B^2=A^2+C^2) Then
Message(“”,”Yes$”)
Else
If (C^2=A^2+B^2) Then
Message(“”,”Yes$”)
Else
Message(“”,”No$”)
End
End
End
سوال 6 . یک برنامه که پنجره فرمت ویندوز را 100000 بار در ثانیه نشان دهد !
خیلی آسونه و البته زیاد نتیجه جالبی ندارد (می تونید امتحان کنید) حالا من 100 بار می زنم خودتون اگه خواستید 100000 بار بزنید (اما نزنین بهتره) .
For 1 To 100
Run(“rundll32.exe”,”shell32.dll,SHFormatDrive”)
Refresh()
Next
همون طور که میبینید بیشتر سوالها در مورد دستور If است و فقط 2 تا از اونها درباره For است . این قسمت چون می
خواستم به سوال ها جواب بدهم بخش آموزشی این مقاله کمتر شد (اما خود سوال ها هم آموزشی اند ) .