دستور pass هر کجا که استفاده شود به عنوان عمل پاس دادن تلقی می شود یعنی ادامه رویداد فعلی را به رویداد بعدی انتقال می دهد. در رویدادهای که برای sprite تعریف می شود دایرکتور نمی تواند دو تابع را اجرا کند بدین صورت که تابع اول که اجرا شد در ابتدای تابع بعدی متوقف می شود.
به عنوان مثال شما یک textbox دارید که رویداد on keydown را برای آن تعریف کرده اید، در حالت عادی شما هرچه در این textbox تایپ کنید درون آن نمایش داده می شود اما هنگامی که از رویداد on keydown استفاده کرده باشید دیگر چیزی داخل آن تایپ نمی شود علت آن این است که رویداد on keydown اجرا می شود و به رویداد بعدی که باید ورودی صفحه کلید را درون textbox تایپ کند می رسد، متوقف می شود.
برای رفع این مسئله از دستور pass استفاده می شود فقط نکته که در دستور pass باید مد نظر داشته باشید همان عمل پاس دادن است یعنی هر کجا که استفاده شود دستورات بعد آن اجرا نمی شود و به رویداد بعدی سیستم می رود.
دستور dontpassevent بر عکس دستور pass می باشد و می گوید که هیچ عمل پاس دادنی انجام نشود و ادامه تابع اجرا شود.
شاید اینجا این سوال پیش بیاید که دایرکتور این کار را خودکار انجام می دهد و دستور dontpassevent بی فایده می باشد؟
در این جواب باید بگم که این مسئله از دایرکتور 8 به بعد رفع شد و تا دایرکتور 7 کاربران مجبور به استفاده از dontpassevent بوده اند.
اما تفسیر کد شما :
در این کد می گوید که زمانی کلید enter زده شد به مارکر next برود در غیر این صورت پاس داده شود یعنی ورودی های صفحه کلید به دایرکتور ارسال می شود
شاید یکم این توضیحات پیچیده به نظر بیاد سعی می کنم با یک مثال ساده تر توضیح دهم :
فرض کنید شما برروی صحنه یک textbox دارید که قرار است کاربر شماره تلفن خود را در آن وارد نماید
همانطور که همه می دانیم یک شماره تلفن از اعداد 0123456789 تشکیل شده است، پس این textbox فقط باید عدد قبول کند و از ورود حروف در آن باید جلوگیری کرد.
با استفاده از رویداد on keydown و دستور pass یک شرط تعریف می کنیم که اگر از صفحه کلید یکی از اعداد 0123456789 زده شد پاس داده شود.
on keyDown me
legalCharacters = "1234567890"
if legalCharacters contains the key then
pass
else
beep
end if
end
موفق باشید