flex 4.6 javascript 调用 flex 并传递参数

本文介绍如何在HTML页面中通过Flex播放FTP服务器上的视频,并提供了一个JavaScript调用的方法来关闭预览页面时的视频播放。此外,文章还讨论了在更换视频时如何避免标签冲突的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//flex 程序,主要是实现一个视频预览功能,调用flex的时候要把 预览视频的 ftp服务器地址传的flex程序中, flex程序或得视频服务器地址把地址赋值给 VideoDisplay

// 的source之后立刻播放就可以了,flex程序中有添加了一个可以用javascript调用的方法,用于用户关闭预览页面时调用该方法关闭正在播放的视频。

*****************************************html页面上的脚本程序**********************************************************************************

<script src="../scripts/swfobject.js" type="text/javascript"></script>
<script src="../scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script type="text/javascript">

    //视频信息都获取到后,调用flex播放视频
    function vdeflexShow(vdopat) {
        var flashvars = {

            path: vdopat         //vdopat 是视频的ftp地址,path是自己定义的key (flex程序中要用这个key获取vdopat变量的值)
        };

        var params = {
            wmode: "transparent",
            bgcolor: "#ffffff",
            allowFullScreen: "true",
            allowScriptAccess: "always",
            quality: "high"
        };

        var attributes = {
             id: 'VideoPreview1',       //VideoPreview1 是返回的flex的id值,是它的唯一标示,当flex加载后可以通过这个id值来调用flex的方法或做一些操作
            name: 'VideoPreview1'   //比如调用flex定义的myFunc(在下边的flex程序中有定义)  VideoPreview1.myFunc()  
        };

        swfobject.embedSWF("../controls/flex/DN1000/VideoPreview.swf", "VideoPreview1", "350", "280", "10.0.0", "../scripts/expressInstall.swf", flashvars, params, attributes);
    }                                                                                                                    //这个是flex加载后替换 html标签的id<div id="var attributes = {id: 'VideoPreview1',

          // 这个id跟var attributes = {  id: 'VideoPreview1', 可以不一样,我定义的一样是有我的用意如果不一样第一次调用flex视频可以正常播放,当我想预览另一个视频把ftp地址传发到方法里, 结果显示的还是第一个视频, 我想如果不一样第一次的时候 把  id为VideoPreview1的html标签替换为定义的flex id比如是  var attributes = {id: 'Video1',"  ,这样第二次的时候,就找不到要被替换的标签(id 为 VideoPreview1 的), 如果定义的一样就没有问题

  

    //ext:Window hide 时要关闭正在播放的视频, 关闭预览页面之前要先调用这个方法,之前我是 调用flex中的关闭方法VideoPreview1.myFunc()  的,但是发现只有第一次关闭正常之后就不行了,我想是跟我上边猜想的 第二次找不到要替换的标签应该是一个意思,所有我就想 先把flex remove掉 之后在原先 的位置 从新添加一个 ("<div id='VideoPreview1' , id要一样,用于下次调用flex时被替换,这样就可定能找到要被替换的html标签了, 事件证明这样是ok的, 同理我想也可以调用VideoPreview1.myFunc()  

来关闭视频,但是既然实现了我就懒得试了


    function vdeflexClose() {
       swfobject.removeSWF("VideoPreview1");
        $("#vdotd").html("<div id='VideoPreview1' style='height: 280px; width: 350;'></div>");
    }
 
</script>

下边只是部分html代码,用于被替换flash的一个div

 <table border="0">
                <tr>
                    <td id="vdotd">
                        <div id="VideoPreview1" style="height: 280px; width: 350;">

                          //flex将要替换这个div的位置

                        </div>
                    </td>

              </tr>

</table>

***************************************************************************************************************************************************

 

**************************************************************** flex程序****************************************************************************

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
      xmlns:s="library://ns.adobe.com/flex/spark"
      xmlns:mx="library://ns.adobe.com/flex/mx"
      initialize="App_init()"     // 加载时调用相当于页面初始化吧
      creationComplete="init()" //加载完成后调用
      > 
 <fx:Script>
  <![CDATA[
   import mx.core.FlexGlobals   //这个要引入不然vdoftppath=FlexGlobals.topLevelApplication.parameters["path"]; 会提示引用未定义的什么东东
   public var vdoftppath:String;
   public function App_init():void {
    Security.allowDomain("*");  
    ExternalInterface.addCallback("videoclose",myFunc); // 注册个方法用于 javascript调用 VideoPreview1.myFunc() 关闭视频
    vdoftppath=FlexGlobals.topLevelApplication.parameters["path"];     // var flashvars = { path: vdopat        现在知道是干嘛的了吧  
    myplayer.source=vdoftppath;     //把视频的ftp地址赋给 播放器的 source   
   }
   
   public function init():void {
    myplayer.play();                       //加载完成后开始播放就可以了
   }
   
   public function myFunc():String {
    myplayer.close();                                   //定义的用于javascript调用的关闭视频播放器的方法
    return "success";
   }
  ]]>
 </fx:Script>
 <mx:VideoDisplay width="350" height="250" left="0" id="myplayer"                
      autoPlay="true"/>                               //其实这里想用   <s:VideoPlay  的无奈 赋给他视频的ftp地址时 不能播放,要是有手知道是啥原因 教教我哈
</s:Application>

//************************************************************************************************************************************************

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值