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:\Musics\Mansour\The 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:\beethoven\moon 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:\beethoven\moon 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 بگذارید . می خواهیم برنامه را طبق قضیه فیثاغورس بنویسیم :  اول با دستور شرطی مینویسیم که آیا مجذور 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 است . این قسمت چون می خواستم به سوال ها جواب بدهم بخش آموزشی این مقاله کمتر شد (اما خود سوال ها هم آموزشی اند ) . وحید نائینی
|