blockly > رویدادها

فضای نام رویدادها

کلاس ها

کلاس توضیحات
BlockBase کلاس انتزاعی برای هر رویداد مربوط به بلوک ها.
BlockChange هنگامی که برخی از عناصر یک بلوک تغییر کرده است (مثلاً مقادیر فیلد، نظرات و غیره) به شنوندگان اطلاع می دهد.
BlockCreate هنگام ایجاد یک بلوک (یا پشته بلوک های متصل) به شنوندگان اطلاع می دهد.
BlockDelete هنگامی که یک بلوک (یا پشته متصل از بلوک ها) حذف می شود، شنوندگان را مطلع می کند.
BlockDrag هنگامی که یک بلوک به صورت دستی کشیده یا رها می شود به شنوندگان اطلاع می دهد.
BlockFieldIntermediateChange هنگامی که مقدار فیلد یک بلوک تغییر کرده است، اما تغییر هنوز کامل نشده است، به شنوندگان اطلاع می دهد و انتظار می رود که یک رویداد تغییر بلوک به دنبال داشته باشد.
BlockMove هنگامی که یک بلوک منتقل می شود، شنوندگان را مطلع می کند. این می تواند از یک اتصال به اتصال دیگر یا از یک مکان در فضای کاری به مکان دیگر باشد.
حباب باز کلاس برای یک رویداد حباب باز.
کلیک کنید به شنوندگان اطلاع می دهد که روی برخی از عناصر مسدود شده کلیک شده است.
CommentBase کلاس انتزاعی برای رویداد نظر.
نظر تغییر به شنوندگان اطلاع می دهد که محتوای یک نظر فضای کاری تغییر کرده است.
CommentCollapse
نظر ایجاد کنید به شنوندگان اطلاع می دهد که یک نظر فضای کاری ایجاد شده است.
نظر حذف به شنوندگان اطلاع می دهد که یک نظر فضای کاری حذف شده است.
Comment بکشید هنگامی که یک نظر به صورت دستی کشیده یا رها می شود به شنوندگان اطلاع می دهد.
CommentMove به شنوندگان اطلاع می دهد که یک نظر فضای کاری منتقل شده است.
CommentResize به شنوندگان اطلاع می دهد که اندازه نظر فضای کاری تغییر کرده است.
بارگیری تمام شد هنگامی که فضای کاری از JSON/XML به پایان رسید، به شنوندگان اطلاع می‌دهد.
انتخاب شده است کلاس برای یک رویداد انتخابی به شنوندگان اطلاع می دهد که یک عنصر جدید انتخاب شده است.
تغییر تم به شنوندگان اطلاع می دهد که موضوع فضای کاری تغییر کرده است.
ToolboxItemSelect به شنوندگان اطلاع می دهد که یک مورد جعبه ابزار انتخاب شده است.
TrashcanOpen هنگام باز یا بسته شدن سطل زباله به شنوندگان اطلاع می دهد.
یو بیس کلاس پایه برای یک رویداد UI. رویدادهای رابط کاربری رویدادهایی هستند که برای انجام ویرایش چند کاربره نیازی به ارسال از طریق سیم ندارند (مانند پیمایش فضای کاری، بزرگنمایی، باز کردن دسته‌های جعبه ابزار). رویدادهای رابط کاربری واگرد یا دوباره انجام نمی‌شوند.
VarBase کلاس انتزاعی برای یک رویداد متغیر.
VarCreate به شنوندگان اطلاع می دهد که یک مدل متغیر ایجاد شده است.
VarDelete به شنوندگان اطلاع می دهد که یک مدل متغیر حذف شده است.
VarRename به شنوندگان اطلاع می دهد که یک مدل متغیر تغییر نام داده است.
VarTypeChange به شنوندگان اطلاع می دهد که نوع یک متغیر تغییر کرده است.
ViewportChange

به شنوندگان اطلاع می دهد که موقعیت یا مقیاس سطح فضای کاری تغییر کرده است.

