zoukankan      html  css  js  c++  java
  • Flash 中与 JS 的通信

    SetVariable 可以很方便的实现多浏览器兼容。举例如下。

    html 页中的 JavaScript 函数:
    function GetSwfUrl()
    {
    var pics1 = parseInt(Math.random()*5)+1;
    var pics2 = parseInt(Math.random()*5)+1;
    document.my_swfId.SetVariable("pic01Num", pics1);
    document.my_swfId.SetVariable("pic02Num", pics2);
    }

    说明:pic01Num 和 pic02Num 为 Flash 中定义的变量,以上函数将 JS 变量 pics1 和 pics1 分别赋值予 Flash 变量 pic01Num 和 pic02Num 。my_swfId 为 html 页中 swf 的 id.

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

    在 Flash 中与 JS 的通信可以用传统的 getURL,Flash8 以后,可以用 ExternalInterface 。ExternalInterface 在功能上与 fscommand()、CallFrame() 和 CallLabel() 方法相似,但它更灵活、更通用。推荐对 JavaScript 和 ActionScript 之间的通讯使用 ExternalInterface 。

    getURL调用JS:
    getURL("javascript:GetSwfUrl()"); 

    ExternalInterface调用JS:
    import flash.external.ExternalInterface;//导入 ExternalInterface 类
    ExternalInterface.call("GetSwfUrl()");

    注意:如果要使用 ExternalInterface,当前帧必需要有 import flash.external.ExternalInterface; 或者 import flash.external.*;

    ================================================================

    SWFObject是一个基于Javascript的Flash媒体版本检测与嵌入模块,其主要使用目的是让我们将FLASH嵌入网页中的操作更简单,加入了版本检测功能,符合XHTML的标准验证的插入,并解除了IE对FLASH点击激活的限制,对主流浏览器兼容。 
    首先让我们看一段SWFObject作用的代码:   
    //载入SWFObject类库 
    <script type="text/javascript" src="http://www.jb51.net/article/swfobject.js" src="swfobject.js"></script> 
    //设置一个DIV,并设置ID,这个DIV将做为FLASH插入的容器 
    <div id="flashcontent">播放此动画需要FlashPlayre8.0+ </div> 
    //利用SWFObject来插入FLASH 
    <script type="text/javascript"> var so = new SWFObject("movie.swf", "mymovie", "200", "100", "7", "#336699"); 
    //将id为flashcontent的DIV中内容替换为FLASH 
    so.write("flashcontent"); 
    </script> 
    看了上面的代码感觉如何?比起平时用Object来插入FLASH文件是不是简洁多了,而且代码结构更清晰,对这段代码的中文解释可参看AW对SWFObject的翻译,已经很详细了,不再赘述,下面只介绍一下个人认为最实用的功能。 

    一、版本检测  

    难免存在播放器版本过低的用户,而且他们大多数是低端用户,对电脑知识了解较浅,如果他们看不到我们所指出的FLASH动画,或者是由于播放器版本不支持新版本中的某些特性,用户看到的是残缺的动画,那么这就是一个糟糕的用户体验,用户很容易将一切因素都归咎于产品的开发者。实用SWFObject就可以很好的避免这一麻烦,当它检测到用户的播放器版本低于我们设置的版本时,FLASH不会替换DIV容器中的内容,因此我们可以在这里给用户提示,例如:“你需要升级FLASH播放器版本至8.0+”。如果条件允许,我们可以在这里给用户一个Adobe的FlashPlayer的升级链接或者直接提供一个Active安装包给用户下载安装。 

    二、对FlashVars的支持 

    so.addVariable("arg1","test1")); 
    so.addVariable("arg2","test2")); 
    上面两句代码将以FlashVars的方式给FLASH的ROOT中添加两个变量arg1=test1,arg2=test2,简洁,方便,同时不用我们再考虑IE和FF的兼容问题。 

    注意:JS跟FLASH通信是以字符串传递的,因此对于Number型变量FLASH端需要做类型转换。 

    三、设置FLASH内联参数   

    so.addParam("wmode", "transparent"); 
    这是我们很熟悉的设置FLASH背景透明的代码,其他内联属性可以尝试设置一下。 

    四、获取URL中的变量 

    对于url?arg1=test1&arg2=test2这样用GET方式传递变量的URL,我们可以用getQueryParamValue方法来获取变量。 

    var t1 = getQueryParamValue("arg1"); 
    alert(t1); 
    官方地址:http://blog.deconcept.com/swfobject/

  • 相关阅读:
    JVM 综述
    看 Netty 在 Dubbo 中如何应用
    Netty 心跳服务之 IdleStateHandler 源码分析
    Netty 高性能之道
    Netty 解码器抽象父类 ByteToMessageDecoder 源码解析
    Netty 源码剖析之 unSafe.write 方法
    Netty 出站缓冲区 ChannelOutboundBuffer 源码解析(isWritable 属性的重要性)
    Netty 源码剖析之 unSafe.read 方法
    Netty 内存回收之 noCleaner 策略
    Netty 源码阅读的思考------耗时业务到底该如何处理
  • 原文地址:https://www.cnblogs.com/regalys168/p/3845052.html
Copyright © 2011-2022 走看看