blockly > Etkinlikler

Etkinlikler ad alanı

Sınıflar

Sınıf Açıklama
BlockBase Bloklarla ilgili tüm etkinlikler için soyut sınıf.
BlockChange Bir bloğun bazı öğeleri (ör. alan değerleri, yorumlar) değiştiğinde dinleyicileri bilgilendirir.
BlockCreate Bir blok (veya bağlı blok yığını) oluşturulduğunda dinleyicileri bilgilendirir.
BlockDelete Bir blok (veya bağlı blok grubu) silindiğinde dinleyicileri bilgilendirir.
BlockDrag Bir blok manuel olarak sürüklendiğinde/bırakıldığında dinleyicileri bilgilendirir.
BlockFieldIntermediateChange Bir bloğun alanının değeri değiştiğinde ancak değişiklik henüz tamamlanmadığında ve ardından bir blok değişikliği etkinliği beklendiğinde dinleyicileri bilgilendirir.
BlockMove Bir blok taşındığında dinleyicileri bilgilendirir. Bu, bir bağlantıdan diğerine veya çalışma alanındaki bir konumdan diğerine olabilir.
BubbleOpen Baloncuğun açıldığı etkinlik sınıfı.
Tıklayın. Dinleyicileri, bazı blok öğelerin tıklandığını bildirir.
CommentBase Yorum etkinliği için soyut sınıf.
CommentChange Dinleyicileri, bir Workspace yorumunun içeriğinin değiştiği konusunda bilgilendirir.
CommentCollapse
CommentCreate Dinleyicileri, bir çalışma alanı yorumunun oluşturulduğu konusunda bilgilendirir.
CommentDelete Dinleyicileri, bir Workspace yorumunun silindiği konusunda bilgilendirir.
CommentDrag Bir yorum manuel olarak sürüklenip/bırakıldığında dinleyicileri bilgilendirir.
CommentMove Dinleyicileri, bir çalışma alanı yorumunun taşındığı konusunda bilgilendirir.
CommentResize Dinleyicileri, bir çalışma alanı yorumunun boyutunun değiştirildiği konusunda bilgilendirir.
FinishedLoading Workspace, JSON/XML'den serileştirmeyi tamamladığında dinleyicileri bilgilendirir.
Seçili Seçilen etkinlik için sınıf. Dinleyicileri yeni bir öğenin seçildiği konusunda bilgilendirir.
ThemeChange Dinleyicileri, çalışma alanı temasının değiştiği konusunda bilgilendirir.
ToolboxItemSelect Dinleyicileri, araç kutusu öğesinin seçildiği konusunda bilgilendirir.
TrashcanOpen Çöp kutusu açıldığında veya kapandığında dinleyicileri bilgilendirir.
UiBase Kullanıcı arayüzü etkinliği için temel sınıf. Kullanıcı arayüzü etkinlikleri, çok kullanıcılı düzenlemenin çalışması için ağ üzerinden gönderilmesi gerekmeyen etkinliklerdir (ör. çalışma alanında gezinme, yakınlaştırma, araç kutusu kategorilerini açma). Kullanıcı arayüzü etkinlikleri geri alınamaz veya yeniden yapılamaz.
VarBase Değişken etkinlik için soyut sınıf.
VarCreate Dinleyicileri, değişken bir model oluşturulduğu konusunda bilgilendirir.
VarDelete Dinleyicileri, bir değişken modelin silindiği konusunda bilgilendirir.
VarRename Dinleyicileri, değişken modelin yeniden adlandırıldığı konusunda bilgilendirir.
VarTypeChange Dinleyicileri, bir değişkenin türünün değiştiği konusunda bilgilendirir.
ViewportChange

Dinleyicileri, çalışma alanı yüzeyinin konumunun veya ölçeğinin değiştiği konusunda bilgilendirir.

Çalışma alanı boyutu değiştiğinde bildirim gönderilmez.

