اشتباهات رایج در استفاده از ایونتهای کانستراکت 2
|Paste کردن اطّلاعات در یک اکسپرشن
گاهی اوقات اطّلاعات خیلی زیادی یا حتّی کلّ محتویات یک فایل در یک اکسپرشن پیست (Paste) میشود. مثل این:
به جای این کار از project files[1] استفاده کنید. اطّلاعات را در یک فایل متنی پیست کنید، آن را ذخیره کنید، از طریق نوار پروژه آن را وارد کنید، بعد از اکشن Request project file شیء AJAX برای بارگذاری آن استفاده کنید. حالا مگر Paste کردن اطّلاعات زیاد در یک اکسپرشن چه ایرادی دارد؟ این کار به چند دلیل بد است:
- همهی اطّلاعات پیست شده باید ساختاری مثل ساختار اکسپرشنهای کانستراکت داشته باشند تا از ارورهای ساختاری جلوگیری شود، مثلاً کاراکترهایی که درون دابل کوتیشن (” “) قرار میگیرند داخل یک رشته هستند، و اگر درون آن رشته بخواهیم از کوتیشن استفاده کنیم، باید به جای یک کوتیشن دوتا کوتیشن پشت سر هم بنویسیم تا با کوتیشن ابتدا و انتها اشتباه نشود. این کار برای فرمتهایی مثل JSON که معمولاً در آنها از دابل کوتیشن استفاده میشود خستهکننده است.
- پیدا کردن، خواندن و تغییر دادن اطّلاعات در پنجرهی پارامترها سخت است.
- برای نمایش همهی اطّلاعات، ایونتشیت به شدّت دراز میشود، و برای گذشتن از ایونت مورد نظر باید خیلی پیمایش کنیم.
- بعد از خروجی گرفتن، همهی اطّلاعات در فایل js ذخیره میشوند. قبل از اینکه حتّی بازی بخواهد در حالت لودینگ قرار گیرد این فایل باید به طور کامل دانلود و تجزیهشود و در حافظه قرار بگیرد. اگر اطّلاعات زیادی را در اکسپرشنی پیست کرده باشید حجم دانلود افزایش مییابد، و زمان ظاهرشدن لودینگ بازی افزایش مییابد، و همچنین استفاده از حافظه هم افزایش مییابد (مخصوصاً در موبایل).
- زمان باز کردن و ذخیرهی پروژه در ویرایشگر کانستراکت افزایش مییابد، زیرا اطّلاعات پیست شده در فایلهای XML ذخیره میشوند (برای مشاهدهی این فایلها پروژهتان را در حالت پوشهای ذخیره کنید)، بنابراین هر بار که پروژه را باز میکنید باید تجزیه و تبدیل شوند.
Project file ها چنین مشکلاتی را ندارند:
- نیازی نیست محتویّات project file را برای سازگاری با ساختار اکسپرشنها ویرایش کنید.
- پیدا کردن، خواندن و ویرایش project file خیلی راحت است.
- ایونت شیت زیاد دراز نمیشود، چون برای بارگذاری این فایلها فقط به یک اکشن request شیء AJAX نیاز دارید.
- اطّلاعات، داخل فایل js نگهداری نمیشوند، بنابراین بازی سریعتر بارگذاری میشود و از حافظه هم کمتر استفاده میشود، و فقط موقعی که واقعاً لازم باشد دانلود میشوند.
- چون اطّلاعات خارج از پروژه هستند، باز شدن و ذخیرهی پروژه سریعتر است.
پس اگر میخواهید اطّلاعات زیادی را در ایونتها پیست کنید، به شدّت توصیه میکنیم به جای آن از project file استفاده کنید.
[1] فایلهای اضافهای که از طریق پوشهی Files در نوار پروژه میتوان وارد کرد.
سؤالات فنی خود را فقط در انجمن بپرسید. در غیر این صورت پاسخ داده نخواهد شد.
۴ نظر
سلام وخسته نباشید به داداش گلم اقامجتبی
من 2تابازیکن دارم که میخوام به هرکدوم یک ماموریت مخصوص بدم که هرکدوم وظیفه داده شده راانجام بده. به طور واضح تربگم میخوام وقتی به پلیر Aماموریت دادم به ماموریتش به پردازه و درهمان زمان من پلیر Bرا ماموریت بدم
ایشالا جوابمو بگیرم
علیک سلام
لطفاً سؤالاتتون رو در انجمن بپرسید.
سلام خسته نباشید
میخواستم بدونم چگونه stop و play برای بازی ام بسازم؟؟؟
ممنون
علیک سلام،
میتونید جلسهی ششم دورهی تابستانی ما رو ببینید:
http://construct2.ir/showthread.php?tid=609
خواهش میکنم