actionscript-3 - ActionScript 3 onMetaData 视频持续时间 - 无法存储值

标签 actionscript-3 flash video actionscript

我在 AS3 中有用于视频连接的标准 NetStream:

代码:

public class VideoInit extends MovieClip
{
    import flash.media.Video;
    import flash.net.NetConnection;
    import flash.net.NetStream;
    import flash.events.NetStatusEvent;


    public var video:Video;
    public var nc:NetConnection;
    public var ns:NetStream;
    public var meta:Object;
    public var _duration; //  <----- the variable



    public function VideoInit()
    {
        video = new Video(480,270); 
        addChild(video);
        nc = new NetConnection();
        nc.connect(null);
        ns = new NetStream(nc);

        meta = new Object();

        ns.client = meta;
        video.attachNetStream(ns);
        ns.play("video.f4v"); 


        meta = new Object();

        meta.onMetaData = function(meta:Object) // <---- the method
        {
            _duration = meta.duration

        }
        ns.client = meta;
     }

现在,每次执行 onMetaData 方法时,变量 _duration 都会存储该值,但在调试器步骤离开该方法后,_duration 值会被设置回未识别。 我尝试通过推送值来使用数组来解决问题,但同样的事情发生了,数组重置了。可能出了什么问题?

编辑:

一旦 onMetaData 完成,任何存储持续时间值的对象都会自毁。我如何实现它并不重要。

最佳答案

您发布的代码无法编译,即使可以编译,也可能会导致其他问题。

建议:放弃 meta 对象并设置 ns.client = this;

这有效:

package
{
    import flash.events.Event;
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.media.Video;
    import flash.net.NetConnection;
    import flash.net.NetStream;
    import flash.events.NetStatusEvent;

    public class VideoInit extends Sprite
    {
        private var video:Video;
        private var nc:NetConnection;
        private var ns:NetStream;
        private var _duration:Number; //  <----- the variable

        public function VideoInit()
        {
            addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
        }

        private function onAddedToStage(e:Event):void
        {
            removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
            video = new Video(480,270); 
            addChild(video);
            nc = new NetConnection();
            nc.connect(null);

            ns = new NetStream(nc);
            ns.client = this;// meta;

            video.attachNetStream(ns);
            ns.play("video.f4v");
            stage.addEventListener(MouseEvent.MOUSE_DOWN, testTheValueOfDuration);
         }

         public function onMetaData(e:Object):void
         {
            _duration = e.duration
            trace('_duration:', _duration);

            testTheValueOfDuration();
         }

         private function testTheValueOfDuration(e:MouseEvent = null):void
         {
            trace('Seriously, what is the value of _duration?', _duration);
         }
    }
}

关于actionscript-3 - ActionScript 3 onMetaData 视频持续时间 - 无法存储值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13325826/

相关文章:

video - 使用视频js的cdn链接从一个个人视频中获取多个视频

Flash Actionscript 3 不接受编译时常量

javascript - 如何使用 FlexPaper 脚本将 SWF 解析回 PDF

flash - 多个闪存实例还是一个?

flash - Flash 播放器可以使用的内存量是否有限制?

php - 从 flv 视频中截取屏幕截图

apache-flex - 在 Adob​​e AIR 中加密 Assets (视频文件)

actionscript-3 - Box2D 中下落的物体应该因质心而旋转?

flash - 如何翻转 flash.media.Video?

actionscript-3 - Adobe AIR 全系统存储