user3242464
user3242464

Reputation: 1

can't add an event listener to a mask AS3 Flash

New to AS3. Trying to do a simple mask exercise, but for some reason when I add event listener to 'myMask', the event doesn't trigger. I tried turning both 'myMask' and 'theMaskee' as sprites and movie clips, but no luck. It does trigger if I don't assign 'myMask' as a mask to 'theMaskee'. It also works if I add the listener directly to the stage, but eventually I want to put many things on the stage, and I'm afraid there will be conflict if it has to listen to the same event but perform several functions... especially if I need them one at a time. I looked through textbooks and the API and mask-related questions other people had, but I can't find anything relating to my specific situation. (this code is written directly in the timeline)

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);
}

Thank you for taking the time

Upvotes: 0

Views: 213

Answers (2)

shinobi
shinobi

Reputation: 2517

Do this:

theMaskee.addEventListener(MouseEvent.CLICK, myMaskClick);

And it should work. :)

Masks dont take any mouse/keyboard events as it is just a mask and not actually present in the display list.

Upvotes: 0

mika
mika

Reputation: 1451

You need to add the listener to theMaskee instead, not your mask. The mask in AS3 does not implement IEventDispatcher therefore can not catch and dispatch events.

Upvotes: 1

Related Questions