Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Не работает MouseEvent под маской (http://www.flasher.ru/forum/showthread.php?t=139370)

a1. 29.04.2010 12:16

Не работает MouseEvent под маской
 
Перерыл все интернеты - проблема есть, решения не нашёл, подскажите пожалуйста.
Пытаюсь вызвать MouseEvent у спрайта, который находится под маской - ничего не стреляет, код прилагаю:
Код AS3:

                        with (sliderMask) {
                                graphics.beginFill(0x00ccff);
                                graphics.drawRect(0, 0, sliderWidth, 20);
                                y = -10;
                                graphics.endFill();
                                mouseEnabled = false;
                        }
                        var bg:Sprite = new Sprite();
                        with (bg) {
                                graphics.beginFill(0x000000, 0);
                                graphics.drawRect(0, 0, sliderWidth, 20);
                                graphics.endFill();
                        }
                        with (loadedSlider) {
                                addChild(bg);
                                bg.y = -10;
                                graphics.beginFill(0x00ccff, .5);
                                graphics.drawRect(0, 0, sliderWidth, sliderHeight);
                                graphics.endFill();
                                buttonMode = true;
                                mouseChildren = false;
                                x = -width;
                                addEventListener(MouseEvent.ROLL_OVER, function (e:MouseEvent) { trace('it works'); } );
                        }
                        with (slider) {
                                addChild(sliderMask);
                                addChild(loadedSlider);
                                mask = sliderMask;
                        }

buttonMode не работает, MouseEvent не выстреливает:wacko:
Помогите, уже 2 часа над этим бьюсь.

mickfallout 29.04.2010 13:10

Код AS3:

                        var sprite:Sprite = new Sprite();
                        var maskSprite:Sprite = new Sprite();
                        addChild(sprite);
                        //addChild(maskSprite);
                        sprite.graphics.beginFill(0x333333, 1);
                        sprite.graphics.drawEllipse(0, 100, 100, 150);
                        sprite.graphics.endFill();
                        maskSprite.graphics.beginFill(0x003300, 0.5);
                        maskSprite.graphics.drawEllipse(50, 50, 50, 200);
                        maskSprite.graphics.endFill();
                        sprite.mask = maskSprite;
                        sprite.addEventListener(MouseEvent.CLICK, trace);//работает.

У меня работает. Что я делаю не так? :)

Добавлено через 3 минуты
P.S. был бы рад разобраться в Вашем коде и найти ошибку, но его читать сложно.
Цитата:

0x00ccff
надо писать 0x00CCFF
Код AS3:

function (e:MouseEvent) { trace('it works'); }

Не используйте анонимные функции.
Код AS3:

with (sliderMask) {

по возможности избегайте использования with.

a1. 29.04.2010 13:21

Анонимную ф-ю заюзал только для отлова эвента.
Ошибку только что отловил - назвал мувик slider, а так нельзя было.
Может кому пригодится.

Для поисковиков:
Не работает клик под маской.
Не работает mouseevent с маской.
Не кликает на маску.

mickfallout 29.04.2010 13:24

Цитата:

назвал мувик slider, а так нельзя было.
Почему? А у меня можно.
Код AS3:

                        var slider:MovieClip = new MovieClip();
                        var sprite:Sprite = new Sprite();
                        var maskSprite:Sprite = new Sprite();
                        slider.addChild(sprite);
                        addChild(slider);
                        //addChild(maskSprite);
                        sprite.graphics.beginFill(0x333333, 1);
                        sprite.graphics.drawEllipse(0, 100, 100, 150);
                        sprite.graphics.endFill();
                        maskSprite.graphics.beginFill(0x003300, 0.5);
                        maskSprite.graphics.drawEllipse(50, 50, 50, 200);
                        maskSprite.graphics.endFill();
                        sprite.mask = maskSprite;
                        sprite.addEventListener(MouseEvent.CLICK, trace);//работает.


a1. 29.04.2010 13:29

попробуйте назвать так свойство класса.
у меня на сцене мувик так назывался. ошибок не выдавал, но и не работал.

mickfallout 29.04.2010 13:36

Цитата:

Сообщение от a1. (Сообщение 904747)
попробуйте назвать так свойство класса.
у меня на сцене мувик так назывался. ошибок не выдавал, но и не работал.

Код AS3:

        public class Main extends Sprite {
                private var slider:MovieClip = new MovieClip();
                public function Main()
                {
                        super();
                        var sprite:Sprite = new Sprite();
                        var maskSprite:Sprite = new Sprite();
                        slider.addChild(sprite);
                        addChild(slider);
                        //addChild(maskSprite);
                        sprite.graphics.beginFill(0x333333, 1);
                        sprite.graphics.drawEllipse(0, 100, 100, 150);
                        sprite.graphics.endFill();
                        maskSprite.graphics.beginFill(0x003300, 0.5);
                        maskSprite.graphics.drawEllipse(50, 50, 50, 200);
                        maskSprite.graphics.endFill();
                        sprite.mask = maskSprite;
                        sprite.addEventListener(MouseEvent.CLICK, trace);//работает.
                }
        }

Может быть проблема в with?

a1. 29.04.2010 13:39

пробовал и без, тоже не работало. часа два на пустяк этот потратил.

mickfallout 29.04.2010 13:42

Мда, интересно вышло. Непонятно что было, непонятно почему прошло. И такую тему Вы хотите чтоб поисковики находили?)

a1. 29.04.2010 13:48

у кого проблемы с маусэвентом под маской. в гугле находится пара тем без ответа и платные ответы по этому запросу. может кому пригодится.

mickfallout 29.04.2010 13:53

Что пригодится? Непонятное шаманство с именем клипа, которое 99% что помогает только Вам? Сомневаюсь. А гугл не находит никаких тем с проблемами "с маусэвентом под маской" потому что их нет. Вы же не можете привести пример нормального кода в котором эта проблема будет, а я привел пример показывающий что никакой проблемы нет. Конкретно Ваша проблема может быть например в том что Вы просто не заметили вывод трассировки(я утрирую конечно =) ).


Часовой пояс GMT +4, время: 12:46.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.