1

: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(pause button) 定位在 wr(pause layer) 的中心,并在整个 wr 层(整个舞台) 上应用 click 事件。

我正在开发视频播放器。:)

4

2 回答 2

1

Flash API 中的 Graphics 对象本质上是一个有限状态机,这意味着您需要 (1) 告诉它开始,(2) 给它一个或多个顺序命令,然后 (3) 告诉它停止。

在这种情况下,您缺少的关键是 begin 和 end 命令。其中最简单的是 beginFill() 和 endFill()。您可以在有关图形的 AS3 文档中查看完整列表。

beginFill() 有两个参数——第一个是填充的颜色,第二个是填充的 alpha。所以如果你想让填充不可见,给它你想要的任何颜色(0 很好),但也给它一个 0 的 alpha。

另外,作为旁注,您不需要手动设置您命名为“wr”的对象的宽度和高度。绘制矩形后,其宽度和高度属性将反映矩形的大小。

于 2013-03-08T17:11:51.330 回答
1

drawRect 实际上并没有绘制任何东西,因为您没有设置填充。

在drawRect之前添加:

wr.graphics.beginFill(0xFFFFFF, 0);

这会将填充设置为 0 alpha 白色(如果您希望它可见,请删除第二个参数)。现在,当您调用 drawRect 时,它可以绘制一些东西。

于 2013-03-08T17:01:35.160 回答