Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash NetStream.client自定义回调处理程序问题_Flash_Actionscript 3_Client_P2p_Netstream - Fatal编程技术网

Flash NetStream.client自定义回调处理程序问题

Flash NetStream.client自定义回调处理程序问题,flash,actionscript-3,client,p2p,netstream,Flash,Actionscript 3,Client,P2p,Netstream,我正在尝试向p2p应用程序中的NetStream客户端添加自定义回调处理程序。问题是,当我添加这样一个处理程序时,NetStream客户端的功能与以前不同。NetStream.client对象似乎已更改。我知道默认的对象是这个。但是,将客户机更改为此并不能解决问题 remoteControlStream是传入流。localControl流就是正在发布的流 这是由对等方发送并作为remoteControlStream接收的localControlStream: private function i

我正在尝试向p2p应用程序中的NetStream客户端添加自定义回调处理程序。问题是,当我添加这样一个处理程序时,NetStream客户端的功能与以前不同。NetStream.client对象似乎已更改。我知道默认的对象是这个。但是,将客户机更改为此并不能解决问题

remoteControlStream是传入流。localControl流就是正在发布的流

这是由对等方发送并作为remoteControlStream接收的localControlStream:

private function initLocalControlStream():void{
     localControlStream = new NetStream(nc, NetStream.DIRECT_CONNECTIONS);
     localControlStream.addEventListener(NetStatusEvent.NET_STATUS, localControlHandler);
     localControlStream.publish(myPeerID+"control");

     var localControlStreamClient:Object = new Object();

     localControlStreamClient.onPeerConnect = function(callerns:NetStream):Boolean{
          txtTest.text = "peer connected";
          if(side=="host"){
                farPeerID = callerns.farID;
                if(!allreadyConnected){
                     initRemoteControlStream();
                     allreadyConnected = true;
                 }
           }

          return true;
     }
     localControlStream.client = localControlStreamClient;
}
remoteControlStream.client.test = new function():void{
     txtTest.text = "Callback handler working";
}
这是接收流的NetStream

private function initRemoteControlStream():void{
     txtTest.text = "setting up remote stream";
     if(side=="client"){
           farPeerID = this.parameters.hostFingerprint;
     }

     remoteControlStream = new NetStream(nc, farPeerID);
     remoteControlStream.addEventListener(NetStatusEvent.NET_STATUS, remoteControlHandler);

     remoteControlStream.client.test = new function():void{
           txtTest.text = "Callback handler working";
     }  

     remoteControlStream.play(farPeerID+"control");

     remoteControlStream.client = this;
}
我将处理程序添加到remotecControlStream,如下所示(如上所示):

private function initLocalControlStream():void{
     localControlStream = new NetStream(nc, NetStream.DIRECT_CONNECTIONS);
     localControlStream.addEventListener(NetStatusEvent.NET_STATUS, localControlHandler);
     localControlStream.publish(myPeerID+"control");

     var localControlStreamClient:Object = new Object();

     localControlStreamClient.onPeerConnect = function(callerns:NetStream):Boolean{
          txtTest.text = "peer connected";
          if(side=="host"){
                farPeerID = callerns.farID;
                if(!allreadyConnected){
                     initRemoteControlStream();
                     allreadyConnected = true;
                 }
           }

          return true;
     }
     localControlStream.client = localControlStreamClient;
}
remoteControlStream.client.test = new function():void{
     txtTest.text = "Callback handler working";
}
添加上述处理程序时,当我连接时,不会调用localControlStream的onPeerConnect方法。当我移除该处理程序时,将调用onPeerConnect方法

任何有意见/想法的人。显然,问题出在NetStream.client上

非常感谢你的帮助

杰拉德是斯特拉特斯,对吗? 我使用了以下模型: 在位于
Main.connection
NetStatusEvent.NET\u STATUS
'NetConnection.Connect.Success'
上,我调用了静态
流的以下函数
类:

`        public static function initOut(): void {
            streamOut = new NetStream(Main.connection, NetStream.DIRECT_CONNECTIONS);
            var peerConnected:Object = new Object();
                peerConnected.onPeerConnect = function(subscriberStream : NetStream) : Boolean {
                    var oo:RecievingObject = new RecievingObject();
                    subscriberStream.client = oo;
                    if(!streamIn){ initIn((subscriberStream as NetStream).farID); }                    
                    return true;
                }
            streamOut.client = peerConnected;            
            streamOut.addEventListener(NetStatusEvent.NET_STATUS, onOutStatus);            
            streamOut.attachCamera(Camera.getCamera());
            streamOut.attachAudio(Microphone.getMicrophone());
            streamOut.publish('media'); 
        }`
public class RecievingObject extends Object
{

    public function RecievingObject() 
    {

    }

    public function message(str: String):void {
        ChatWindow.addText('>> ' + str);
    }

    public function onPeerConnect(ns: NetStream): Boolean {
       // trace(ns.farID);
        return true;
    }

}
以下是
initIn
函数:

        public static function initIn(id: String): void {
        streamIn = new NetStream(Main.connection, id);
        streamIn.client = new RecievingObject();
        streamIn.addEventListener(NetStatusEvent.NET_STATUS, onInStatus);
        streamIn.receiveVideo(true);
        streamIn.receiveAudio(true); 
        streamIn.play('media');
        VideoWindow.initIn(streamIn);
        Mixer.initSound(streamIn);
    }
以及
receivingObject
类:

`        public static function initOut(): void {
            streamOut = new NetStream(Main.connection, NetStream.DIRECT_CONNECTIONS);
            var peerConnected:Object = new Object();
                peerConnected.onPeerConnect = function(subscriberStream : NetStream) : Boolean {
                    var oo:RecievingObject = new RecievingObject();
                    subscriberStream.client = oo;
                    if(!streamIn){ initIn((subscriberStream as NetStream).farID); }                    
                    return true;
                }
            streamOut.client = peerConnected;            
            streamOut.addEventListener(NetStatusEvent.NET_STATUS, onOutStatus);            
            streamOut.attachCamera(Camera.getCamera());
            streamOut.attachAudio(Microphone.getMicrophone());
            streamOut.publish('media'); 
        }`
public class RecievingObject extends Object
{

    public function RecievingObject() 
    {

    }

    public function message(str: String):void {
        ChatWindow.addText('>> ' + str);
    }

    public function onPeerConnect(ns: NetStream): Boolean {
       // trace(ns.farID);
        return true;
    }

}

谢谢www0z0k,您的答案看起来很有希望。我将尝试一下,我将汇报=)我实现了我在项目中需要的部分,并且工作得非常完美。谢谢!