0

更新:这不是一个实际问题。事实证明,正在创建另一个 Sprite 并将其设置为 alpha=0,它恰好位于与 SimpleButton 高度相同的 Y 位置。这阻止了与按钮的交互。谢谢你们的想法。我正在结束这个问题。


我有一个 SimpleButton,我将其放置在舞台上。当我将它设置为 Y 位置时,我正在用它做各种事情,它会破坏/改变 hitArea。

var playUp:Bitmap = getBitmap('play_up');
var playDown:Bitmap = getBitmap('play_down');

var Y:Number = 100;

_playButton = new SimpleButton(playDown, playUp, playDown, playDown);
_playButton.addEventListener(MouseEvent.CLICK, playClick);
_playButton.x = (640 / 2) - (_playButton.width / 2);
_playButton.y = Y;
_playButton.name = "playButton";
var shadow:DropShadowFilter = new DropShadowFilter();
shadow.distance = 5;
shadow.angle = 25;
shadow.alpha = 0.5;
shadow.blurX = 8;
shadow.blurY = 8;
_playButton.filters = [shadow];
addChild(_playButton);

如果我删除该_playButton.y = Y;按钮工作正常的行,它的命中区域会覆盖整个按钮。
如果我设置var Y:Number = playDown.height;了,那么我根本无法翻转或单击按钮。
如果我设置var Y:Number = playDown.height - 10;然后只有按钮的顶部 10px 处于活动状态,我可以单击并翻转顶部 10px。

我尝试将按钮包装在另一个 Sprite 中并移动包含的 sprite,但它会导致完全相同的行为。

var playUp:Bitmap = getBitmap('play_up');
var playDown:Bitmap = getBitmap('play_down');

var Y:Number = 100;

_playButton = new SimpleButton(playDown, playUp, playDown, playDown);
_playButton.addEventListener(MouseEvent.CLICK, playClick);
_playButton.x = (640 / 2) - (_playButton.width / 2);
_playButton.y = Y;
_playButton.name = "playButton";
var shadow:DropShadowFilter = new DropShadowFilter();
shadow.distance = 5;
shadow.angle = 25;
shadow.alpha = 0.5;
shadow.blurX = 8;
shadow.blurY = 8;
_playButton.filters = [shadow];

var holder:Sprite = new Sprite();
holder.addChild(_playButton);
addChild(holder);
4

2 回答 2

1

使用库中为 Actionscript 导出的两个图像,这可以正常工作:

var playUpBMPD:BitmapData = new PlayUp(200, 40);
var playDownBMPD:BitmapData = new PlayDown(200, 40);
var playUp:Bitmap = new Bitmap(playUpBMPD);
var playDown:Bitmap = new Bitmap(playDownBMPD);

var Y:Number = 100;

var _playButton:SimpleButton = new SimpleButton(playDown, playUp, playDown, playDown);
_playButton.x = (640 / 2) - (_playButton.width / 2);
_playButton.y = Y;
_playButton.name = "playButton";
var shadow:DropShadowFilter = new DropShadowFilter();
shadow.distance = 5;
shadow.angle = 25;
shadow.alpha = 0.5;
shadow.blurX = 8;
shadow.blurY = 8;
_playButton.filters = [shadow];

addChild(_playButton);

getBitmap 是做什么的?此外,Y 是否在您的代码中的其他任何地方使用。

于 2010-02-09T18:20:47.130 回答
1

我以前没有使用过 SimpleButton,但这是我从大约 10 分钟的 Google 搜索中收集到的信息:每次移动按钮时,您可能需要手动更改按钮的 hitState、upState、downState 等的位置。在下面的示例中,按钮的 hitState 等看起来像是在舞台上的特定位置绘制的。

http://weblog.cahlan.com/2006/07/simplebutton-class-in-actionscript-30.html

甚至在 SimpleButton 参考页面的示例中,看起来他们实际上是在设置 hitState 的位置:

http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/display/SimpleButton.html

(如果我完全错了,请道歉。)

于 2010-02-09T18:22:12.507 回答