Temel menü işlemleri
Flash Player 9 ve üstü, Adobe AIR 1.0 ve üstü
Bir AIR uygulamasında yerel menüler oluşturmayla ilgili hızlı bir açıklama ve kod örnekleri için Adobe Geliştirici Bağlantısında bulunan aşağıdaki hızlı başlangıç makalelerini inceleyin:
Yerel menü sınıfları, uygulamanızın çalıştığı işletim sisteminin yerel menü özelliklerine erişmenizi sağlar. NativeMenu nesneleri uygulama menüleri (Mac OS X'te bulunan), pencere menüleri (Windows ve Linux'ta bulunan), bağlam menüleri ve açılır menüler için kullanılabilir.
AIR'nin dışında, Flash Player'ın bir kullanıcı uygulamanızdaki bir nesneye sağ tıklattığında veya command düğmesine basarak tıklattığında otomatik olarak görüntülediği bağlam menüsünü kullanabilirsiniz. (Bir otomatik bağlam menüsü AIR uygulamaları için görüntülenmez.)
Menü sınıfları
Menü sınıfları şunları içerir:
Paket
|
Sınıflar
|
flash.display
|
|
flash.ui
|
|
flash.events
|
|
Menü çeşitleri
AIR, aşağıdaki menü türlerini destekler:
-
Bağlam menüleri
-
Bağlam menüleri, SWF içeriğindeki etkileşimli bir nesnenin veya HTML içeriğindeki bir belge öğesinin sağ tıklatılması veya command tuşuna basılı tutularak tıklatılması yoluyla açılır.
Flash Player çalışma zamanında, bir bağlam menüsü otomatik olarak görüntülenir. ContextMenu ve ContextMenuItem sınıflarını menüye kendi komutlarınızı eklemek için kullanabilirsiniz. Ayrıca yerleşik komutların bazılarını, ancak hepsini değil kaldırabilirsiniz.
AIR çalışma zamanında, NativeMenu veya ContextMenu sınıflarından birini kullanarak bir bağlam menüsü oluşturabilirsiniz. AIR'de HTML içeriğinde, HTML öğelerine bağlam menüleri eklemek için Webkit HTML ve JavaScript API'lerini kullanabilirsiniz.
-
Uygulama menüleri (Yalnızca AIR)
-
Uygulama menüsü, tüm uygulamada geçerli olan genel bir menüdür. Uygulama menüleri Mac OS X'te desteklenir, ancak Windows veya Linux'ta desteklenmez. Mac OS X'te, işletim sistemi otomatik olarak bir uygulama menüsü oluşturur. Standart menülere öğeler ve alt menüler eklemek için AIR menü API'lerini kullanabilirsiniz. Varolan menü komutlarını yönetmek için dinleyiciler ekleyebilirsiniz. Veya varolan öğeleri kaldırabilirsiniz.
-
Pencere menüleri (Yalnızca AIR)
-
Pencere menüsü tek bir pencereyle ilişkilendirilmiştir ve başlık menüsünün altında görüntülenir. Menüler, bir NativeMenu nesnesi oluşturma ve bu nesneyi NativeWindow nesnesinin
menu
özelliğine atama yoluyla bir pencereye eklenebilir. Pencere menüleri Windows ve Linux işletim sistemlerinde desteklenir, ancak Mac OS X'te desteklenmez. Yerel pencere menüleri yalnızca sistem kromu olan pencerelerle kullanılabilir.
-
Dock ve sistem tepsisi simgesi menüleri (Yalnızca AIR)
-
Bu simge menüleri bağlam menülerine benzer ve Mac OS X'te yer alan bir uygulama simgesine veya görev çubuğundaki Windows ve Linux bildirim alanlarına atanır. Dock ve sistem tepsisi simge menüleri, NativeMenu sınıfını kullanır. Mac OS X'te, menüdeki öğeler standart işletim sistemi öğelerinin üzerine eklenmiştir. Windows ve Linux'ta standart menü bulunmaz.
-
Açılır menüler (Yalnızca AIR)
-
AIR açılır menüsü, bağlam menüsüne benzer, ancak belirli bir uygulama nesnesi veya bileşeni ile ilişkilendirilmiş olmayabilir. Açılır menüler, herhangi bir NativeMenu nesnesinin
display()
yönteminin çağrılması yoluyla pencerenin herhangi bir yerinde görüntülenebilir.
-
Özel menüler
-
Yerel menüler tamamen işletim sistemiyle çizilir ve bu nedenle Flash ve HTML oluşturma modellerinin dışında yer alır. Yerel menüler kullanmak yerine, her zaman kendi özel, yerel olmayan menülerinizi MXML, ActionScript veya JavaScript (AIR'de) kullanarak oluşturabilirsiniz. Bu tip menüler uygulama içeriğinin içinde tamamen oluşturulmuş olmalıdır.
-
Flex menüleri
-
Adobe® Flex™ çerçevesi, bir dizi Flex menü bileşeni sağlar. Flex menüleri işletim sistemiyle değil, çalışma zamanı ile çizilir ve
yerel
menüler değillerdir. Flex menü bileşeni, sistem kromu içermeyen Flex pencereleri için kullanılabilir. Flex menü bileşenini kullanmanın bir diğer faydası da, menüleri MXML biçiminde tanıtıcı biçimde belirtebiliyor olmanızdır. Flex Çerçevesi kullanıyorsanız, pencere menüleri için yerel sınıflar yerine Flex menü sınıflarını kullanın.
Varsayılan menüler (Yalnızca AIR)
Aşağıdaki varsayılan menüler işletim sistemi veya yerleşik bir AIR sınıfı tarafından sağlanır:
-
Mac OS X'teki uygulama menüsü
-
Mac OS X'teki dock simgesi menüsü
-
HTML içeriğinde seçilen metin ve görüntüler için bağlam menüsü
-
TextField nesnesinde (veya TextField'ı genişleten bir nesnede) seçilen metin için bağlam menüsü
Bağlam menüleri hakkında
SWF içeriğinde, InteractiveObject nesnesinden miras alınan her nesnenin
contextMenu
özelliğine bir menü nesnesi atanarak, bu nesneye bir bağlam menüsü verilebilir. Varsayılan olarak İleri, Geri, Yazdır, Kalite, ve Yakınlaştır komutları dahil edilmiştir. AIR çalışma zamanında,
contextMenu
öğesine atanan menü nesnesi NativeMenu veya type ContextMenu tipinde olabilir. Flash Player çalışma zamanında, yalnızca ContextMenu sınıfı kullanılabilir.
ContextMenu ve ContextMenuItem sınıflarını kullanırken yerel menü olaylarını veya bağlam menüsü olaylarını dinleyebilirsiniz; her ikisi de gönderilir. ContextMenuEvent nesnesinin özelliklerinin sağladığı bir fayda contextMenuOwner öğesinin menünün ekleneceği nesneyi ve
mouseTarget
öğesinin menüyü açmak için tıklatılan nesneyi tanımlamasıdır. Bu bilgi NativeMenuEvent nesnesinde bulunmaz.
Aşağıdaki örnek bir hareketli görüntü oluşturur ve basit bir düzenleme bağlam menüsü ekler:
var sprite:Sprite = new Sprite();
sprite.contextMenu = createContextMenu()
private function createContextMenu():ContextMenu{
var editContextMenu:ContextMenu = new ContextMenu();
var cutItem:ContextMenuItem = new ContextMenuItem("Cut")
cutItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, doCutCommand);
editContextMenu.customItems.push(cutItem);
var copyItem:ContextMenuItem = new ContextMenuItem("Copy")
copyItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, doCopyCommand);
editContextMenu.customItems.push(copyItem);
var pasteItem:ContextMenuItem = new ContextMenuItem("Paste")
pasteItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, doPasteCommand);
editContextMenu.customItems.push(pasteItem);
return editContextMenu
}
private function doCutCommand(event:ContextMenuEvent):void{trace("cut");}
private function doCopyCommand(event:ContextMenuEvent):void{trace("copy");}
private function doPasteCommand(event:ContextMenuEvent):void{trace("paste");}
Not:
Tarayıcı ortamında görüntülenen SWF içeriğinin aksine, AIR'deki bağlam menüleri yerleşik komutlar içermez.
Bir Flash Player bağlam menüsünü özelleştirme
Bir tarayıcıda veya projektörde, SWF içeriğindeki bağlam menüleri her zaman yerleşik öğeler içerir. Menüden Ayarlar ve Hakkında komutları hariç tüm bu varsayılan komutları kaldırabilirsiniz. Bunun için Sahne alanı
showDefaultContextMenu
özelliğine
false
değerini vermeniz gerekir.
Bir görüntüleme nesnesine özel bir bağlam menüsü oluşturmak için yeni bir ContextMenu sınıfı örneği oluşturun,
hideBuiltInItems()
yöntemini çağırın ve bu örneği DisplayObject örneğinin
contextMenu
özelliğine atayın. Aşağıdaki örnek dinamik olarak çizilmiş olan ve rastgele bir renk verme komutu içeren bağlam menüsüne sahip bir kare sağlar:
var square:Sprite = new Sprite();
square.graphics.beginFill(0x000000);
square.graphics.drawRect(0,0,100,100);
square.graphics.endFill();
square.x =
square.y = 10;
addChild(square);
var menuItem:ContextMenuItem = new ContextMenuItem("Change Color");
menuItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,changeColor);
var customContextMenu:ContextMenu = new ContextMenu();
customContextMenu.hideBuiltInItems();
customContextMenu.customItems.push(menuItem);
square.contextMenu = customContextMenu;
function changeColor(event:ContextMenuEvent):void
{
square.transform.colorTransform = getRandomColor();
}
function getRandomColor():ColorTransform
{
return new ColorTransform(Math.random(), Math.random(), Math.random(),1,(Math.random() * 512) - 255, (Math.random() * 512) -255, (Math.random() * 512) - 255, 0);
}
Yerleşik menü yapısı (AIR)
Yerleşik menüler yapıları gereği hiyerarşiktir. NativeMenu nesneleri, alt NativeMenuItem nesneleri içerebilir. Alt menüleri temsil eden NativeMenuItem nesneleri, buna karşılık NativeMenu nesnelerini içerebilir. Yapıdaki üst veya kök düzey menü nesneleri, uygulama ve pencere menülerine ilişkin menü çubuğunu temsil eder. (Bağlam menüleri, simge menüleri ve açılır menüler menü çubuğu içermez.)
Aşağıdaki diyagram, tipik bir menünün yapısını gösterir. Kök menü, menü çubuğunu temsil eder ve
Dosya
alt menüsü ile
Düzen
alt menüsüne başvuruda bulunan iki menü öğesi içerir. Bu yapıdaki Dosya alt menüsü iki komut öğesinin yanı sıra
Son Kullanılan Menüyü Aç
alt menüsüne başvuruda bulunan ve kendisi üç öğe içeren bir öğeyi içerir. Düzen alt menüsü üç komut ve bir ayırıcı içerir.
Alt menünün tanımlanması, hem NativeMenu hem de NativeMenuItem nesnesini gerektirir. NativeMenuItem nesnesi, üst menüde görüntülenen etiketi tanımlar ve kullanıcının alt menüyü açmasını sağlar. NativeMenu nesnesi, alt menüdeki öğeler için kap işlevi görür. The NativeMenuItem nesnesi, NativeMenuItem
submenu
özelliği aracılığıyla NativeMenu nesnesine başvuruda bulunur.
Bu menüyü oluşturan bir kod örneği görüntülemek için bkz.
Yerel menü örneği: Pencere ve uygulama menüsü (AIR)
.
Menü olayları
NativeMenu ve NativeMenuItem nesneleri
preparing
,
displaying
ve
select
olaylarını gönderir:
Preparing:
Nesne bir kullanıcı etkileşimine başlamak üzere olduğunda, menü ve menü öğeleri kayıtlı dinleyicilerine bir
preparing
olayı gönderir. Etkileşim bir menü açmayı veya klavye kısayoluyla bir öğe seçmeyi de içerir.
Not:
preparing
olayı yalnızca Adobe AIR 2.6 ve sonrasında mevcuttur.
-
Görüntüleme:
-
Menü görüntülenmeden hemen önce, menü ve menü öğeleri tüm kayıtlı dinleyicilere bir
displaying
olayı gönderir.
preparing
ve
displaying
olayları kullanıcıya gösterilmeden önce menü içeriğini veya öğe görüntüsünü güncellemeniz için fırsat verir. Örneğin, “Son Kullanılanları Aç” menüsünün
displaying
olayına ilişkin dinleyicide, menü öğelerini son görüntülenen belgelerin güncel listesini yansıtacak biçimde değiştirebilirsiniz.
Klavye kısayolu
preparing
olayını tetikleyen bir menü öğesini kaldırırsanız, menü etkileşimi başarıyla iptal edilir ve
select
olayı gönderilmez.
Olayın
target
ve
currentTarget
özellikleri dinleyicinin kayıtlı olduğu öğenin nesneleridir: menünün kendisi veya menü öğelerinden biri.
preparing
olayı
displaying
olayından önce gönderilir. Genellikle ikisini birden değil bir olayı ya da diğerini dinlersiniz.
-
Seç:
-
Kullanıcı bir komut öğesini seçtiğinde öğe kayıtlı dinleyicilere bir
select
olayı gönderir. Alt menü ve ayırıcı öğeleri seçilemez ve bu nedenle hiçbir zaman
select
olayı gönderemez.
select
olayı, bir menü öğesinden bu öğeyi içeren menüye doğru ve kök menüye kadar baloncuk oluşturur.
Select
olaylarını doğrudan bir öğe üzerinde veya daha yüksek sesle menü yapısında dinleyebilirsiniz. Menüde
select
olayını dinlediğinizde, olayın
target
özelliğini kullanarak seçilen öğeyi tanımlayabilirsiniz. Olay menü hiyerarşisi boyunca kabarcık oluştururken olay nesnesinin
currentTarget
özelliği geçerli menü nesnesini tanımlar.
Not:
ContextMenu ve ContextMenuItem nesneleri
select
,
preparing
ve
displaying
olaylarının yanı sıra
menuItemSelect
ve
menuSelect
olaylarını gönderir.
Yerleşik menü komutlarına ilişkin anahtar eşdeğerleri (AIR)
Menü komutuna bir tuş eşdeğeri (bazen hızlandırıcı olarak adlandırılır) atayabilirsiniz. Tuşa veya tuş bileşimine basıldığında, menü öğesi kayıtlı dinleyicilere bir
select
olayı gönderir. Komutun çağrılması için, öğeyi içeren menü uygulama menüsünün veya etkin pencerenin bölümü olmalıdır.
Tuş eşdeğerleri, ana anahtarı temsil eden bir dize ve ayrıca basılması gereken bir dizi değiştirici tuş olmak üzere iki bölümden oluşur. Ana anahtarı atamak için, menü öğesi
keyEquivalent
özelliğini bu tuş için tek karakter dizesi olarak ayarlayın. Büyük harf kullandığınızda, shift tuşu değiştirici dizisine otomatik olarak eklenir.
Mac OS X'te, varsayılan değiştirici (
Keyboard.COMMAND
) komut tuşudur. Windows ve Linux'ta, ctrl tuşudur (
Keyboard.CONTROL
). Bu varsayılan tuşlar değiştirici dizisine otomatik olarak eklenir. Farklı değiştirici tuşlar atamak için
keyEquivalentModifiers
özelliğine istenen tuş kodlarını içeren yeni bir dizi atayın. Varsayılan dizinin üzerine yazılır. Varsayılan değiştiricileri kullansanız da kendi değiştirici dizinizi atasanız da,
keyEquivalent
özelliğine atadığınız dize büyük harf olduğunda shift tuşu eklenir. Değiştirici tuşlar için kullanılacak tuş kodlarına ilişkin sabitler Keyboard sınıfında tanımlanır.
Atanan tuş eşdeğer dizesi, otomatik olarak menü öğesi adının yanında görüntülenir. Biçim kullanıcının işletim sistemine ve sistem tercihlerine bağlıdır.
Not:
Windows işletim sisteminde bir tuş değiştirici dizisine
Keyboard.COMMAND
değerini atadığınızda, menüde tuş eşdeğeri görüntülenmez. Ancak, menü komutunu etkinleştirmek için ctrl tuşu kullanılmalıdır.
Aşağıdaki örnek, menü öğesine ilişkin tuş eşdeğeri olarak
Ctrl+Shift+G
tuşlarını atamaktadır:
var item:NativeMenuItem = new NativeMenuItem("Ungroup");
item.keyEquivalent = "G";
Bu örnek, doğrudan değiştirici dizisini ayarlayarak tuş eşdeğeri olarak
Ctrl+Shift+G
tuşlarını atar:
var item:NativeMenuItem = new NativeMenuItem("Ungroup");
item.keyEquivalent = "G";
item.keyEquivalentModifiers = [Keyboard.CONTROL];
Not:
Tuş eşdeğerleri yalnızca uygulama ve pencere menüleri için tetiklenir. Bağlam menüsüne veya açılır menüye bir tuş eşdeğeri atadığınızda, tuş eşdeğeri menü etiketinde görüntülenir, ancak ilişkili menü komutu hiçbir zaman çağrılmaz.
Anımsatıcılar (AIR)
Anımsatıcılar, menülere ilişkin işletim sistemi klavye arabiriminin bir parçasıdır. Linux, Mac OS X ve Windows kullanıcıların klavye yoluyla menüleri açmasına ve komutları seçmesine olanak verir, ancak arada küçük farklar vardır.
Mac OS X'te kullanıcı menünün ilk veya iki harfini yazar ve ardından return tuşuna basar.
mnemonicIndex
özelliği yok sayılır.
Windows'ta yalnızca tek bir harf önemlidir. Varsayılan olarak, önemli harf etiketteki ilk karakterdir. Ancak menü öğesine bir anımsatıcı atadığınızda, önemli karakter belirlenen harf olarak değişir. Bir menüdeki iki öğe aynı önemli karaktere sahip olduğunda (anımsatıcı atanmış olup olmaması önemli değildir) kullanıcının menü ile klavye etkileşimi biraz değişir. Kullanıcı, menüyü veya komutu seçmek üzere tek bir harfe basmak yerine, harfe istenen öğeyi vurgulamak için gerekli olduğu kadar basmalı ve daha sonra seçimi tamamlamak için Enter tuşunu kullanmalıdır. Tutarlı davranışı korumak için, pencere menülerine ilişkin bir menüdeki her öğeye benzersiz bir anımsatıcı atamanız tavsiye edilir.
Linux'ta varsayılan bir anımsatıcı sunulmaz. Bir anımsatıcı sağlamak için menü öğesinin
mnemonicIndex
özelliği için bir değer belirlemelisiniz.
Anımsatıcı karakteri etiket dizesinde dizin olarak belirleyin. Etiketteki ilk karakterin dizini 0'dır. Bu nedenle, etiketlenen menü öğesi “Format” için “r” anımsatıcısını kullanmak üzere
mnemonicIndex
özelliğini 2'ye eşitlemelisiniz.
var item:NativeMenuItem = new NativeMenuItem("Format");
item.mnemonicIndex = 2;
Menü öğesi durumu
Menü öğeleri iki durum özelliğine sahiptir,
checked
ve
enabled
:
-
checked
-
Öğe etiketinin yanında bir onay işareti görüntülemek için
true
özelliğini belirleyin.
var item:NativeMenuItem = new NativeMenuItem("Format");
item.checked = true;
-
enabled
-
Komutun etkin olup olmadığını kontrol etmek için değeri
true
ve
false
arasında değiştirin. Etkin olmayan öğeler silik bir görselliğe sahiptir ve
select
olayları göndermez.
var item:NativeMenuItem = new NativeMenuItem("Format");
item.enabled = false;
Menü öğesine nesne ekleme
NativeMenuItem sınıfının
data
özelliği, her öğede rastgele bir nesneye başvuruda bulunabilmenizi sağlar. Örneğin, “Son Kullanılanları Aç” menüsünde her bir menü öğesine her belge için File nesnesi atayabilirsiniz.
var file:File = File.applicationStorageDirectory.resolvePath("GreatGatsby.pdf")
var menuItem:NativeMenuItem = docMenu.addItem(new NativeMenuItem(file.name));
menuItem.data = file;
|
|
|
|
|