Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Расширение класса кнопки (http://www.flasher.ru/forum/showthread.php?t=168602)

stantler 22.09.2011 15:42

Расширение класса кнопки
 
Здравствуйте. Я работаю со scaleform, в нем стандартный класс кнопки уже расширен. Но мне нужно расширить и его еще (изменять нельзя ибо используется еще много где), чтобы добавить свойств и стилей кнопке. Кому интересно - линк, вторая вкладка.
Получается такой вариант: FlashButton <+ ScaleformButton <+ MyButton

В общем там есть свойство selected и приватный массив префиксов для приватного класса setState.
Т.е. setSate вызывается при событиях up\down\release\out и т.д.
Выглядит все так:
Код AS1/AS2:

/**
 * Set the current visible state.  The state is determined by getting a list of possible frame names based on the state, and applying a possible prefixes depending on the button state (eg, selected).  Flash and GFx will go to the last existing frame called, so we can use "fall-back" frames.
 * @param state The name of the new state
 * @see #getStatePrefixes
 * @see #stateMap
 */

private function setState(state:String):Void {
  this.state = state;
  var prefixes:Array = getStatePrefixes();
  var states:Array = stateMap[state];
  if (states == null || states.length == 0) { return; }
  do {
      var prefix:String = prefixes.pop().toString();
      for (var i:Number=states.length-1; i>=0; i--) {
        gotoAndPlay(prefix+states[i]);
      }
  } while (prefixes.length > 0);
  updateAfterStateChange();
}
/**
 * Get a list of frame label prefixes for state management.  Prefixes are applied in the setState method.
 * @see #setState
 */

private function getStatePrefixes():Array {
  return (_selected) ? ["selected_",""] : [""];
}

А в кнопке стили заданы уже как "out\up...", "selected_out\up...".

Отсюда вопрос: как мне лучше переопределить функцию getStatePrefixes?
Вариант:
Код AS1/AS2:

private override function getStatePrefixes():Array {
                if (_notice) return ["notice_",""];
                else return super.getStatePrefixes();
        }

Но встает вопрос, будет ли класс setState из ScaleformButton сначала обращаться к моему getStatePrefixes(), после чего уже к Scaleform'овскому?


Часовой пояс GMT +4, время: 14:45.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.