ActionScript3视频播放结束无法自动返回菜单问题求助
解决ActionScript3中视频播放结束自动返回菜单帧的问题
嘿,我之前也踩过这个坑!你能通过home按钮跳转说明gotoAndStop()本身是没问题的,问题出在没正确监听视频播放结束的触发信号——毕竟AS3里的Video对象本身不会主动派发播放结束事件,得靠它绑定的NetStream(或者你用的FLV播放组件)来告诉你“我播完啦”。
下面分两种常见场景给你解决方案:
场景1:手动用NetConnection/NetStream加载视频
如果是自己写代码初始化视频流,你需要监听NetStream的NetStatusEvent,当播放状态变为NetStream.Play.Stop时触发跳转:
// 假设你已经完成了基础的视频初始化 var nc:NetConnection = new NetConnection(); nc.connect(null); // 本地视频用null,远程视频填RTMP地址 var ns:NetStream = new NetStream(nc); var videoPlayer:Video = new Video(); videoPlayer.attachNetStream(ns); addChild(videoPlayer); // 关键:给NetStream添加状态监听 ns.addEventListener(NetStatusEvent.NET_STATUS, onVideoStatusChange); // 开始播放视频 ns.play("your-video-file.flv"); // 状态处理函数 function onVideoStatusChange(e:NetStatusEvent):void { // 判断是否是播放结束的状态码 if (e.info.code === "NetStream.Play.Stop") { // 跳转到你的菜单帧,这里用帧标签或者帧编号都可以 gotoAndStop("menu_frame"); // 比如你给菜单帧设了标签"menu_frame",或者直接写gotoAndStop(1); } }
场景2:用FLVPlayback组件播放视频
如果你用的是Flash自带的FLVPlayback组件(可视化拖入舞台的那种),监听逻辑更简单,直接绑定Event.COMPLETE事件就行:
// 假设你舞台上的FLVPlayback组件实例名叫flvPlayer flvPlayer.addEventListener(Event.COMPLETE, onVideoFinished); function onVideoFinished(e:Event):void { // 直接跳转到菜单帧 gotoAndStop("menu_frame"); }
几个容易踩的小坑
- 确认你的视频文件没有设置循环播放:有些视频编码时加了循环属性,这种情况下
NetStream不会触发NetStream.Play.Stop状态,自然不会跳转。 - 检查监听器有没有被意外移除:如果你的代码里某个地方调用了
removeEventListener,会导致监听失效。 - 确保菜单帧的编号/标签正确:虽然你点击按钮能跳转,但还是确认下
gotoAndStop的参数和时间轴上的帧对应。
内容的提问来源于stack exchange,提问作者Jane Doe
相关产品推荐
相关产品推荐