هنگامی که خود فضای کاری تغییر اندازه می دهد، اطلاع نمی دهد.

کلاس های چکیده

کلاس چکیده توضیحات
چکیده کلاس انتزاعی برای یک رویداد.

شمارش ها

شمارش توضیحات
BubbleType
کلیک تارگت

توابع

تابع توضیحات
clearPendingUndo() رویدادهای واگرد معلق را تغییر دهید تا وقتی فعال شدند در پشته لغو قرار نگیرند. فراخوانی شده توسط Workspace.clearUndo.
غیر فعال کردن() توقف ارسال رویدادها هر فراخوانی به این تابع باید فعال کردن را نیز فراخوانی کند.
غیرفعال کردن Orphans (رویداد) بسته به اینکه یک بلوک به درستی وصل شده باشد، تنظیم کنید که غیرفعال شود. از این در برنامه هایی استفاده کنید که همه بلوک ها باید به بلوک بالایی متصل شوند.
فعال کردن () شروع به ارسال رویدادها کنید. مگر اینکه هنگام برقراری تماس مربوطه برای غیرفعال کردن، رویدادها قبلاً غیرفعال شده باشند.
فیلتر (صف)

رویدادهای صف را با ادغام موارد تکراری، حذف رویدادهای پوچ و مرتب کردن مجدد رویدادهای BlockChange فیلتر کنید.

تاریخچه این تابع:

این تابع در اصل در commit cf257ea5 با هدف کاهش چشمگیر تعداد کل رویدادهای ارسال شده اضافه شد. در ابتدا فقط رویدادهای BlockMove را تحت تأثیر قرار داد اما موارد دیگر در طول زمان اضافه شدند.

به دلایل نامشخص اما احتمالاً به عنوان بخشی از یک تلاش موفقیت آمیز برای رفع مشکلات مربوط به ترتیب رویدادها در طول جهش بلوک، کد به ترتیب مجدد رویدادهای BlockChange اضافه شده در commit 5578458 اضافه شد. این کد احتمالاً باید قبل از ادغام و حذف تهی به بالای تابع اضافه می شد، اما به دلایلی که اکنون فراموش شده اند در پایین اضافه شده است. این بررسی‌های اشکال را برای بحث کامل‌تر در مورد مشکل اساسی و برخی از شکست‌هایی که به دلیل این اصلاح ناقص/نادرست ایجاد شده‌اند، ببینید:

https://github.com/google/blockly/issues/8225#issuecomment-2195751783 https://github.com/google/blockly/issues/2037#issuecomment-2209696351

بعداً، در PR #1205، پیاده‌سازی اولیه O(n^2) با یک پیاده‌سازی زمان خطی جایگزین شد، اگرچه اصلاحات اضافی متعاقباً انجام شد.

در آگوست 2024 تعدادی ساده سازی قابل توجه انجام شد:

