Как ПОЛНОСТЬЮ удалить flvplayback со сцены при переходе к другому flvplayback на другом кадре?

Я пытаюсь создать EXE-проектор, используя flash 5.5 AS3, где у меня есть несколько видео (FLV) для показа (их расположение находится рядом с exe-файлом в том же каталоге) - каждое загружается в другом кадре, и все эти видео также должны иметь полноэкранный режим. Это оригинальные видео, которые люди БУДУТ смотреть в полноэкранном режиме. Это важно для впечатлений ...

Проблемы, которые у меня есть в настоящее время (после исправления звука, который не прекращался после перехода к другому видео), сложно описать, но я очень постараюсь.

Хорошо, поэтому, когда я нажимаю кнопку полноэкранного режима на видео и смотрю его в полноэкранном режиме, я в конечном итоге хочу выйти из полноэкранного режима, поэтому я нажимаю тот же значок внизу, чтобы выйти из полноэкранного режима (или кнопку ESC, это то же самое), а затем нажмите кнопку навигации, чтобы перейти к кадру ВТОРОГО FLV для просмотра другого видео. После просмотра второго видео в полноэкранном режиме и выхода из полноэкранного режима вспышка переводит меня в кадр ПЕРВОГО видео, и это большая проблема. Кроме того, теперь не будет работать кнопка, которая возвращает меня НАЗАД ко второму кадру видео. Как будто вспышка застряла.

Я использую Components -> FLVPlayback 2.5 из меню компонентов (я не очень разбираюсь в программировании AS3) и фиксирую его свойства в параметрах компонента.

Кроме того, я не думаю, что какая-либо из следующих причин является причиной ошибки, но я использую эти 3 сценария, чтобы остановить весь звук при переходе от одного кадра (с воспроизведением FLV) к

другой кадр с другим воспроизведением FLV:

MyFLV.stop();

SoundMixer.stopAll();

MyFLV.addEventListener(Event.REMOVED_FROM_STAGE,xyz);
function xyz(e:Event):void{
MyFLV.stop();
}

Я нашел их в Интернете, где люди просили помощи в устранении описанной мной звуковой ошибки.

Третий сценарий предполагал удаление FLVplayback со сцены перед переходом к другому кадру, но он работает только тогда, когда НЕ ПОЛУЧАЕТСЯ НА ПОЛНЫЙ ЭКРАН. Мне нужно что-то, что ПОЛНОСТЬЮ удалит предыдущее видео со сцены, чтобы после выхода из ВТОРОГО просмотренного видео, flash не переводил меня на видео, которое по какой-то причине все еще находится в его памяти. В моем проекте около 30 видео, и мне нужно удалить каждое из них со сцены, прежде чем перейти к следующему кадру, чтобы открыть новый FLVPlayback.

Я попытался добавить ссылку на демонстрацию, которую я сделал с этой проблемой, чтобы вы могли ее просмотреть, но она вызвала ошибку «ой, что-то пошло не так», вероятно, механизм защиты от спама ...


person David F    schedule 19.11.2012    source источник
comment
Почему у вас мало компонентов FLVPlayback? Они разные, например в смотреть? Возможно, вам стоит попробовать переключить только источник (путь к FLV), например. player.source = "file.flv"?   -  person Lukasz 'Severiaan' Grela    schedule 26.11.2012
comment
Можете ли вы опубликовать больше своего кода? например что вы используете для этих кнопок возврата и выхода.   -  person Matt    schedule 30.11.2012
comment
Удалите прослушиватели событий, чтобы включить сборщик мусора или использовать слабые ссылки: useWeakReference: Boolean (default = false) - определяет, является ли ссылка на прослушиватель сильной или слабой. Сильная ссылка (по умолчанию) предотвращает сборку мусора для вашего слушателя. Слабой ссылки нет.   -  person danjp    schedule 11.01.2013


Ответы (3)


Я бы рекомендовал использовать только один кадр и только один экземпляр flvplayback. В противном случае вам придется иметь дело со странными ошибками, подобными той, которую вы получаете (обычно вызванной неуместным или забытым кодом). Конечно, использование только одного кадра требует использования большего количества кода, но с количеством жестких исправлений похоже, что вы исправляли ошибки, вы можете получить меньше кода.

Не волнуйтесь, я вам все объясню!

