Fare girişi yakalama

Flash Player 9 ve üstü, Adobe AIR 1.0 ve üstü

Fare tıklatmaları etkileşim işlevlerini tetiklemek için kullanılabilecek fare olayları oluşturur. SWF dosyasının herhangi bir yerinde oluşan fare olaylarını dinlemek için Sahne alanına bir olay dinleyici ekleyebilirsiniz. Ayrıca Sahne alanı üzerindeki InteractiveObject öğesinden miras alan nesnelere (Sprite veya MovieClip gibi) de bir nesne tıklandığında tetiklenecek olay dinleyici ekleyebilirsiniz.

Kabarcık sıralaması klavye olayları için olduğu gibi fare olayları için de geçerlidir. Aşağıdaki örnekte square Sahne alanının alt öğesi olduğundan kareye tıklandığında olay hem square hareketli grafiğinden hem de Sahne alanı nesnesinden gönderilir.

var square:Sprite = new Sprite(); 
square.graphics.beginFill(0xFF0000); 
square.graphics.drawRect(0,0,100,100); 
square.graphics.endFill(); 
square.addEventListener(MouseEvent.CLICK, reportClick); 
square.x = 
square.y = 50; 
addChild(square); 
 
stage.addEventListener(MouseEvent.CLICK, reportClick); 
 
function reportClick(event:MouseEvent):void 
{ 
    trace(event.currentTarget.toString() +         " dispatches MouseEvent. Local coords [" +         event.localX + "," + event.localY + "] Stage coords [" +         event.stageX + "," + event.stageY + "]"); 
}

Bir önceki örnekte fare olayının tıklatma ile ilgili konum bilgisi içerdiğine dikkat edin. localX ve localY özellikleri görüntüleme zincirindeki en alt öğenin tıklanma konumunu içerir. Örneğin, square öğesinin sol üst köşesine tıklandığında square öğesinin kayıt noktası olan [0,0] yerel koordinatları rapor edilir. Ayrıca stageX ve stageY özellikleri Sahne alanı tıklatmasının genel koordinatlarına başvurur. Aynı tıklatma bu koordinatlar için [50,50] rapor eder çünkü square öğesi bu koordinatlara taşınmıştır. Bu koordinat çiftlerinin her ikisini de kullanıcı etkileşimine nasıl yanıt vermek istediğinize bağlı olarak kullanabilirsiniz.

MouseEvent nesnesi ayrıca altKey, ctrlKeyve shiftKey Boolean özelliklerini de içerir. Bu özellikleri fare ile tıklanırken Alt, Ctrl veya Shift tuşlarına da basılıp basılmadığını kontrol etmek için kullanabilirsiniz.

Sprite'ları sahne alanı etrafında sürükleme

Sprite sınıfının startDrag() yöntemini kullanarak kullanıcının, bir Sprite nesnesini sahne alanı çevresinde sürüklemesini sağlayabilirsiniz. Aşağıdaki kod bu işleve bir örnektir:

import flash.display.Sprite; 
import flash.events.MouseEvent; 
 
var circle:Sprite = new Sprite(); 
circle.graphics.beginFill(0xFFCC00); 
circle.graphics.drawCircle(0, 0, 40); 
 
var target1:Sprite = new Sprite(); 
target1.graphics.beginFill(0xCCFF00); 
target1.graphics.drawRect(0, 0, 100, 100); 
target1.name = "target1"; 
 
var target2:Sprite = new Sprite(); 
target2.graphics.beginFill(0xCCFF00); 
target2.graphics.drawRect(0, 200, 100, 100); 
target2.name = "target2"; 
 
addChild(target1); 
addChild(target2); 
addChild(circle); 
 
circle.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown)  
 
function mouseDown(event:MouseEvent):void 
{ 
    circle.startDrag(); 
} 
circle.addEventListener(MouseEvent.MOUSE_UP, mouseReleased); 
 
function mouseReleased(event:MouseEvent):void 
{ 
    circle.stopDrag(); 
    trace(circle.dropTarget.name); 
}

Ayrıntılar için, Konum değiştirme başlığı altındaki sürükleyip bırakma etkileşimi oluşturmayla ilgili bölüme bakın.

AIR uygulamasında sürükleme ve bırakma

Adobe AIR uygulamasında kullanıcılara, verileri uygulamanıza sürüklemek ve uygulamadan çıkarmak için sürükle ve bırak desteği sağlanmıştır. Ayrıntılar için bkz. AIR uygulamasında taşıma ve bırakma.

Fare imlecini özelleştirme

Fare imleci (fare işaretçisi) Sahne alanı üzerindeki herhangi bir görüntüleme nesnesi için gizlenebilir veya değiştirilebilir. Fare imlecini gizlemek için Mouse.hide() yöntemini çağırın. Mouse.hide() yöntemini çağırıp MouseEvent.MOUSE_MOVE olayı için Sahne alanını dinleyerek ve bir görüntüleme nesnesinin (özel imleciniz) koordinatlarını olayın stageX ve stageY özelliklerine ayarlayarak imleci özelleştirebilirsiniz. Aşağıdaki örnek bu görevin oluşturulması için temel kodu gösterir:

var cursor:Sprite = new Sprite(); 
cursor.graphics.beginFill(0x000000); 
cursor.graphics.drawCircle(0,0,20); 
cursor.graphics.endFill(); 
addChild(cursor); 
 
stage.addEventListener(MouseEvent.MOUSE_MOVE,redrawCursor); 
Mouse.hide(); 
 
function redrawCursor(event:MouseEvent):void 
{ 
    cursor.x = event.stageX; 
    cursor.y = event.stageY; 
}