当转到另一帧上的另一个flvplayback时,如何从舞台上完全移除flvplayback



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

我目前遇到的问题(在修复了转到另一个视频后没有停止的声音后)很难描述,但我会非常努力。

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

我使用组件菜单中的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();
}

我在网上发现了一些关于我描述的声音错误的求助信息。

第三个脚本假设在进入另一帧之前将FLV播放从舞台上删除,但它只有在未进入全屏时才有效。我需要一个能从舞台上完全删除前一个视频的东西,这样在退出第二个观看的视频后,flash不会带我去看出于某种原因仍在记忆中的视频。我的项目中有大约30个视频,在导航到下一帧打开新的FLVPlayback之前,我需要将它们中的每一个都从舞台上删除。

我试图添加一个链接到我制作的关于这个问题的演示,这样你就可以查看它,但它引发了一个"哎呀,出了问题"的错误,可能是反垃圾邮件机制。。。

我建议只使用一个框架和一个flvplayback实例。否则,你必须处理奇怪的错误,比如你正在得到的错误(通常是由放错地方或忘记的代码引起的)。当然,只使用一个框架需要使用更多的代码,但由于修复程序的数量看起来像是你在为错误做的,你最终可能会得到更少的代码。

别担心,我会带你完成所有的事情!

使用代码的原因(与多帧相反):

  1. 更易于跟踪:
    • 了解所有代码的位置,以便轻松查找并修复任何问题
  2. 更容易进行更改
    • 是否要切换现有视频?编辑一个文件引用,你就完成了
    • 想添加视频吗?不再将一个新的flvplayback实例拖到一个新框架上,只需添加一些非常简单的代码和一个按钮,就完成了
  3. 更多定制

使用多个帧(和多个flvplayback实例)的原因:

  1. 更易于视觉放置
    • 有些人发现,当他们有一个真正的电影时,他们可以在舞台上直观地放置,这会更容易
  2. 更少的代码

开始:

//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操作FLV回放,这里有一个很好的解释:

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

    找到关于"将皮肤应用于FLVPlayback组件"的部分,然后按照它使用adobe播放皮肤。如果你想制作自己独特的皮肤,我建议打开并编辑一个预先制作的皮肤。我在找到了我的

    C:Program Files (x86)AdobeAdobe Flash CS6CommonConfigurationFLVPlayback SkinsFLAActionScript 3.0

我希望这能有所帮助!

以下是卸载FLVPlayback的最简单方法

removeChild(MyFLV);

它对我来说很好

flvPlayBack.stop();
removeChild(flvPlayBack);

停止声音并删除播放。

最新更新