Скинирование кнопки в Flex через состояния документа - PullRequest
0 голосов
/ 21 марта 2012

Я наткнулся на этот кусок кода, и он меня заинтриговал. Я не видел подобную шкуру раньше. Я хотел бы знать, есть ли какие-либо недостатки и альтернативы этому. Например, это интенсивный процессор, как вызовы addChild?

<s:Button id="loginoutBtn" right="10" top="10" label="Log out" label.loggedout="Log in" skinClass.loggedin="skins.FBLogoutButtonSkin" skinClass.loggedout="skins.FBLoginButtonSkin" click.loggedin="logout()" click.loggedout="login()"/>

Фон: кнопка выше является частью примера входа в систему. Я много работал со скинами, но процесс почти всегда приводил к появлению нового компонента с новым скином. Кроме того, ToggleButton, но хороший вариант использования для вышеупомянутого?

Лучший вопрос был бы, если бы у вас была кнопка входа в систему и выхода из нее в месте x y, как бы вы это сделали?

Я думаю, что в этом случае у меня будет две кнопки для соответствующих скинов и includeIn для каждой, так что

<s:Button id="loginBtn" includeIn="loggedIn" right="10" top="10" skinClass="skins.FBLoginButtonSkin" click="login()"/>

<s:Button id="logoutBtn" includeIn="loggedOut" right="10" top="10" skinClass="skins.FBLogoutButtonSkin" click="logout()" />

Ответы [ 2 ]

1 голос
/ 21 марта 2012

В этом конкретном случае я бы выбрал ToggleButton с пользовательским скином.

Почему?

  • Требуется только один пользовательский скин вместо двух
  • Очистителькод в компоненте host: не требуется две кнопки или набор атрибутов, связанных с состоянием;просто 'selected' должен быть привязан к состоянию.
  • Так как вы спросили: возможно, менее ресурсоемкий вариант (потому что A. есть только одна кнопка, а B. только одна обложка).Но, честно говоря, я думаю, что это все равно не имеет значения: производительность одной кнопки действительно не имеет значения.

.

<s:ToggleButton id="loginBtn" selected.loggedin="true" selected.loggedout="false"
                skinClass="skins.FBLoginToggleButtonSkin" 
                click="logInOrOut(loginBtn.selected)" />

Примечание: две меткибудет определен внутри пользовательского ToggleButtonSkin:

<s:Label text="log in" text.selectedStates="log out" />
1 голос
/ 21 марта 2012

Вы можете сделать две кнопки или одну кнопку и изменить свойства.Чтобы увидеть разницу в производительности, вы можете сохранить сгенерированный код AS3.См. Эту ссылку для получения подробной информации.

http://saravananrk.wordpress.com/2008/05/26/keep-generated-actionscript-in-flex/

Оба подхода действительны, но я бы предпочел две разные кнопки, поскольку они, вероятно, будут изменены в будущем и станут все более и более разными.Нет особого смысла иметь одну кнопку, все свойства которой основаны на состоянии.Также может иметь две кнопки, это сохраняет код в чистоте.

...