Как создать многоразовую кнопку в AS3? - PullRequest
1 голос
/ 17 августа 2010

Я пытаюсь сделать код ниже для повторного использования. Мне нужно несколько кнопок переключения в моем проекте Flash. Прямо сейчас код ниже работает на одну кнопку. Если я продолжу и создаю больше кнопок и следую приведенному ниже формату, мне нужно будет создать отдельные функции для каждой кнопки.

Я хотел бы поместить повторно используемый код в отдельный файл ActionScript, а не в FLA-файл. Я пытаюсь поместить rolloverToggle, rolloverToggle и toggleClick в класс, который я создаю.

// ///////////////////////////////////////////////////////////////////////

// ------- Need to make this code reusable -------

// ///////////////////////////////////////////////////////////////////////

// code on Frame 1

toggleButton.addEventListener(MouseEvent.MOUSE_OVER, rolloverToggle);
toggleButton.addEventListener(MouseEvent.MOUSE_OUT, rolloutToggle);
toggleButton.addEventListener(MouseEvent.CLICK, toggleClick);
toggleButton.buttonState = "off";

// function rolloverToggle
function rolloverToggle(event:MouseEvent) {
    toggleButton.gotoAndStop(toggleButton.buttonState+" over");
}

// function rolloutToggle
function rolloutToggle(event:MouseEvent) {
    toggleButton.gotoAndStop(toggleButton.buttonState);
}

// function toggleClick
function toggleClick(event:MouseEvent) {
    if (toggleButton.buttonState == "on") {
            toggleButton.buttonState = "off";
            toggleButton.gotoAndStop(1);
        } else {
            toggleButton.buttonState = "on";    
        }
}

1 Ответ

1 голос
/ 17 августа 2010

Это довольно просто. Создайте новый общий класс кнопок и добавьте в него всех своих слушателей событий. Для каждой новой кнопки, которую вы хотите создать, просто расширьте свою общую кнопку и введите требуемый код в обработчики событий .:

class GenericToggleButton extends Button
{
    public GenericToggleButton()
    {
        this.addEventListener(MouseEvent.MOUSE_OVER, rolloverToggle);
        this.addEventListener(MouseEvent.MOUSE_OUT, rolloutToggle);
        this.addEventListener(MouseEvent.MOUSE_CLICK, toggleClick);
    }

    protected function rolloverToggle(event:MouseEvent):void
    {
         this.gotoAndStop(this.buttonState+" over");
    }

    protected function rolloutToggle(event:MouseEvent):void
    {
        this.gotoAndStop(this.buttonState);
    }

    protected function toggleClick(event:MouseEvent):void
    {
        if (this.buttonState == "on") {
            this.buttonState = "off";
            this.gotoAndStop(1);
        } else { 
            this.buttonState = "on";
        }
    }
}

Теперь просто расширьте этот класс и добавьте свою функциональность.

class NewButton extends GenericToggleButton
{
    public NewButton()
    {
        super();
    }

    override protected function toggleClick(event:MouseEvent):void
    { 
        super.toggleClick(event);

        // do magic for this button
    }

    // ETC
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...