flex视频监控播放实时流_flex播放视频


我所采用的方式是Flex+ActiveX控件(也许还有更好的方法:))。


1.Flex中使用ActiveX控件

    Flex中使用ActiveX控件我的思路是:

    1.Flex中嵌入一个网页。

    2.布局网页到Flex界面中合适的位置。

    3.在网页中嵌入ActiveX控件。

    4.解决ActiveX控件和Flex的互相访问。


很幸运,网上有很多介绍如何在Flex中嵌入网页的文章,其中介绍到了IFrame控件的用法(http://code.google.com/p/flex-iframe/),可以在Flex中使用IFrame控件,如下:

    

<ns1:IFrame id="iframe_TvWall" source="/TVWall.htm" >
</ns1:IFrame>


TVWall.htm就是嵌入ActiveX的网页


2.网页中嵌入ActiveX控件

<OBJECT ID="TVWallAX1" WIDTH="100%" HEIGHT="100%"
 CLASSID="CLSID:1DD61B8D-F1E6-43B9-82CB-3AD4C290E40F">
    <PARAM NAME="_Version" VALUE="65536">
    <PARAM NAME="_ExtentX" VALUE="2646">
    <PARAM NAME="_ExtentY" VALUE="1323">
    <PARAM NAME="_StockProps" VALUE="0">
</OBJECT>


3.Flex调用ActiveX的函数

    需要在网页中编写js脚本如下:

<SCRIPT LANGUAGE="JavaScript">
    function doCmd(param)
    {
        return TVWallAX1.SendCmd(param);
    }
</SCRIPT>

SendCmd是在ActiveX控件中定义的函数,参数为字符串。


    Flex可以通过如下程序代码访问ActiveX的函数(Flex通过js访问ActiveX)

iframe_TvWall.callIFrameFunction("doCmd",array);


4.ActiveX控件访问Flex函数

    需要在网页中编写js脚本如下:

<SCRIPT LANGUAGE="JavaScript" FOR="TVWallAX1" EVENT="Notify(param)">
<!--
window.parent.document.getElementById("Client").getFlexMsg(param);
-->

Client是swf在html文件中的id。

Notify是在ActiveX控件中定义的通知函数,参数为字符串。


    Flex代码中需要实现被调用的代码,如下:


    ExternalInterface.addCallback("getFlexMsg",getMsgFromFlex);
    
    private function getMsgFromFlex(param):void
    {
        Alert.show("ok");
    }