如何在另一帧上转到另一个flvplayback时,从舞台上完全删除flvplayback?

时间:2012-11-19 21:56:13

标签: actionscript-3 flash flvplayback

我正在尝试使用Flash 5.5 AS3创建一个EXE投影机,我要显示一些视频(FLV)(它们的位置就在同一目录中的exe文件旁边) - 每个加载在不同的帧中,所有这些视频也应该有一个全屏选项。这些是人们想要全屏观看的原创视频。这对体验至关重要......

我目前所遇到的问题(在修好了在播放不同视频后没有停止的声音)很难描述,但我会非常努力。

好的,所以当我点击视频上的全屏按钮并全屏观看时,我最终会想要退出全屏,所以我点击底部的同一个图标退出全屏(或ESC)按钮,它是相同的)然后单击导航按钮转到SECOND FLV的框架观看另一个视频。在全屏观看第二个视频然后退出全屏后,flash将我带到FIRST视频的帧,这是一个大问题。此外,现在将我带回第二个视频帧的按钮将无法使用。这就像闪光卡住了一样。

我使用组件 - >来自组件菜单的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,但它只在不进入全屏时才有效。我需要一些能完全从舞台上删除之前视频的内容,所以在退出SECOND观看视频后,flash不会将我带到一个视频,因为某些原因它还在其内存中。我的项目中有30个视频,我需要将其中的每个视频移出舞台,然后导航到下一帧以打开新的FLVPlayback。

我试图添加一个链接到我用这个问题做的演示,所以你可以看看它,但它触发了一个“哎呀,出错了”的错误,可能是反垃圾邮件机制......

3 个答案:

答案 0 :(得分:1)

我建议只使用一个帧,只使用一个flvplayback实例。否则你必须处理奇怪的错误,比如你得到的错误(通常由错位或遗忘的代码引起)。当然,只使用一个帧需要使用更多的代码,但是看起来你正在为这些错误制作硬件修复的数量,你可能会得到更少的代码。

别担心,我会引导你完成所有事情!

使用代码的原因(而不是多个框架):

  1. 更容易跟踪:
    • 了解所有代码的位置,以便轻松找到并解决任何问题。
  2. 更轻松地进行更改
    • 您想切换现有视频吗?编辑文件参考,你就完成了。
    • 想要添加视频吗?不再需要将新的flvplayback实例拖到新框架上,只需添加一些非常简单的代码和一个按钮就可以了。
  3. 更多自定义
  4. 使用多个帧(以及多个flvplayback实例)的原因:

    1. 更容易在视觉上放置
      • 有些人发现他们可以在视觉上放置在舞台上的实际动画片段时会更容易
    2. 更少的代码
    3. 我们走了:

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

      这允许您使用ActionScript来操作flv播放器

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

      这会创建一个名为myVideo的FLVPlayback实例(在代码中引用为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";
      
      }
      

      此代码不会有任何继续播放的声音,因为两个视频无法在播放器的一个实例中同时播放。当你走出全屏时,它也不会有任何混乱,因为视频只有一帧可以回归。

      您可能遇到的一些问题:

      根本不起作用:

      • 通过从组件菜单(窗口>>组件或ctrl + F7)向舞台添加实例,然后从舞台中删除它(确保它仍应显示在库中),确保已将FLVPlayback实例添加到库中图书馆)。

      我想要的播放按钮没有显示:

      • 这里有一个很好的解释如何使用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

      我希望这有帮助!

答案 1 :(得分:0)

以下是卸载FLVPlayback

的最简单方法
removeChild(MyFLV);

它适用于我

答案 2 :(得分:0)

flvPlayBack.stop();
removeChild(flvPlayBack);

停止声音并删除播放。