FMIS在流媒体会话期间显示远离屏幕

时间:2012-05-22 20:35:34

标签: actionscript-3 flash flex flash-media-server

我想知道这是否可行,如果是的话可能还有一些代码示例。我想让演示者在现场地址时能够在他离开时按下按钮。然后,此按钮将在客户端触发jpg或某种形象,表示他目前正在离开并且还要让演示者的麦克风静音?任何人都有任何想法如何在FMIS 4和AS3中实现这一点?

1 个答案:

答案 0 :(得分:0)

是的,这是可行的。有一些代码要编写。这是一个细分:

  • 演示者的客户端进行NetConnection,然后将NetStream发布到FMS。
  • 当演示者点击按钮时:
    1. Presenter的客户端将麦克风增益设置为0
    2. Presenter的客户端使用NetStream.send()向所有订阅客户端发送消息。消息基本上是函数的名称以及所有订阅客户端应该执行的一些参数。在这种情况下,该功能将显示/隐藏“离开”图像。
  • 然后在演示者返回时执行相反的操作

<强> [编辑] 添加一些代码以阐明如何使用NetStream.send()

演示者代码:

private function onAwayButtonClick(event:Event):void
{
    stream.send("toggleAwayImageDisplay"); // stream is a NetStream you created elsewhere
    mic.gain = 0; // mic is the Microphone you attached to the stream
}

订阅者代码

创建NetStream时,使用client属性,以便它知道在哪里找到我们上面指定的函数“toggleAwayImageDisplay”:

private function someMethodThatCreatesNetStream(netConnection:NetConnection):void
{
    stream = new NetStream(netConnection);
    // you could use any object here, as long as it has the method(s) you are calling
    stream.client = this;

    // this might be nicer, you can reference functions from any class this way
    // the key in this client object is a function name
    // the value is a reference to the function
    // var client:Object =
    //     { toggleAwayImageDisplay: toggleAwayImageDisplay,
    //       doSomethingElse: anotherObject.doSomethingElse }; 
    // stream.client = client;
    // be careful about memory leaks though :)
}

private function toggleAwayImageDisplay():void
{
   // now show or hide the image
}