2013-10-14 50 views
0

在我的場景中,我有一個精靈「imgSprite」與動態加載的圖像。我在這個名爲「矩形」的精靈的左下角附近畫了一個小盒子。 imageSprite也可以拖放。當我點擊圖片時,我將它設置爲顯示矩形,但我無法弄清楚如何隱藏它在imgSpirte之外的某處點擊。取消選擇精靈在舞臺上或其他動畫片段中的其他位置點擊

var imgSprite:Sprite = new Sprite(); 
imgSprite.addChild(image); 
MovieClip(root).addChild(imgSprite); 

/* DELETE BUTTON */ 
var rectangle:Sprite = new Sprite(); 
rectangle.graphics.beginFill(0xFF0000); 
rectangle.graphics.drawRect(0, 0, 20,20); 
rectangle.graphics.endFill(); 
rectangle.y=imgSprite.y+imgSprite.height; 
rectangle.x=imgSprite.x-20; 
imgSprite.addChild(rectangle); 

rectangle.addEventListener(MouseEvent.CLICK, function() { 
    rectangle.parent.parent.removeChild(imgSprite); 
}); 

imgSprite.addEventListener("mouseDown", function() { 
    imgSprite.startDrag(); 
    rectangle.visible = true; 
}); 

stage.addEventListener("mouseUp", function() { 
    imgSprite.stopDrag(); 
}); 

/* 
imgSprite.addEventListener("mouseOut", function() { 
    var timer = setInterval(deSelect,3000); 
    function deSelect(){ 
     rectangle.visible = false; 
     clearInterval(timer); 
    } 
}); 
*/ 

回答

0

您可以嘗試階段的臨時偵聽器。說,像這樣的:

if (rectangle) rectangle.visible=false; // or it won't trigger 
imgSprite.addEventListener("mouseDown",onMouseDown); 
function onMouseDown(e:MouseEvent):void { 
    if (rectangle) if (!rectangle.visible) 
     stage.addEventListener("mouseDown",removeRectangle); 
    imgSprite.startDrag(); 
    rectangle.visible=true; 
    e.stopPropagation(); // this is needed to not get the rectangle removed as soon as you click on imgSprite 
} 
function removeRectangle(e:MouseEvent):void { 
    if (rectangle) rectangle.visible=false; 
    stage.removeEventListener("mouseDown",removeRectangle); 
} 

它的工作原理是這樣的:只要你點擊imgSprite不久,一個監聽器被分配給階段和矩形可見。如果再次單擊imgSprite,該矩形已經可見,所以不會添加額外的偵聽器。此外,e.stopPropagation()可防止現有偵聽器觸發並隱藏矩形。只要您點擊其他地方,但在imgSprite上,聽衆會被觸發,從舞臺上移開,並隱藏rectangle

+0

嘗試過,但它沒有奏效。我管理它以某種方式工作這種方式http://pastebin.com/LJHrjbk2現在唯一的問題是它取消選擇(隱藏REC/DEL按鈕)當單擊選定的動畫片段時選擇狀態。 – AZee

+0

在匿名函數中使用'e.stopImmediatePropagation()'來創建舞臺上的監聽器。另外我不明白爲什麼'mouseUp'監聽器被分配到stage,而不是'mc'?如果你把它分配給'mc',它應該可以幫助你跟蹤你是否點擊了mc或者mc以外的地方。 – Vesper

+0

感謝您的幫助 - 我想通過這種方式http://pastebin.com/9dnDxHA5 – AZee