Гибкий мобильный скин, переопределяющий hostComponent родительского скина? - PullRequest
0 голосов
/ 10 февраля 2012

Проблема довольно проста, я расширяю Button для создания ImageButton, и расширяю ButtonSkin для создания ImageButtonSkin. Но когда я определяю hostComponent следующим образом:

public var hostComponent:ImageButton

Я получаю сообщение об ошибке, что существует конфликт с hostComponent: ButtonBase внутри ButttonSkinBase.

Как мне расширить скин и предоставить для него новый hostComponent?

1 Ответ

2 голосов
/ 10 февраля 2012

Как расширить скин и предоставить для него новый hostComponent?

Зачем это нужно?hostComponent - это ButtonBase, который расширяет ваш ImageButton.Зачем вам нужно менять тип hostComponent?Если вам нужно получить доступ к hostComponent как ImageButton, то вы можете привести его:

var myImageButton : ImageButton = hostComponent as ImageButton;

В комментариях к этому вопросу вы сказали:

Итак, вы можете расширитьСкин, но вы можете использовать его только для компонента, который указан родительским скином, удивительно.

Это не должно быть правдой вообще.Вы сами сказали, что ваш hostComponent имеет тип ButtonBase, но вы расширяете ButtonSkin.Согласно вашему заявлению, вы не сможете использовать ButtonSkin для компонента Button, только для компонента ButtonBase.Это неправда.

Я также добавлю одно пояснение к комментарию @ RIAstar о метаданных.Метаданные используются только для подсказок кода и проверки параметров MXML компилятором.Вы можете легко создать стиль без любого из них.Вам просто нужно установить значение с помощью метода setStyle:

myHostComponent.setStyle('myImageColor',0x000000);

И вы можете использовать его в скине так:

this.getStyle('myImageColor');

Я думаю - но это не такконечно - вы также можете установить стиль с помощью CSS, даже если метаданные не объявлены.С использованием компонента Spark lifeCycle должно быть вполне возможно установить стиль до того, как компонент инициализирует свои стили.

...