Вот компонент, над которым я работаю:
А вот класс компонента:
public class PromoPanel extends Canvas
{
private var corner:PromoCorner;
private var text:Text;
private var roundedMask:Sprite;
private var cornerUpdated:Boolean = false;
private var textUpdated:Boolean = false;
private var container:Canvas;
public function PromoPanel()
{
super();
// Defining corner's properties
corner.addEventListener(MouseEvent.Roll_Over, objectHandler);
corner.addEventListener(MouseEvent.Roll_Out, objectHandler);
// Defining text's properties
roundedMask = new Sprite;
roundedMask.mouseChildren = false;
roundedMask.mouseEnabled = false
container = new Canvas;
container.percentWidth = 100;
container.minHeight = 100;
container.maxHeight = 345;
container.setStyle('backgroundColor', 0xffffff);
container.addChild(corner);
container.addChild(text);
container.horizontalScrollPolicy = 'off';
this.addChild(container);
}
public function update():void{
var s:String = 'blabla';
text.addEventListener(FlexEvent.UPDATE_COMPLETE, updateHandler);
text.text = s;
corner.addEventListener(MyEvent.CORNER_UPDATED, updateHandler);
corner.build();
}
private function updateHandler(e:Event):void{
switch(e.type){
case MyEvent.CORNER_UPDATED:
cornerUpdated = true;
corner.removeEventListener(MyEvent.CORNER_UPDATED, updateHandler);
break;
case FlexEvent.UPDATE_COMPLETE:
textUpdated = true;
text.removeEventListener(FlexEvent.UPDATE_COMPLETE, updateHandler);
break;
}
if(cornerUpdated && textUpdated){
roundedMask.graphics.clear();
roundedMask.graphics.beginFill(0xFFFFFF);
roundedMask.graphics.drawRoundRect(0, 0, container.width, container.height, 20, 20);
roundedMask.graphics.endFill();
this.mask = roundedMask;
dispatchEvent(new MyEvent(MyEvent.PROMO_UPDATED));
}
var glow:DropShadowFilter = new DropShadowFilter(0,0,0x2E2E2E,0.6,10,10,0.5,1);
this.filters = [glow];
}
private function objectHandler(e:Event):void{
switch(e.type){
case MouseEvent.ROLL_OUT:
trace('out' + mouseX + '/' + mouseY);
break;
case MouseEvent.ROLL_OVER:
trace('on' + mouseX + '/' + mouseY);
break;
}
}
...
}
Для более детального понимания: угол - эточерный угол с (i) и «Поощрением», текст - это некоторый случайный текст, который может отображаться в оставшемся пустом пространстве, контейнер содержит угол и текст, и, наконец, этот класс содержит контейнер!
Что мне нужно сделать?
Мне нужно извлечь событие mouseevent.rollover / rollout из угла.
А что не так?
1. Когда я помещаю маску на контейнер (container.rawchildren.addchildren + container.mask = mask) и drophadowfilter на контейнер (container.filters = [glow]),Я не могу обнаружить события мыши.
2. Когда я помещаю маску на промопанель (this.rawchildren.addchildren + this.mask = mask) и фильтр drophadowfilter на промопанель (this.filters = [glow]), я не могуобнаружение событий мыши.
3. Когда я помещаю маску в компонент, а фильтр - в другой, он тоже не работает.
4. Если я удаляю маску ИЛИ фильтр, она работает !!Но мне нужны они оба ...
Итак, у кого-нибудь есть идея, как заставить это работать?Я пытался найти проблемы с фильтрами, масками и событиями мыши, но не нашел ничего, что могло бы пролить свет на эту проблему ...
Что-нибудь было бы полезно и не стесняйтесь задавать вопросы, если что-то недостаточно ясно,
Спасибо!
С уважением,
BS_C3