加载外部vdo时要求属性onMetaData的错误消息但是无论如何vdo都可以播放

时间:2013-11-21 09:39:12

标签: actionscript-3 actionscript error-handling external

我正在试图弄清楚如何删除邮件错误以及导致错误的原因。 我创建了一个代码,用于加载外部vdo以在Flash上​​播放。在Action Script面板中编写它很好,所以我尝试将它作为一个类。我移动了所有代码并将其放在一个类中,它也可以正常工作。但是,出现错误消息!即使文件可以正常播放。 错误说:

  

错误#2044:未处理的AsyncErrorEvent:。 text =错误#2095:flash.net.NetStream无法调用onMetaData回调。 error = ReferenceError:错误#1069:在vdoloader上找不到属性onMetaData,并且没有默认值。       在vdoloader()

这是我的代码

package  {

import flash.display.Sprite;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.media.Video;   

public class vdoloader extends Sprite {
    var video;
    var nc;
    var ns;

    public function vdoloader() {
        // constructor code
        nc = new NetConnection();
        nc.connect(null);
        ns = new NetStream(nc);
        ns.client=this;
        video = new Video(550,400);
        addChild (video);
        video.attachNetStream(ns);
        ns.play("westler.flv"); 
    }
}
}

然后我试着在vdoloader()中添加一些东西,它说的是:“预期为1,得到0。”

1 个答案:

答案 0 :(得分:2)

正是如此 - 您没有通过实现onMetaData函数来处理元数据事件。你的播放器的客户端是“这个”,所以你应该在你的类中有一个onMetaData的公共函数。

请噢,请使用大写的第一个字母作为您的班级名字......

编辑: 在您的代码中,您将this指定为netstream的客户端(来源:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/NetStream.html):

  

将客户端属性与事件处理程序关联以接收数据   宾语。使用NetStream.client属性分配要调用的对象   具体的数据处理功能。分配给的对象   NetStream.client属性可以侦听以下数据点:   onCuePoint(),onImageData(),onMetaData(),onPlayStatus(),   onSeekPoint(),onTextData()和onXMPData()。写程序   那些函数来处理从流返回的数据对象   在播放期间。有关更多信息,请参阅NetStream.client属性   信息。

所以现在你只需要创建一个onMetaData(md:Object)函数来处理同一个类中的事件,即vdoloader(< =当你传递this作为客户端时)。您可以查看文档如何执行此操作:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/NetStream.html#event:onMetaData。我认为 Lee Brimelow在他的网站上有一个关于这个的教程 - http://www.gotoandlearn.com。 (我不确定这个,但我想如果你有兴趣的话,值得一试)