Изменение SimpleButton.y не отображается для перемещения области нажатия кнопки

ОБНОВЛЕНИЕ: это не актуальная проблема. Оказывается, что был еще один созданный Sprite и установлен в alpha=0, который просто оказался в той же позиции Y, что и высота SimpleButton. Это мешало взаимодействию с кнопкой. Спасибо ребятам за ваши мысли. Я закрываю вопрос.


У меня есть 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 и переместить содержащий спрайт, но это приводит к точно такому же поведению.

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

2 ответа

С двумя изображениями, экспортированными для 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 используется где-либо еще в вашем коде.

Раньше я не использовал 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

(Ж / извинения, если я совершенно не прав.)

Другие вопросы по тегам