3

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

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

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

我使用组件菜单中的组件 --> 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 之前,我需要从舞台上删除每个视频。

我尝试将链接添加到我针对该问题制作的演示中,以便您查看它,但它触发了“哎呀,出了点问题”错误,可能是反垃圾邮件机制......

4

3 回答 3

1

我建议只使用一帧和一个 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 操作 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

我希望这有帮助!

于 2013-01-14T07:35:15.553 回答
0
flvPlayBack.stop();
removeChild(flvPlayBack);

停止声音并移除播放。

于 2015-04-01T09:33:16.857 回答
0

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

removeChild(MyFLV);

这对我来说可以

于 2014-04-03T08:45:24.003 回答