PDA

توجه ! این یک نسخه آرشیو شده می باشد و در این حالت شما عکسی را مشاهده نمی کنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : آموزش ساخت محافظ صفحه نمايش ( Screen Saver )



Borna66
08-11-2009, 04:33 PM
اين برنامه ابتدا موقعيت مكان نما در دو متغير ذخيره كرده و شروع به مقايسه ي لحظه به لحظه ميكند تا ببيند موقعيت جاري مكان نما با موقعيت اوليه فرق
كرده است يا نه. در صورتي كه موقعيت مكان نما عوض شده باشد برنامه خاتمه مي يابد.

شروع كنيد :

1. يك پروژه ي جديد باز كنيد و دو شئ Script بسازيد و نام يكي را start و نام ديگري check را بگذاريد. (توجه داشته باشيد كه برنامه به حروف بزرگ و كوچك
حساس است)

2.روي Page 1 دو بار كليك كنيد و سپس به قسمت اسكريپت آن برويد.

3. دكمه ي Wizard را كليك كنيد و از ليست فرمانها ، فرمان ScriptTimer را انتخاب و سپي در زير اين ليست و در قسمت Object ، شئ اسكريپت با نام start
را انتخاب و در قسمت After (ms) عدد 100 را تايپ كنيد. اين دستور دقيقا بعد از اجراي برنامه ، اجرا ميشود و كار آن اين است كه بعد از 100 ميلي ثانيه (يك
دهم ثانيه) اسكريپت start را اجرا ميكند.
حالا دو بار OK كنيد.

4. و اما اسكريپت start . روي اين شئ دو بار كليك كنيد ، سپس به قسمت كد نويسي آن برويد. در اين بخش بايد موقعيت مكان نما را ذخيره كنيم تا در
صورتي كه جابجا شد ، برنامه قطع شود.
حالا شما دستورات زير را عينا در آنجا كپي كنيد :



mx=MouseX()
my=MouseY()
ScriptTimer("check","100")

توجه داشته باشيد كه حتما از دستور ScriptTimer استفاده كنيد زيرا باگهاي (اشكالات)دستور RunScript هنوز اصلاح نشده اند و استفاده از اين دستور در
بعضي از موارد موجب ايجاد پيغام خطا توسط برنامه ميشود.
دستور mx=MouseX موقعيت X مكان نما را در متغيري با نام mx و دستور my=MouseY موقعيت Y مكان نما را در متغيري با نام my ذخيره ميكند. و دستور
سوم هم اسكريپت با نام check را بعد از يك دهم ثانيه ، اجرا ميكند.
حالا دو بار OK كنيد.

5. خوب ، تا اينجا برنامه فهمید كه مکان نما کجاست! حالا بايد يك اسكريپت مدام اجرا شود تا ببيند موقعيت مكان نما با آن چيزي كه در دو متغير mx و my
ذخيره شده ، فرق ميكند يا نه.
حالا روي شئ اسكريپت با نام check دو بار كليك كنيد و به قسمت كدنويسي آن برويد و دستورات زير را در آن كپي كنيد :



cmx=MouseX()
cmy=MouseY()
If (mx<>cmx) Then
Exit()
End
If (my<>cmy) Then
Exit()
End
ScriptTimer("check","10")


دستور اول و دوم موقعيت جاري مكان نما را در دو متغير جديد ذخيره ميكنند.
كار دستور If (mx<>cmx) اين است كه موقعيت جاري X مكان نما را با موقعيت اول (كه هنگام شروع برنامه ذخيره شد) مقايسه ميكند تا ببيند ماوس به
صورت افقي حركت كرده يا نه. و در صورتي كه حركت كرده باشد (يعني دو مقدار mx و cmx نامساوي باشند) برنامه با دستور Exit() خاتمه مي يابد. و در غير
اين صورت به دستور بعد از End ميرود.
كار دستور If (my<>cmy) نيز مانند دستور قبل است ، با اين تفاوت كه اين دستور در برابر حركت عمودي ماوس حساس است.
دستور آخر هم اسكريپت با نام check ، يعني همين اسكريپت را اجرا ميكند. به اين ترتيب اين اسكريپت همواره در حال اجراست تا كار خود را كه تشخيص
حركت مكان نماست ، به درستي انجام دهد.

نكته ي مهم : توجه داشته باشيد كه برنامه ي شما بايد كل صفحه را پوشانيده باشد (يعني اندازه ي صفحه ي برنامه ، به قدري بزرگ باشد كه كل صفحه
مانيتور را پر كند) در غير اين صورت ، برنامه شما به درستي عمل نميكند! اگر شما نميدانيد كه كاربري كه با برنامه ي شما كار ميكند از چه ميزان تفكيك پذيري
(640x480 / 800x600 / 1024x768 …) استفاده ميكند ، ميتوانيد به كمك دستورات زير ، صفحه ي برنامه را در كل محيط كاري وي بسط (گسترش) دهيد.
اين دستورات را در قسمت كدنويسي Page 1 و در ابتداي آن قرار دهيد :

Width=ScreenWidth()
Height=ScreenHeight()
SysCommand("ResizeWindow","Width,Height")
SysCommand("CenterWindow","")


6. لينك دانلود مثال با حجم 2 كيلوبايت (http://pnu-club.com/redirector.php?url=http%3A%2F%2Fwww.lsamanl.persia ngig.com%2Fother%2FProgram%2FMMB%2Fscreensaver.zip )


7. اميدوارم كه اين آموزش مورد توجه شما قرار گرفته باشد. در آخر ، نظر خودتان را بگذاريد تا در آموزشهاي بعدي مورد استفاده قرار بگيرد.