не могу добавить прослушиватель событий в маску AS3 Flash

Новое в AS3. Пытаюсь выполнить простое упражнение с маской, но по какой-то причине, когда я добавляю прослушиватель событий в «myMask», событие не срабатывает. Я пытался превратить «myMask» и «theMaskee» в спрайты и видеоклипы, но безуспешно. Это сработает, если я не назначу «myMask» в качестве маски для «theMaskee». Это также работает, если я добавляю слушателя непосредственно на сцену, но в конечном итоге я хочу разместить на сцене много вещей, и я боюсь, что будет конфликт, если он должен слушать одно и то же событие, но выполнять несколько функций... особенно, если они мне нужны по одному. Я просмотрел учебники и вопросы, связанные с API и масками, которые были у других людей, но я не могу найти ничего, относящегося к моей конкретной ситуации. (этот код прописывается прямо на таймлайне)

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.sampler.NewObjectSample;
import flash.events.MouseEvent;


var temp = new backGround();
var myBG:Bitmap = new Bitmap(temp);
temp = new splashMaskee();
var theMaskee:Bitmap = new Bitmap(temp);


var myMask = new MovieClip();
myMask.graphics.beginFill(0x000000, 0);
myMask.graphics.drawRect(0, 0, 800, 600);
myMask.graphics.endFill();
myMask.cacheAsBitmap = true;
theMaskee.cacheAsBitmap = true;

theMaskee.mask = myMask;
addChild(myBG);
addChild(theMaskee);
addChild(myMask);

myMask.addEventListener(MouseEvent.CLICK, myMaskClick);
//stage.addEventListener(MouseEvent.CLICK, myMaskClick);

function myMaskClick(e:MouseEvent):void
{
    trace("click");
    myMask.graphics.beginFill(0x000000, 1);
    myMask.graphics.drawCircle(mouseX, mouseY, 30);
}

Спасибо, что нашли время


person user3242464    schedule 28.01.2014    source источник


Ответы (2)


Вместо этого вам нужно добавить слушателя в theMaskee, а не в вашу маску. Маска в AS3 не реализует IEventDispatcher, поэтому не может перехватывать и отправлять события.

person mika    schedule 28.01.2014

Сделай это:

theMaskee.addEventListener(MouseEvent.CLICK, myMaskClick);

И это должно работать. :)

Маски не принимают никаких событий мыши/клавиатуры, так как это просто маска, которая фактически не присутствует в списке отображения.

person shinobi    schedule 28.01.2014