我试图找出如何删除消息错误,以及是什么原因造成的。我创建了一个用于加载外部vdo以在Flash上播放的代码。在面板中编写它很好,所以我尝试将它作为一个类来编写。我移动了所有的代码,并将其放入一个类中,它也运行良好。但是,错误消息出现了!即使文件可以正确播放。错误说:
错误#2044:未处理的AsyncErrorEvent:。text=Error #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。”
发布于 2013-11-24 03:52:32
这正是--您不是通过实现函数onMetaData来处理元数据事件的。您的播放器的客户端是"this",所以您的类中应该有一个公共函数onMetaData。
拜托,请用大写的首字母作为你的名字.
编辑:在您的代码中,您将this指定为netstream的客户端(源代码: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作为客户端传递给的<=as)。您可以检查文档如何执行:US/FlashPlatform/reference/actionscript/3/flash/net/NetStream.html#event:onMetaData。我认为Lee在他的网站http://www.gotoandlearn.com上有一篇关于这个的教程。(我不确定,但如果你有兴趣的话,我想值得一试)
https://stackoverflow.com/questions/20117257
复制相似问题