我正在尝试使用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实例)的原因:
开始了:
//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";
}
此代码不会一直播放声音,因为两个视频不能在一个播放器实例中同时播放。当您退出全屏模式时,也不会有任何混乱,因为视频只能返回一帧。
您可能会遇到的一些可能的问题:
它根本不起作用:
我想要的播放按钮没有出现:
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/