Я делаю анимацию типа викторины для работы, где при нажатии на ответ воспроизводится короткий анимационный FLV-файл, относящийся к тому, что вы выбрали. Поскольку все, что я читал, указывает на то, что AS3 является ООП, я решил сделать MovieClip, содержащий проигрыватель FLV, и связать его с файлом AS3 с именем FLV_Player.as. Таким образом, я могу создавать новый экземпляр FLV_Player каждый раз, когда мне нужно воспроизвести видео. Вот код в этом файле, который работает нормально:
package
{
import fl.video.VideoEvent;
import flash.events.VideoEvent;
import flash.display.MovieClip;
public class FLV_Player extends MovieClip
{
public function FLV_Player(NextVideo:String)
{
animation_player.source=(NextVideo);
animation_player.addEventListener(VideoEvent.COMPLETE, vcompleted);
}
private function vcompleted(e:VideoEvent):void
{
nextFrame();
}
}
}
Теперь в файле DocumentClass.as у меня есть этот код:
private function NewVideo(videoname:String)
{
var nextvideo:FLV_Player = new FLV_Player(videoname);
addChild(nextvideo);
nextvideo.x = 0;
nextvideo.y = 0;
}
Поэтому, когда вы нажимаете кнопку, переходите к следующему кадру или чему-то еще, она вызывает функцию NewVideo и передает имя любого видео, которое будет воспроизводиться следующим.
NewVideo("Introduction.flv");
Теперь я уверен, что позже я столкнусь с другими проблемами, поскольку я действительно понятия не имею, что я сделал, как это должно быть сделано, но единственная проблема, которая у меня есть на данный момент вовремя удаляет видео и переходит к следующему (или предыдущему) кадру, чтобы ответить на другой вопрос. Я пытался:
nextFrame();
removeChild(newVideo);
Но это не сработало. Что ж, возможно, он перешел к следующему кадру, но с видео, занимающим все окно, трудно понять, перешло оно или нет.
Итак, как мне удалить видео, которое я создал? Основная проблема заключается в том, что, поскольку мне пришлось создать новый экземпляр класса FLV_Player в частной функции, дочерний элемент определяется локально как «var», а не как «общедоступный» или «частный» var, поэтому я не могу ссылаться на него снова . Он говорит мне, что вы можете создать «частную переменную» только из класса документа, но если я сделаю это там, он создаст класс при загрузке, а не из функции, когда я буду готов передать ему параметр имени видео. При загрузке я не знаю, какое видео мне нужно, чтобы воспроизвести?
private var nextvideo:FLV_Player;
), а затем вNewVideo()
просто установить ее:nextvideo = new FLV_Player(videoname);
. - person David Mear   schedule 01.07.2013