Показать сообщение отдельно
Старый 19.07.2011, 14:19
cv' вне форума Посмотреть профиль Отправить личное сообщение для cv' Найти все сообщения от cv'
  № 1  
Ответить с цитированием
cv'

Регистрация: Apr 2010
Адрес: Москва Кузминки
Сообщений: 109
Post Слушать события двух клипов друг под другом.

Доброго вам, уважаемые flash-самураи.
Вот очередной тупой вопрос про мышиные слушатели и дисплей лист.

Есть задача ловить мышиные события двух клипов друг под другом.
А точнее так:

0 - stage
0.1 - bottom (MouseDown)
0.2 - top
0.2.1 - topChild (MouseDown)

Клипы bottom и top одинакового размера, но top не интерактивный, однако блокирует события bottom.
Клип topChild интерактивный, и только его события срабатывают.
Как можно заставить эту схему работать?
Пузыри, видимо тут не помогут, потому что у клипов разные родители.


Код AS3:
import flash.display.Sprite;
import flash.display.Graphics;
import flash.events.MouseEvent;
 
var bottom:Sprite = new Sprite()
addChild(bottom);
draw(bottom,0xFF0000,1);
 
var top:Sprite = new Sprite();
addChild(top);
draw(top,0x00FF00,0.5);
 
var topChild:Sprite = new Sprite();
top.addChild(topChild);
draw(topChild,0x0000FF,1,true);
 
bottom.addEventListener(MouseEvent.MOUSE_DOWN, function (event:MouseEvent){trace('bottoom')});
topChild.addEventListener(MouseEvent.MOUSE_DOWN, function (event:MouseEvent){trace('topChild')});
 
function draw(sprite:Sprite,color:uint,alpha:Number,small:Boolean = false)
{
	sprite.x = 
	sprite.y = small ? 25 : 50;
	var size:Number = small ? 50 : 100;
	var graph:Graphics = sprite.graphics;
	graph.beginFill(color,alpha);
	graph.drawRect(0,0,size,size);
	graph.endFill();
}