Flash CS5中的自定义皮肤按钮

时间:2011-08-04 07:34:33

标签: flash button skinning skin

早上好

我不知道为什么这不简单!我们走了:

在我的纯Flash CS5 AS3项目中,我需要制作一些按钮。许多不同种类的按钮,它们具有不同的皮肤组。完全不同。

因此,使用Button组件并更改Symbol中的皮肤是不够的,因为这会更改所有按钮。我需要很多不同的。

我们都知道如何重新设置核心Button组件,这样可以改变所有按钮。

有没有人知道如何对Button进行离散自定义,或类似的效果?

干杯

1 个答案:

答案 0 :(得分:0)

不是100%确定你的意思..如果你需要有多个不同的按钮,为什么你不能在UI中选择对象时使用上下文菜单中的转换为符号功能创建多个按钮?

如果您需要在这些按钮上维护某种类型的功能,那么我建议将所有这些功能封装到具有属性skin:SimpleButton的类中。你在这里可以做的是有一个皮肤的setter,它可以应用你的事件监听器或类似的东西:

public function set skin(btn:SimpleButton):void
{
    btn.addEventListener(MouseEvent.CLICK, _someFunc);
}

您真正需要做的就是为每个不同的按钮创建一些类,指定要在构造函数中使用的外观:

public function SomeButton()
{
    skin = new MyLibraryButton();
}

或者即时进行:

var button:MyButton = new MyButton();
button.skin = new MyLibraryButton();

这是你追求的吗?


以上是我在上面描述的更完整的例子:

package
{
    import flash.display.SimpleButton;
    import flash.events.MouseEvent;

    public class MyButton extends Object
    {
        // Properties
        private var _skin:SimpleButton;

        /**
         * Defines the button skin to use
         * @param btn Reference to an instance of SimpleButton
         */
        public function set skin(btn:SimpleButton):void
        {
            _skin = btn;

            btn.addEventListener(MouseEvent.CLICK, _click);
        }

        /**
         * Called when the skin (button) has been clicked
         * @param e MouseEvent.CLICK
         */
        private function _click(e:MouseEvent):void
        {
            trace("Button was clicked");
        }

        /**
         * Getters
         */
        public function get skin():SimpleButton{ return _skin; }
    }
}