можно ли скрыть стандартную серую круглую рамку компонента BUTTON в flex 4.5?

У меня есть набор кнопок, которые я добавил на сцену своего гибкого мобильного приложения... У меня есть прозрачные значки PNG, установленные на этих кнопках с использованием параметра «значок», но мне было интересно, есть ли способ скрыть серое поле стандартный элемент кнопки? так что моя кнопка будет отображаться только как значок, который я установил на кнопке... или это единственный способ добиться этого, чтобы скрыть кнопку и создать стиль (который я еще не полностью понял.

Заранее спасибо.


person tamak    schedule 08.03.2013    source источник
comment
с кнопкой искры; создание пользовательского скина было бы правильным способом сделать это. Просто скопируйте скин кнопки и начните комментировать код, пока не получите то, что хотите. Удаление не так сложно.   -  person JeffryHouser    schedule 08.03.2013


Ответы (1)


Есть множество способов сделать это. Как сказал Flextras, вы можете просто удалить все, что рисует обычный Spark ButtonSkin. Однако это не так просто, потому что, если вы посмотрите на класс ButtonSkin, у него нет объекта BitmapImage, который кнопка использует для отображения вашего значка. Этот BitmapImage на самом деле определен в базовом классе для ButtonSkin (то есть SparkButtonSkin).

К счастью, это достаточно просто исправить. Ниже приведен скин, который расширяет базовый класс и добавляет обратно BitmapImage. Причина, по которой я добавляю его обратно,

  • вы не можете использовать базовый класс сам по себе (он не определяет требуемые состояния и выдает ошибку во время выполнения
  • вы, вероятно, хотите добавить некоторую интерактивность к своей кнопке - при наведении мыши, наведении мыши и т. д. В моем простом примере ниже эта интерактивность довольно дрянная, я оставлю вам решать, что должно происходить при наведении мыши, мыши вниз и тд...

Скин, расширяющий SparkButtonSkin:

<?xml version="1.0" encoding="utf-8"?>
<s:SparkButtonSkin xmlns:fx="http://ns.adobe.com/mxml/2009" 
             xmlns:s="library://ns.adobe.com/flex/spark" 
             xmlns:fb="http://ns.adobe.com/flashbuilder/2009"
             minWidth="21" minHeight="21" 
             alpha.disabled="0.5">

    <s:states>
        <s:State name="up" />
        <s:State name="over" />
        <s:State name="down" />
        <s:State name="disabled" />
    </s:states>

    <s:BitmapImage id="iconDisplay" alpha=".75" alpha.over="1" alpha.down=".5" alpha.disabled=".25" />
</s:SparkButtonSkin>

Другой способ сделать это — вообще не использовать кнопку. Вы можете сделать гораздо более легкую версию, которая ведет себя как простая кнопка, используя объект BitmapImage для вашей кнопки. Вам нужно будет добавить некоторую интерактивность (например, заменить значок, который он использует для нажатия мыши и т. Д.).

<s:BitmapImage source="path/to/my/icon" click="clickHandler()" />
person Sunil D.    schedule 08.03.2013
comment
- большое спасибо... Я решил использовать изображение, которое ведет себя как кнопка. тем не менее, я все еще буду освежать скиннинг, поэтому я знаю, как справиться с этими сценариями. этот обходной путь пригодится, хотя. - person tamak; 09.03.2013