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

我目前遇到的问题(修复了在播放其他视频后没有停止的声音之后)很难描述,但我会尽力而为。

好的,所以当我单击视频上的全屏按钮并全屏观看时,我最终将要退出全屏,所以我单击底部的相同图标以退出全屏(或ESC按钮,即相同),然后单击导航按钮转到SECOND FLV的框架以观看其他视频。全屏观看第二个视频然后退出全屏后,闪光灯将我带到第一个视频的画面,这是一个大问题。此外,现在将我带回到第二个视频帧的按钮将不起作用。就像闪光灯卡住了。

我从组件菜单中使用“组件-> FLVPlayback 2.5”(我不太了解AS3编程),并且将其属性固定在组件参数中。

另外,我认为以下任何原因都不是造成此错误的原因,但是当我从一帧(使用FLVplayback)导航到另一帧时,我使用这3个脚本来停止所有声音

具有另一FLVplayback的另一帧:

MyFLV.stop();

SoundMixer.stopAll();

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

我在网上找到了这些内容,人们在这里寻求我所描述的声音错误的帮助。

第三个脚本是假定在转到另一帧之前从舞台上删除了FLVplayback,但是它仅在未进入全屏时才起作用。我需要可以完全从舞台中删除上一个视频的内容,因此退出第二次观看的视频后,闪光灯不会带我进入由于某种原因仍在内存中的视频。我的项目中有大约30个视频,在导航到下一帧以打开新的FLVPlayback之前,需要从舞台上删除每个视频。

我试图将链接添加到我为此问题制作的演示中,以便您可以查看它,但是它触发了“糟糕,出了点问题”错误,可能是反垃圾邮件机制...

最佳答案

我建议仅使用一帧和一个flvplayback实例。否则,您必须处理一些奇怪的错误,例如您遇到的错误(通常是由于代码放置错误或遗忘所引起)。当然,仅使用一帧就需要使用更多的代码,但是由于看起来像是在为错误而进行的硬性修复,因此最终可能需要更少的代码。

不用担心,我将带您了解所有内容!

使用代码的原因(与多个框架相反):

  • 易于跟踪:
  • 知道您所有代码的位置,以便您轻松找到并解决任何问题。
  • 更轻松地进行更改
  • 您想切换现有视频吗?编辑文件引用,您就完成了。
  • 要添加视频吗?无需再将新的flvplayback实例拖动到新框架上,只需添加一些非常简单的代码和按钮即可。
  • 更多定制

  • 使用多个帧(和多个flvplayback实例)的原因:
  • 更容易在视觉上放置
  • 有些人发现可以将自己的可视剪辑放在视觉上放在舞台上时更容易
  • 更少的代码

  • 开始了:
    //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

  • 我希望这有帮助!

    关于actionscript-3 - 当转到另一帧上的另一flvplayback时,如何从舞台上完全删除flvplayback?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13462973/

    10-11 11:17