Dinamik menüler, bir uygulamanın “nerede olduğumuzu” anlatan pusulasıdır; yalnızca bağlantılar kümesi değil, bilgi mimarisi, durum yönetimi, erişilebilirlik, animasyon ritmi ve performansın bir araya geldiği tasarım–mühendislik ürünüdür. Macromedia/Adobe Flash (günümüzde Adobe Animate) ekosisteminde menü tasarımı; vektör çizim, MovieClip tabanlı bileşenler, timeline etiketleri, ActionScript 3 (AS3) ile olay odaklı programlama, 9-slice ölçekleme, maskeleme, ses/müzik (sessiz varsayılan), XML/JSON veri ayrıştırma ve AIR/HTML5 yayın hatlarıyla tek bir stüdyoda çözülür.
Bu kapsamlı rehber, Flash ile Dinamik Menü Tasarımını uçtan uca sistemleştirir: bilgi mimarisinden (IA) başlar; tek seviyeli, çok seviyeli ve mega menü desenlerine; hover/focus/active/disabled durum yönetimine; klavye navigasyonu ve Reduce Motion davranışlarına; temalandırma (açık–koyu), yerelleştirme (LTR/RTL), JSON tabanlı veri bağlama, performans–bellek hijyeni, QA kontrol listeleri, A/B ve ölçüm ile modern HTML5/Canvas/GSAP köprüsüne kadar ilerler. Her bölüm uygulanabilir kalıplar, AS3 iskeletleri, vaka notları ve pratik kontrol listeleri içerir.
Gelişme
1) Bilgi Mimarisi (IA): Menüden Önce Harita
Menü, IA’nın yüzeye çıkmış hâlidir. Önce içerik haritasını yazın:
-
Uygulama → Bölüm → Ekran → Panel hiyerarşisi.
-
Her düğüm için bir amaç cümlesi (ör. “Raporlar: analiz edilen verileri gör”).
-
Derinlik: 2 seviye idealdir; 3+ seviyede breadcrumb zorunlu hale gelir.
Kural: Navigasyon, tek birincil görevi (primary task) parlatmalı; ikincil görevler menü içinde hiyerarşik olarak geride kalmalı.
2) Menü Tipleri: Ne, Nerede, Neden?
a) Üst Çubuk (Top Nav)
-
Düzey: 1 (opsiyonel açılır alt menüler).
-
Kullanım: Kurumsal siteler, SaaS.
-
Artı: Kolay tarama, yatay alan geniş.
-
Eksi: Çok sayfa/uzun başlıklarda sıkışır.
b) Yan Çubuk (Sidebar/Nav Drawer)
-
Düzey: 2–3 (gruplu).
-
Kullanım: Uygulama içi panel/raporlama.
-
Artı: Ekran genişliğinde ölçekli alan.
-
Eksi: Küçük ekranlarda çekmece (drawer) davranışı gerekir.
c) Sekme (Tabs) / Alt Sekme (Subtabs)
-
Düzey: 1–2.
-
Kullanım: Aynı bağlamda görünüm değişimi (liste/grafik).
-
Artı: Hızlı geçiş.
-
Eksi: Çok sekmede kaydırma gerekli olur.
d) Mega Menü
-
Düzey: 2–3, geniş panel.
-
Kullanım: E-ticaret/ürün kataloğu.
-
Artı: Sınıflandırma/öne çıkarılmış içerik.
-
Eksi: Dikkat yönetimi zor; mobil varyant şart.
e) Kısmî (Contextual) Menü
-
Düzey: Lokal; sağ tık/ikon.
-
Kullanım: Tablo/kart satır eylemleri.
-
Artı: Hedefe yakın eylem.
-
Eksi: Keşfedilebilirlik düşebilir.
3) Görsel Hiyerarşi: Okunurluk ve Ritm
-
Grid: 8 px ritim; öğe boşlukları (padding) 8/12/16 px kademeli.
-
Tipografi: Başlık 18–24 pt, menü öğesi 14–18 pt (projeksiyon/tablet için bir boy büyük).
-
Kontrast: Metin/zemin ≥ 4.5:1; özellikle sidebar/drawer zeminlerinde.
-
Negatif alan: Aktif/hover öğe etrafında nefes payı; ikon–metin aralığı 8–12 px.
-
İkonografi: Aynı stroke kalınlığı; 16/20/24 px gridte piksel-hassas hizalama.
4) Bileşen Anatomisi: Menü Öğesi (Item)
Her menü öğesi şu alt parçalardan oluşur:
-
Hit alanı (44–64 px yükseklik),
-
İkon + Metin (sol hizalı),
-
Durum göstergesi (seçili/ok/rozetsel uyarı),
-
Klavye focus ring (görünür),
-
Açılır alt menü oku (varsa).
Durum seti:idle
,hover
,focus
,active
,disabled
. Her durum için renk/arka plan/ikon doygunluğu netleşmeli.
5) 9-Slice Ölçekleme, Vektör Hijyeni ve Piksel Netliği
Menü kartları/çekmeceler bozulmadan büyümeli:
-
9-slice sınırlarını köşe–kenar–orta olarak tanımlayın.
-
Stroke hizası 1–1.5 px altına düşmesin; düşük DPI’da çizgiler kaybolur.
-
cacheAsBitmap: Sık değişmeyen arka plan/çerçevelerde performansı artırır.
6) Mikro-Animasyonlar ve Easing Psikolojisi
-
Hover/focus: 180–220 ms
easeOutQuad
. -
Açılır alt menü: 200–260 ms
easeInOutCubic
, 8–12 px aşağıdan yukarıya. -
Drawer aç/kapat: 220–320 ms; içerik alanını gereksiz oynatmayın.
Tek baskın hareket: Aynı anda hem alt menü kaymasın hem de ikon zıplamasın; mesajı böler.
7) Klavye Navigasyonu ve Erişilebilirlik
-
TAB ile menüye, ok tuşları ile öğeler arasında gezinti; ENTER/SPACE ile seçim.
-
Focus ring görünür ve çakışmasız.
-
Reduce Motion: Slide/overshoot kapanır, fade/crossfade devreye girer, süreler %30 kısalır.
-
Renk körlüğü: Seçili/aktif durum yalnız renkle anlatılmaz; şekil/ikon desteği eklenir.
8) Menü Olay Modeli ve FSM (Durum Makinesi)
Serbest gotoAndPlay
yerine FSM ile akışı yönetin:
var state:String=”HOME”; // HOME, REPORTS, SETTINGS…
function go(next:String):void{
if(current){ current.out(); detach(current); }
current = screens[next];
attach(current); current.in();
state = next;
}
Menü–FSM köprüsü: Menü seçimi go(route)
çağırır; ekranlar giriş/çıkış etiketlerinde animasyon + temizlik yapar.
9) AS3: Menü Öğesi Sınıfı (Basit İskelet)
public var route:String;
public function MenuItem(label:String, icon:DisplayObject, route:String) {
this.route = route;
addChild(icon); // ikon hizalamasını layout’ta yapın
txtLabel.text = label; // gömülü font, Latin-Ext
buttonMode = true; tabEnabled = true;
addEventListener(MouseEvent.ROLL_OVER, onHover);
addEventListener(MouseEvent.ROLL_OUT, onOut);
addEventListener(MouseEvent.CLICK, onClick);
}
private function onHover(_:MouseEvent):void { gotoAndPlay(“hover”); }
private function onOut(_:MouseEvent):void { gotoAndPlay(“idle”); }
private function onClick(_:MouseEvent):void { dispatchEvent(new Event(“menu:select”)); }
}
Notlar: Durum kareleri idle/hover/active/disabled/focus
olarak timeline’da etiketli olsun; tabEnabled
ile klavyeye açık.
10) Çok Düzeyli (Multi-level) Menü: Açılırlar ve Breadcrumb
-
Açılır alt menülerde açılma yönü, ekran kenarlarına çarpmayacak şekilde hesaplanmalı.
-
Gölge/diffuse düşük opaklıkta; metni öldürmesin.
-
Breadcrumb: 3+ düzeyde “Neredeyim?” sorusuna net cevap.
-
Kapanma kuralları: ESC, dış alana tık, odak kaybı.
AS3 alt menü tetik:
parentItem.addEventListener(“menu:openSub”, function(_:Event):void {
subMenu.visible = true; subMenu.gotoAndPlay(“in”);
});
11) Mega Menü: Bilgi Yoğunluğunu Tanelemek
-
Kolonlara ayırın (3–5 sütun): Başlık, hızlı linkler, öne çıkarılmış içerik.
-
Kontrast–negatif alan ile göz koridoru; her sütunda en fazla bir görsel.
-
Klavye döngüsü: Sütunlar arasında sağ/sol; sütun içinde yukarı/aşağı.
12) Sidebar/Drawer: Mobil ve Masaüstü Denkliği
-
Drawer genişliği içerik tipine göre %70–80; arka plan %30–40 karartılır.
-
Gestures/dokunma: 64 px hit alan; yanlış dokunma toleransı.
-
Çıkış: Başlık çarpı (X), ESC, dışına dokunma.
13) JSON ile Veri Bağlama: Menüleri Derlemesiz Güncellemek
Metni sahneden ayırın; yerelleştirme ve A/B kolaylaşır.
var L:URLLoader = new URLLoader();
L.addEventListener(Event.COMPLETE, onData);
L.load(new URLRequest(“data/menu.tr.json”));
function onData(e:Event):void {
var d:Object = JSON.parse(L.data);
for each (var item:Object in d.items) {
var mi:MenuItem = new MenuItem(item.label, new Icon(item.icon), item.route);
mi.addEventListener(“menu:select”, function(ev:Event):void { go(mi.route); });
nav.addChild(mi);
}
}
İpucu: Aynı yapı menu.en.json
, menu.ar.json
ile çok dilliliğe açılır. RTL dillerde ikon/ok yönlerini aynalayın.
14) Tema/Skins: Açık–Koyu ve Marka Varyantları
-
Tema değişkenleri: Arka plan, metin, vurgu, radius, gölge, spacing.
-
Koyu tema: Kontrast tuzaklarına dikkat; vurgu rengi “yanmasın”.
-
Skin dosyalarıyla marka temaları (bankacılık/edtech vb.) hızlı değişir.
15) Performans ve Bellek Hijyeni
-
Filtreler (blur/glow/drop shadow) minimum; çizimle gölge simülasyonu.
-
Tek
ENTER_FRAME
döngüsü: Alt menü/çekmece animasyonlarını merkezi bir zamanlayıcı yönetir. -
cacheAsBitmap: Statik vektörlerde CPU tasarrufu.
-
Görünmeyeni sahneden kaldırın (
removeChild
),alpha=0
yetmez. -
Object pool: Tekrar eden tooltip/etiket/rozetler için.
-
Temizlik: Menü kapanırken
removeEventListener
, tween/stream stop; uzun oturumda sızıntı önlenir.
16) Erişilebilirlik İncelemesi (Hızlı Liste)
Dinamik menü, yalnızca “sayfa listesi” değil; kullanıcı aklını yormadan neredeyim–nereye gidebilirim–ne yapmalıyım sorularına saniyeler içinde yanıt veren, erişilebilir, ölçeklenebilir ve hafif bir yol bulucudur. Bu rehberde; IA yazımından uygun menü tipinin seçimine, öğe anatomisinden durum yönetimine, mikro-animasyondan klavye navigasyonuna, JSON ile veri bağlamadan tema/skin sistemlerine, performans–bellek hijyeninden A/B ve ölçüme kadar pratik bir çerçeve sunduk.
Özetle; (1) IA’yı kristalize et, (2) tek baskın hareket ve kontrastla okunurluğu koru, (3) klavye/Reduce Motion erişilebilirliğini şart koş, (4) JSON/tema ile esnekleştir, (5) performans–temizlik–ölçüm üçlüsünü standarda bağla. Bu omurgayla hazırlanan Flash/Animate menüleri—HTML5’e de taşındığında—akıcı, tutarlı ve güven verici bir navigasyon deneyimi üretir.