Soyut Sınıflar

Soyut Sınıf Açıklama
Özet Bir etkinlik için soyut sınıf.

Listeleme

Numaralandırma Açıklama
BubbleType
ClickTarget

İşlevler

İşlev Açıklama
clearPendingUndo() Beklemedeki geri alma etkinliklerini, tetiklendiklerinde geri alma yığınına girmemeleri için değiştirin. Workspace.clearUndo tarafından çağrılır.
disable() Etkinlik göndermeyi durdurun. Bu işleve yapılan her çağrıda enable işlevi de ÇAĞRILMALIDIR.
disableOrphans(event) Bir bloğun düzgün bağlanıp bağlanmadığına bağlı olarak devre dışı bırakılıp bırakılmayacağını ayarlayın. Tüm blokların bir üst bloğa bağlı olması gereken uygulamalarda bunu kullanın.
enable() Etkinlik göndermeye başlayın. İlgili devre dışı bırakma çağrısı yapıldığında etkinlikler zaten devre dışı bırakılmışsa.
filter(queue)

Yinelenenleri birleştirerek, null etkinlikleri kaldırarak ve BlockChange etkinliklerini yeniden kaydederek sıraya alınmış etkinlikleri filtreleyin.

Bu işlevin geçmişi:

Bu işlev, gönderilen etkinliklerin toplam sayısını önemli ölçüde azaltmak amacıyla ilk olarak cf257ea5 gönderiminde eklenmiştir. Başlangıçta yalnızca BlockMove etkinliklerini etkiledi ancak zaman içinde başkaları da eklendi.

5578458 numaralı kayda eklenen BlockChange etkinliklerini yeniden sıralamak için kod eklendi. Bunun nedeni kesin olarak bilinmemekle birlikte, büyük olasılıkla blok mutasyonları sırasında etkinlik sıralamasıyla ilgili sorunları düzeltmeye yönelik yalnızca kısmen başarılı bir deneme kapsamında eklenmiştir. Bu kod, muhtemelen birleştirme ve null kaldırma işleminden önce işlevin en üstüne eklenmiş olmalıydı ancak şimdi unutulmuş nedenlerle en alta eklendi. Temel sorun ve bu eksik/yanlış düzeltme nedeniyle ortaya çıkan bazı hataların daha ayrıntılı bir şekilde tartışıldığı bu hata incelemelerine bakın:

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

Daha sonra, PR #1205'te orijinal O(n^2) uygulaması doğrusal zamanlı bir uygulamayla değiştirildi. Ancak daha sonra ek düzeltmeler yapıldı.

Ağustos 2024'te, politikamızda önemli ölçüde basitleştirmeler yaptık:

Bu işlev daha önce Workspace.prototype.undo'dan çağrılıyordu ancak etkinliklerin bu işlev tarafından mutasyona uğratılması 7026 numaralı sorunun nedeniydi (etkinliklerin ters sıraya göre birleştirilmesinin, ileri sıraya göre birleştirilmesine göre farklı olacağını unutmayın). Bu sorun için başlangıçta seçilen çözüm, fireNow işlevine, henüz etkinlik dağıtımında yer almış olan tüm çalışma alanlarının .undoStack_ ve .redoStack_ öğelerini son filtrelemek için kod eklemekti (PR #7069). Bu çözüm sorunu çözmüş olsa da önemli ölçüde ek karmaşıklık getirdi ve etkinliklerin geri alma/yeniden yapma için nasıl işlendiğini anlamayı zorlaştırdı. Bu nedenle, hem undo çağrısı hem de son işleme kodu kaldırıldı ve forward=true varsayılan değer haline getirilirken forward=false ile işlevi çağırmanın desteği sonlandırıldı.

