Фон
Я пытаюсь создать простой «универсальный» медиаплеер с одинаковым пользовательским интерфейсом (или максимально похожим) для воспроизведения видео и аудио. К сожалению, FLVPlayback, по моему мнению, не в состоянии обрабатывать аудиофайлы, поэтому я использую Sound и SoundChannel.
Воспроизведение моего видео обрабатывается с использованием компонента FLVPlayback, который «при необходимости» подключается к стандартным элементам управления «на лету». Я хочу подключить их к Sound / SoundChannel при воспроизведении звука, чтобы в обоих случаях работали одни и те же виджеты пользовательского интерфейса. Я бы хотел избежать создания всех моих компонентов с нуля, потому что компонент FLVPlayback делает много полезных вещей "бесплатно", но это начинает выглядеть сложно.
Gorey Stuff
Стандартный PlayPauseButton - это MovieClip с двумя слоями, один из которых содержит кнопку Play (и с именем экземпляра play_mc) и кнопку Pause (pause_mc). Внутри одного из них есть фильм с таким кодом:
stop();
this.upLinkageID = "PauseButtonNormal";
this.overLinkageID = "PauseButtonOver";
this.downLinkageID = "PauseButtonDown";
this.disabledLinkageID = "PauseButtonDisabled";
Фильм имеет два кадра.
В первом кадре находится один фрагмент ролика с именем экземпляра placeholder_mc.
На втором кадре находятся экземпляры состояний кнопок, но у них нет имени экземпляра (что облегчит задачу). Однако они являются экземплярами библиотечного объекта с именем, указанным выше.
Что я хотел бы сделать, так это написать функцию, которая, когда передается одна из этих кнопок (скажем, pause_mc), автоматически добавляет к ней кнопочное поведение. В «документации» Adobe я не могу понять, как использовать информацию, встроенную в код фрагмента ролика, для замены содержимого placeholder_mc на то, что мне нужно.
ТЛ; др
По сути, мне просто нужно реализовать функцию set_instance, чтобы приведенный ниже код изменял видимое состояние кнопки, как и ожидалось:
var my_button:MovieClip = pause_mc;
my_button.addEventListener( MouseEvent.MOUSE_OVER, function( e:Event ){
set_instance( my_button.placeholder_mc, my_button.overLinkageID );
} );