我正在尝试使用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。
我试图添加一个链接到我用这个问题做的演示,所以你可以看看它,但它触发了一个“哎呀,出错了”的错误,可能是反垃圾邮件机制......
答案 0 :(得分:1)
我建议只使用一个帧,只使用一个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";
}
此代码不会有任何继续播放的声音,因为两个视频无法在播放器的一个实例中同时播放。当你走出全屏时,它也不会有任何混乱,因为视频只有一帧可以回归。
您可能遇到的一些问题:
根本不起作用:
我想要的播放按钮没有显示:
这里有一个很好的解释如何使用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);
停止声音并删除播放。