在其中添加了一些子:Loader
个实例后,我遇到了点击事件的困难。
var wr:Sprite=new Sprite();
stage.addChild(wr);
wr.graphics.drawRect(0,0,stage.width,stage.height);
wr.width=stage.width;
wr.height=stage.height;
wr.addEventListener('click',function():void{
log('CLICKED!');
});
wr.addChild(el.sprite);
问题是点击事件仅在我点击el.sprite
时才有效,但是当我点击舞台上的任何地方时,它都无效(不会触发点击事件)。
为什么会这样做?我没有在整个舞台上拉伸wr
层吗?
我在flash DisplayObject列表机制中缺少什么或不理解?
我正在尝试将el.sprite(暂停按钮)放在wr(暂停层)的中心,并在整个wr层(整个舞台)上应用click事件。
我正在开发视频播放器。 :)
答案 0 :(得分:1)
drawRect实际上并没有绘制任何东西,因为你没有设置填充。
在drawRect:
之前添加wr.graphics.beginFill(0xFFFFFF, 0);
这会将填充设置为0 alpha白色(如果您希望它可见,请删除第二个参数)。现在,当你调用drawRect时,它可以绘制一些内容。
答案 1 :(得分:1)
Flash API中的Graphics对象本质上是一个有限状态机,这意味着你需要(1)告诉它开始,(2)给它一个或多个顺序命令,然后(3)告诉它停止
在这种情况下,您缺少的键是begin和end命令。最简单的是beginFill()和endFill()。您可以在AS3 documentation on Graphics。
中查看完整列表beginFill()接受两个参数 - 第一个是填充的颜色,第二个是填充的alpha。因此,如果你想要填充是不可见的,给它你想要的任何颜色(0很好),但也给它一个0的alpha。
另外,作为旁注,您不需要手动设置名为“wr”的对象的宽度和高度。绘制矩形后,其宽度和高度属性将反映矩形的大小。