Динамически изменяемые кнопки в Flash

Начали реализовывать «активируемые» способности, для этого нужно чтобы кнопка в Flash приобретала «нажатый» дизайн при включенной способности.

Т.к. Button вроде как MovieClip – было решение, приаттачить (attachMovieClip) к нему рамку – чтобы было видно что кнопка «нажата».

Но это был неправильный подход, т.к. Button в Flash – это Object, а не MovieClip.

На умных форумах советовали вешать вручную обработчики на все комбинации (Up, Down, onRoll, onRollOut) и вручную переключать (gotoAndStop) на нужные фреймы (ну и естественно нарисовать состояние – нажатой кнопки, ну или использовать фрейм Down)

Но этот подход, тоже не устроил – как-то все вручную уж лучше написать свой класс, если уж все равно приходится вручную переставлять состояния.

Пошли другим путем.

function activate_button(btn,onoff)
{
var name_active="a_"+btn.toString();
if (btn._parent[name_active] !=undefined)
{
if (onoff == 1) return;
btn._parent[name_active].removeMovieClip();
return 0;
}
if (onoff == 0) return;
var active=btn._parent.attachMovie("activeSkill",name_active,1);
active._x = btn._x;
active._y = btn._y;
return 1;
}

activeSkill - это как-раз рамка. В функцию передается кнопка и ее состояние (нажать, отжать). Визуальное состояние – определяется по существованию в родительском для кнопки MovieClipе – клипа с служебным названием a_внутренее название кнопки.
Также есть функция, которая определяет нажата или отжата кнопка – по аналогии.

Комментарии

Значит скоро активные навыки

Значит скоро активные навыки уже будут добавляццо? Уже с ними решили?

Ну как минимум - глухая

Ну как минимум - глухая защита почти готова (правда не решено с какими параметрами).
Так что - ждем завтра :)