无法向掩码AS3 Flash添加事件侦听器

时间:2014-01-28 00:21:24

标签: actionscript-3 flash mask addeventlistener

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

感谢您抽出时间

2 个答案:

答案 0 :(得分:1)

您需要将侦听器添加到马斯卡,而不是掩码。 AS3中的掩码不实现IEventDispatcher,因此无法捕获和分派事件。

答案 1 :(得分:0)

这样做:

theMaskee.addEventListener(MouseEvent.CLICK, myMaskClick);

它应该有效。 :)

Masks不接受任何鼠标/键盘事件,因为它只是一个掩码而不是实际出现在显示列表中。