این تابع قبلاً از Workspace.prototype.undo فراخوانی شده بود، اما جهش رویدادها توسط این تابع دلیل شماره 7026 بود (توجه داشته باشید که رویدادها به ترتیب معکوس در مقابل ترتیب رو به جلو ترکیب می شوند). راه حل اصلی انتخاب شده برای این، افزودن (در PR #7069) کد به fireNow برای پس فیلتر کردن .undoStack_ و .redoStack_ هر فضای کاری بود که به تازگی در ارسال رویدادها شرکت داشته است. این ظاهراً مشکل را حل کرد، اما پیچیدگی قابل‌توجهی اضافه کرد و استدلال در مورد نحوه پردازش رویدادها برای لغو/دوباره را دشوار کرد، بنابراین هم فراخوانی از undo و هم کد پس از پردازش حذف شدند، و forward=true پیش‌فرض شد در حالی که فراخوانی تابع با فوروارد=false منسوخ شد.

در همان زمان، کد حشره‌دار برای ترتیب دادن مجدد رویدادهای BlockChange با یک نسخه کمتر باگ از همان عملکرد در یک تابع جدید، enqueueEvent، که از fireInternal فراخوانی می‌شود، جایگزین شد، بنابراین اطمینان حاصل می‌شود که رویدادها در زمان فراخوانی فیلتر زمانی به ترتیب صحیح خواهند بود.

علاوه بر این، کد ادغام رویداد به گونه‌ای اصلاح شد که فقط رویدادهای مجاور بلافاصله ادغام شوند. این امر پیاده سازی را ساده می کند و در عین حال اطمینان می دهد که ادغام رویدادها نمی تواند باعث ترتیب مجدد آنها شود.

آتش (رویداد)

رویدادی را در صف قرار دهید تا برای تغییر شنوندگان ارسال شود.

یادداشت ها:

- رویدادها تا یک بازه زمانی در صف قرار می گیرند، معمولاً پس از تکمیل رندر یا در پایان ریزتسک فعلی، اگر در مرورگر اجرا نمی شوند. - رویدادهای صف با ترکیب شدن با رویدادهای بعدی در معرض تغییرات مخرب هستند، اما فقط تا زمانی که شلیک شوند. - رویدادها از طریق روش fireChangeListener در فضای کاری آسیب دیده ارسال می شوند.

fromJson (json، فضای کاری) رمزگشایی JSON به یک رویداد.
دریافت (رویداد نوع) کلاس را برای یک نوع رویداد خاص از رجیستری دریافت می کند.
getGroup() گروه فعلی
getRecordUndo() برمی‌گرداند که آیا رویدادها به پشته واگرد اضافه می‌شوند یا خیر.
isEnabled() برمی‌گرداند که آیا رویدادها ممکن است فعال شوند یا نه.
setGroup (وضعیت) شروع یا توقف یک گروه
setRecordUndo(newValue) تنظیم می کند که آیا رویدادها باید به پشته واگرد اضافه شوند یا خیر.

رابط ها

رابط توضیحات
AbstractEventJson
BlockBaseJson
BlockChangeJson
BlockCreateJson
BlockDeleteJson
BlockDragJson
BlockFieldIntermediateChangeJson
BlockMoveJson
BubbleOpenJson
کلیک جیسون
CommentBaseJson
CommentChangeJson
CommentCollapseJson
CommentCreateJson
CommentDragJson
MoveJson را کامنت کنید
CommentResizeJson
انتخاب شده Json
ThemeChangeJson
ToolboxItemSelectJson
TrashcanOpenJson
VarBaseJson
VarCreateJson
VarDeleteJson
VarRenameJson
VarTypeChangeJson
ViewportChangeJson

متغیرها

متغیر توضیحات
BLOCK_CHANGE
BLOCK_CREATE
BLOCK_DELETE
BLOCK_DRAG
BLOCK_FIELD_INTERMEDIATE_CHANGE
BLOCK_MOVE
BUBBLE_OPEN
BUMP_EVENTS

فهرستی از رویدادهایی که باعث می شوند اشیا به قسمت قابل مشاهده فضای کاری برگردند.

نباید با ضربه زدن اشتباه شود تا اتصالات قطع شده متصل به نظر نرسد.

تغییر دهید
کلیک کنید
COMMENT_CHANGE
COMMENT_CREATE
COMMENT_DELETE
COMMENT_DRAG
COMMENT_MOVE
COMMENT_RESIZE
ایجاد کنید
حذف کنید
FINISHED_LOADING
حرکت کنید
انتخاب شد
THEME_CHANGE
TOOLBOX_ITEM_SELECT
TRASHCAN_OPEN
UI
VAR_CREATE
VAR_DELETE
VAR_RENAME
VIEWPORT_CHANGE

نام مستعار را تایپ کنید

نام مستعار را تایپ کنید توضیحات
BumpEvent

نوع رویدادهایی که باعث می‌شوند اشیا به قسمت قابل مشاهده فضای کاری برگردند.

نباید با ضربه زدن اشتباه شود تا اتصالات قطع شده متصل به نظر نرسد.