我正在Haxe中创建一个actionscript视频播放器并避免asyncError我正在尝试创建一个自定义对象。我怎么做是Haxe?
client属性指定调用回调方法的对象。默认对象是正在创建的NetStream对象。如果将client属性设置为另一个对象,则将在该另一个对象上调用回调方法。
这是我的代码。
public function new()
{
super();
trace("video");
//initialize net stream
nc = new NetConnection();
nc.connect(null);
ns = new NetStream(nc);
buffer_time = 2;
ns.bufferTime = buffer_time;
//Add video to stage
myVideo = new flash.media.Video(640, 360);
addChild(myVideo);
//Add callback method for listeing on NetStream meta data
client = new Dynamic();
ns.client = client;
client.onMetaData = metaDataHandler;
}
public function playVideo(url:String)
{
urlName = new String(url);
myVideo.attachNetStream(ns);
ns.play(urlName);
ns.addEventListener(NetStatusEvent.NET_STATUS, netstat);
}
function netstat(stats:NetStatusEvent)
{
trace(stats.info.code);
}
function metaDataHandler(infoObject:Dynamic)
{
myVideo.width = infoObject.width;
myVideo.height = infoObject.height;
}
答案 0 :(得分:1)
您应该这样做:
client : Dynamic = {};
答案 1 :(得分:0)
忘记客户端对象;没有必要播放FLV或处理异步错误。为此,只需为AsyncErrorEvent.ASYNC_ERROR
的 NetStream 添加一个监听器。
我建议你为 NetConnection 添加一个监听器,为NetStatusEvent.NET_STATUS
添加 NetStream ,然后在监听器中找出event.info.code
值
您应该首先看到来自 NetConnection 的字符串“NetConnection.Connect.Success”;当您通过 NetStream 播放视频时,如果加载FLV时出现问题,您应该会看到“NetStream.Play.StreamNotFound”。否则你应该看到“NetStream.Play.Start”。
除非您逐步流式传输FLV,否则在文件加载完成之前您可能看不到任何视频。如果电影文件很长,这可以解释为什么你的程序运行没有错误但没有播放电影。您可以在线跟踪问题时使用小型测试FLV文件。
(ActionScript的FLV播放API很奇怪,haXe的文档很简陋,所以你理所当然地感到沮丧。)
答案 2 :(得分:0)