Причины использования кода (в отличие от нескольких фреймов):

  1. Easier to keep track of:
    • Know where all your code is so you can easily find and fix any problems.
  2. Make changes more easily
    • You want to switch an existing video? edit a file reference and you are done.
    • Хотите добавить видео? больше не нужно перетаскивать новый экземпляр flvplayback в новый фрейм, просто добавьте очень простой код и кнопку, и все готово.
  3. Дополнительная настройка

Причины использования нескольких кадров (и нескольких экземпляров flvplayback):

  1. easier to place visually
    • Some people find it easier when they have an actual movieclip that they can visually place on the stage
  2. Меньше кода

Вот так:

//import flv library
import fl.video.*;

Это позволяет использовать ActionScript для управления проигрывателем flv.

//video playback code-----------------------//
var myVideo:FLVPlayback = new FLVPlayback();

это создает экземпляр FLVPlayback с именем myVideo (с этого момента в коде он упоминается как myVideo)

в следующем фрагменте показаны многие настраиваемые функции проигрывателя flv. Их включать не обязательно.

//places the video player on stage at x,y
myVideo.x = 115;
myVideo.y = -10;
//uses SkinOverPlayFullscreen.swf for controls
myVideo.skin = "SkinOverPlayFullscreen.swf";
//color of controls
myVideo.skinBackgroundColor = 0x333333;
//hide controls and time it takes controls to fade and reappear (milliseconds)
myVideo.skinAutoHide=true;
myVideo.skinFadeTime=300;
//add the player to the stage
addChild(myVideo);

А теперь самое важное. Я сделал кнопки и добавил их на сцену. Я дал каждой кнопке другое имя экземпляра (box1_btn, box2_btn и box3_btn). Когда кто-то нажимает кнопку, происходит «событие».

//button listener code-------------------------//

//when button 1 is clicked throw button 1 event
box1_btn.addEventListener(MouseEvent.CLICK, clicked1);
//when button 2 is clicked throw button 2 event
box2_btn.addEventListener(MouseEvent.CLICK, clicked2);
//when button 3 is clicked throw button 3 event
box3_btn.addEventListener(MouseEvent.CLICK, clicked3);

//play different videos for different buttons---------//

//when button 1 event is thrown
function clicked1($e:MouseEvent):void
{
    //play video 1.flv
    myVideo.source = "1.flv";

}

//when button 2 event is thrown
function clicked2($e:MouseEvent):void
{
    //play video 2.flv
    myVideo.source = "2.flv";

}

//when button 3 event is thrown
function clicked3($e:MouseEvent):void
{
    //play video 3.flv
    myVideo.source = "3.flv";

}

В этом коде не будет звуков, которые продолжат воспроизводиться, потому что два видео не могут воспроизводиться одновременно в одном экземпляре проигрывателя. При выходе из полноэкранного режима не будет никаких проблем, потому что есть только один кадр, к которому можно вернуться.

Некоторые возможные проблемы, с которыми вы можете столкнуться:

Совсем не работает:

  • Убедитесь, что вы добавили экземпляр FLVPlayback в библиотеку, добавив экземпляр в сцену из меню компонентов (окно >> компоненты или ctrl + F7), а затем удалив его из сцены (он все еще должен появиться в библиотеке).

Кнопки воспроизведения, которые я хочу, не отображаются:

  • Здесь есть отличное объяснение того, как использовать As3 для управления FLVPlayback:

    http://www.republicofcode.com/tutorials/flash/as3flvplayback/

    найдите раздел «Применение обложки к компоненту FLVPlayback» и следуйте ему, чтобы использовать обложку для воспроизведения Adobe. Если вы хотите создать свой собственный уникальный скин, я бы порекомендовал открыть и отредактировать один из готовых скинов. Я нашел свой в

    C:\Program Files (x86)\Adobe\Adobe Flash CS6\Common\Configuration\FLVPlayback Skins\FLA\ActionScript 3.0

Надеюсь, это поможет!

person Enigmadan    schedule 14.01.2013

Ниже будет самый простой способ выгрузить FLVPlayback

removeChild(MyFLV);

Он отлично работает для меня

person Chennai Website    schedule 03.04.2014

flvPlayBack.stop();
removeChild(flvPlayBack);

останавливает звук и прекращает воспроизведение.

person Juni Brosas    schedule 01.04.2015