我可以为按钮添加额外的帧吗?

时间:2013-11-12 15:24:19

标签: actionscript-3 flash button frames simplebutton

我是ActionScript3和Flash的新手。 我知道是否在按钮实例中(其中有Up,Over,Down和Clicked帧,相对于upState,overState和downState)可以添加其他帧以使用相同的方法调用。

我需要这样的东西:

if(...){
Button.upState = Button.MyOwnFrame;
}

提前致谢!

1 个答案:

答案 0 :(得分:0)

您可能需要查看SimpleButton课程,因为它允许您将任何DisplayObject分配到不同的州upStateoverStatedownState,和hitTestState

以下是Adobe API参考中的示例:

package {
    import flash.display.Sprite;

    public class SimpleButtonExample extends Sprite {
        public function SimpleButtonExample() {
            var button:CustomSimpleButton = new CustomSimpleButton();
            addChild(button);
        }
    }
}

import flash.display.DisplayObject;
import flash.display.Shape;
import flash.display.SimpleButton;

class CustomSimpleButton extends SimpleButton {
    private var upColor:uint   = 0xFFCC00;
    private var overColor:uint = 0xCCFF00;
    private var downColor:uint = 0x00CCFF;
    private var size:uint      = 80;

    public function CustomSimpleButton() {
        downState      = new ButtonDisplayState(downColor, size);
        overState      = new ButtonDisplayState(overColor, size);
        upState        = new ButtonDisplayState(upColor, size);
        hitTestState   = new ButtonDisplayState(upColor, size * 2);
        hitTestState.x = -(size / 4);
        hitTestState.y = hitTestState.x;
        useHandCursor  = true;
    }
}

class ButtonDisplayState extends Shape {
    private var bgColor:uint;
    private var size:uint;

    public function ButtonDisplayState(bgColor:uint, size:uint) {
        this.bgColor = bgColor;
        this.size    = size;
        draw();
    }

    private function draw():void {
        graphics.beginFill(bgColor);
        graphics.drawRect(0, 0, size, size);
        graphics.endFill();
    }
}