2012-03-26 148 views
0

我在Haxe中創建一個動作視頻播放器並避免asyncError我試圖創建一個自定義對象。我如何做到這一點是Haxe?如何在Haxe中創建一個動作對象

client屬性指定調用回調方法的對象。默認對象是正在創建的NetStream對象。如果將客戶端屬性設置爲另一個對象,則將在該另一個對象上調用回調方法。

這是我的代碼。

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

有你嘗試使用{}? as client = {}; – Waneck 2012-03-26 21:20:52

回答

1

你或許應該這樣做:

client : Dynamic = {};

+0

謝謝!你碰巧有一個在haxe中播放.flv的例子嗎? – user1293802 2012-03-27 14:21:58

+0

我結束了使用ns.client = this;我現在沒有錯誤,但仍然無法播放視頻。那裏有任何教程? – user1293802 2012-03-27 14:25:03

0

忘記客戶對象;播放FLV或處理異​​步錯誤不是必需的。爲此,只需將NetStream的監聽程序添加到AsyncErrorEvent.ASYNC_ERROR即可。

我建議你添加一個偵聽到的NetConnection的NetStreamNetStatusEvent.NET_STATUS,然後描繪出偵聽器內event.info.code值。

您應該首先看到來自NetConnection的字符串「NetConnection.Connect.Success」當您通過NetStream播放視頻時,如果加載FLV時出現問題,您應該看到「NetStream.Play.StreamNotFound」。否則,你應該看到「NetStream.Play.Start」。

除非您正在逐步對FLV進行流式處理,否則在文件加載完成之前您可能看不到任何視頻播放。如果電影文件很長,這可以解釋爲什麼你的程序運行沒有錯誤,但沒有播放電影。在線提供小型測試FLV文件,您可能希望在追蹤問題時使用它。

(ActionScript中的FLV播放API是奇怪和haXe的文檔是最基本的,所以你理所當然地感到沮喪。)

相關問題