Aynı zamanda, BlockChange etkinliklerini yeniden sıralamak için kullanılan hatalı kod, fireInternal işlevinden çağrılan yeni bir işlevde (enqueueEvent) aynı işlevin daha az hatalı bir sürümüyle değiştirildi. Böylece, filtre çağrılırken etkinliklerin doğru sırada olacağından emin olundu.

Ayrıca, etkinlik birleştirme kodu yalnızca hemen bitişik etkinliklerin birleştirileceği şekilde değiştirildi. Bu, uygulamayı basitleştirirken etkinliklerin birleştirilmesinin yeniden sıralanmasına neden olmamasını sağladı.

fire(event)

Değişiklik işleyicilerine gönderilecek bir etkinliği sıraya ekleyin.

Notlar:

- Etkinlikler, bir zaman aşımı olana kadar (genellikle oluşturma işlemi tamamlandıktan sonra veya tarayıcıda çalışmıyorsa mevcut mikro görevin sonunda) sıraya eklenir. - Sıraya eklenen etkinlikler, daha sonra eklenen etkinliklerle birleştirilerek yıkıcı bir şekilde değiştirilebilir ancak yalnızca tetikleninceye kadar. - Etkinlikler, etkilenen çalışma alanındaki fireChangeListener yöntemi aracılığıyla gönderilir.

fromJson(json, workspace) JSON'un kodunu bir etkinliğe dönüştürün.
get(eventType) Kayıt defteri üzerinden belirli bir etkinlik türünün sınıfını alır.
getGroup() Mevcut grup.
getRecordUndo() Etkinliklerin geri alma yığınına eklenip eklenmeyeceğini döndürür.
isEnabled() Etkinliklerin tetiklenip tetiklenemeyeceğini döndürür.
setGroup(state) Grup başlatma veya durdurma.
setRecordUndo(newValue) Etkinliklerin geri alma yığınına eklenip eklenmeyeceğini belirler.

Arayüzler

Arayüz Açıklama
AbstractEventJson
BlockBaseJson
BlockChangeJson
BlockCreateJson
BlockDeleteJson
BlockDragJson
BlockFieldIntermediateChangeJson
BlockMoveJson
BubbleOpenJson
ClickJson
CommentBaseJson
CommentChangeJson
CommentCollapseJson
CommentCreateJson
CommentDragJson
CommentMoveJson
CommentResizeJson
SelectedJson
ThemeChangeJson
ToolboxItemSelectJson
TrashcanOpenJson
VarBaseJson
VarCreateJson
VarDeleteJson
VarRenameJson
VarTypeChangeJson
ViewportChangeJson

Değişkenler

Değişken Açıklama
BLOCK_CHANGE
BLOCK_CREATE
BLOCK_DELETE
BLOCK_DRAG
BLOCK_FIELD_INTERMEDIATE_CHANGE
BLOCK_MOVE
BUBBLE_OPEN
BUMP_EVENTS

Nesnelerin çalışma alanının görünür bölümüne geri itilmesine neden olan etkinliklerin listesi.

Bağlantısı kesilen bağlantıların bağlı görünmemesi için yapılan "bump" işlemiyle karıştırılmamalıdır.

DEĞİŞTİRME
TIKLAMA
COMMENT_CHANGE
COMMENT_CREATE
COMMENT_DELETE
COMMENT_DRAG
COMMENT_MOVE
COMMENT_RESIZE
OLUŞTUR
DELETE
FINISHED_LOADING
MOVE
SEÇİLİ
THEME_CHANGE
TOOLBOX_ITEM_SELECT
TRASHCAN_OPEN
Kullanıcı arayüzü
VAR_CREATE
VAR_DELETE
VAR_RENAME
VIEWPORT_CHANGE

Tür Takma Adları

Tür takma adı Açıklama
BumpEvent

Nesnelerin çalışma alanının görünür bölümüne geri itilmesine neden olan etkinlik türüdür.

Bağlantısı kesilen bağlantıların bağlı görünmemesi için yapılan "bump" işlemiyle karıştırılmamalıdır.