Изменение 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
(Ж / извинения, если я совершенно не прав.)