Actionscript 3 在另一个精灵上添加透明精灵

Actionscript 3 在另一个精灵上添加透明精灵,actionscript-3,flash,Actionscript 3,Flash,我需要在另一个雪碧上放置一个透明雪碧。叠加的精灵将接收一些鼠标事件。当用户将鼠标移动到上部精灵上时,将绘制一条曲线。经过处理后,它将在基础精灵上绘制(并在上部擦除) 我现在的想法是放置精灵,绘制一个大小等于精灵大小的矩形,并将alpha设置为0 问题有点大:也许提议的解决方案不是最好的。有没有更好的方法来设置宽度和高度(据我所知,Sprite.width=w;不会有帮助) 提前谢谢你 您不能直接设置尺寸,而可以在该精灵上绘制。所以你可以这样做: graphics.beginFill(0,0);

我需要在另一个雪碧上放置一个透明雪碧。叠加的精灵将接收一些鼠标事件。当用户将鼠标移动到上部精灵上时,将绘制一条曲线。经过处理后,它将在基础精灵上绘制(并在上部擦除)

我现在的想法是放置精灵,绘制一个大小等于精灵大小的矩形,并将alpha设置为0

问题有点大:也许提议的解决方案不是最好的。有没有更好的方法来设置宽度和高度(据我所知,
Sprite.width=w;
不会有帮助)


提前谢谢你

您不能直接设置尺寸,而可以在该精灵上绘制。所以你可以这样做:

graphics.beginFill(0,0); // zero alpha fill
graphics.lineStyle(0,0,0); // invisible lines
graphics.drawRect(0,0,width,height);
graphics.endFill();
这样,你的精灵可以让它的alpha保持在1,而不隐藏任何它的孩子。然后,无论您决定在该精灵中绘制什么样的曲线,都可以通过graphics.moveTo和graphics.lineTo在子图形对象中绘制

更新:根据下面的评论,将alpha设置为0对更新的Flash player版本不起作用,因此alpha应该设置为非零,以便事件在重叠的精灵上注册

graphics.beginFill(0x808080,0.01); // almost zero alpha fill

您不能直接设置尺寸,而可以在该精灵上绘制。所以你可以这样做:

graphics.beginFill(0,0); // zero alpha fill
graphics.lineStyle(0,0,0); // invisible lines
graphics.drawRect(0,0,width,height);
graphics.endFill();
这样,你的精灵可以让它的alpha保持在1,而不隐藏任何它的孩子。然后,无论您决定在该精灵中绘制什么样的曲线,都可以通过graphics.moveTo和graphics.lineTo在子图形对象中绘制

更新:根据下面的评论,将alpha设置为0对更新的Flash player版本不起作用,因此alpha应该设置为非零,以便事件在重叠的精灵上注册

graphics.beginFill(0x808080,0.01); // almost zero alpha fill

为什么你不能把这个鼠标事件设置在精灵本身上?好吧,这对我来说是不可能的。我更新了这个问题:当用户将鼠标移动到上方精灵上时,将绘制一条曲线。经过处理后,它将在基础精灵上绘制(并在上面擦除)。您所做的是正确的。无法设置精灵的宽度或高度。它采用内容的边框的尺寸。为什么你不能在精灵本身上设置这个鼠标事件呢?嗯,这对我来说是不可能的。我更新了这个问题:当用户将鼠标移动到上方精灵上时,将绘制一条曲线。经过处理后,它将在基础精灵上绘制(并在上面擦除)。您所做的是正确的。无法设置精灵的宽度或高度。它取内容的边框的尺寸,这就是我所说的:我现在的想法是放置精灵,画一个大小等于精灵大小的矩形,并将alpha设置为0。无论如何,谢谢你!不,还有。使用这种方法,您可以在精灵上绘制更多的东西,这将不是完全透明的。比如说,你的精灵体内有一个移动的形状。使用您的方法(将alpha设置为0),该形状也将不可见,使用此方法,只有在精灵中绘制的矩形将不可见,其他任何形状都不可见。无论如何,如果你只需要一个能对鼠标事件做出反应的矩形,你可以使用任何一种方法。检查以下内容以获取参考:(这不符合前面的评论,很抱歉重复发布)你知道为什么将Beginull设置为alpha 0时,我不会在该精灵上触发触摸事件吗/我最后得到的结果是-alpha到0.01,这使得它基本上是透明的,但仍然可以点击。我想新的flash与此有关,是的,正如我的同事们都告诉我的,“我以前做过,它一定能工作”。或者这与我也将window和chrome swt设置为transparent/none有关。基本上,我想在你根本不知道空气在流动的时候触发事件…:)不管怎样,现在解决了。谢谢这就是我所说的:我现在的想法是放置精灵,画一个大小等于精灵大小的矩形,然后将alpha设置为0。无论如何,谢谢你!不,还有。使用这种方法,您可以在精灵上绘制更多的东西,这将不是完全透明的。比如说,你的精灵体内有一个移动的形状。使用您的方法(将alpha设置为0),该形状也将不可见,使用此方法,只有在精灵中绘制的矩形将不可见,其他任何形状都不可见。无论如何,如果你只需要一个能对鼠标事件做出反应的矩形,你可以使用任何一种方法。检查以下内容以获取参考:(这不符合前面的评论,很抱歉重复发布)你知道为什么将Beginull设置为alpha 0时,我不会在该精灵上触发触摸事件吗/我最后得到的结果是-alpha到0.01,这使得它基本上是透明的,但仍然可以点击。我想新的flash与此有关,是的,正如我的同事们都告诉我的,“我以前做过,它一定能工作”。或者这与我也将window和chrome swt设置为transparent/none有关。基本上,我想在你根本不知道空气在流动的时候触发事件…:)不管怎样,现在解决了。谢谢