AS3: Создание SimpleButton из библиотечных спрайтов: возможно? - PullRequest
0 голосов
/ 16 февраля 2011

Я работаю над небольшим проектом в AS3, и мне нужно сделать несколько кнопок интерфейса.Сначала я использовал их как отдельные классы, но потом понял, что это, вероятно, излишне, и, кроме того, придумал способ упростить вызовы событий, сделав их кнопками и назначив отправку событий их родителям.

ANYWAY,

Я пытался переделать их с помощью класса SimpleButton, но я не могу понять, как придать кнопкам какой-либо дизайн.Каждый учебник в Интернете использует SimpleButton, чтобы создавать только самые простые графические элементы ActionScript, фактически рисуя их с помощью кода (почему кто-то захочет сделать это вне моего понимания), и мою попытку назначить элемент библиотеки для upState:

_deletebutton = new SimpleButton();
_deletebutton.upState = mc_deleteButtonUp; <--- exists in my library

ничего не делает.

Документы Adobe говорят, что различные состояния принимают объекты DisplayObject, что означает, что они принимают спрайты и мувиклипы, поэтому вы должны это сделать.Кто-нибудь знает как?

СПАСИБО

Ответы [ 3 ]

3 голосов
/ 16 февраля 2011

+ 1 Weltraumpirat пример в документе генерирует состояния по коду, но вы можете назначить любой displayObject для различных состояний кнопки.

var btn:SimpleButton = new SimpleButton();

btn.downState      = new clipFromLibDown();
btn.overState      = new clipFromLibOver();
btn.upState        = new clipFromLibUp();
btn.hitTestState   = new clipFromLibHit();
btn.useHandCursor  = true;

addChild( btn );

при условии, что у вас есть 4 состояния с именем: clipFromLibDown, clipFromLibOver... в вашей библиотеке это работает

1 голос
/ 17 февраля 2011

Возможно, вы не устанавливаете свойство hitTestState ваших экземпляров SimpleButton.Это свойство является DisplayObject, который определяет, куда пользователь должен переместить мышь, чтобы получить события мыши в SimpleButton.Вы никогда не увидите DisplayObject, для которого вы установили это.Я бы предложил использовать один из объектов DisplayObject, которые вы уже используете для другого состояния.

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/SimpleButton.html#hitTestState

Также вам нужно будет использовать новый оператор, как уже сказали weltraumpirat и nicoptere.1006 *

1 голос
/ 16 февраля 2011

Вам необходимо создать экземпляр из вашей библиотеки , чтобы использовать его с ActionScript. Для этого нажмите «Экспорт для ActionScript» и назначьте класс или базовый класс для mc_deleteButtonUp на панели свойств. Затем используйте оператор new с назначенным классом для его создания. Вы можете запустить свою кнопку с помощью примера из документации Adobe , а затем изменить его в соответствии с собственной программой.

...