Temel menü işlemleriFlash 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ü çeşitleriAIR, aşağıdaki menü türlerini destekler:
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:
Bağlam menüleri hakkındaSWF 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ştirmeBir 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ğini 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.
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 durumuMenü öğeleri iki durum özelliğine sahiptir, checked ve enabled:
Menü öğesine nesne eklemeNativeMenuItem 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; |
|