zoukankan      html  css  js  c++  java
  • flash 与javascrip的t交互和注意事项

    网上大多都是帮助文档,其实as和js的交互有很多注意事项,来总结一下:
    一.flash到javascript

    1. getURL方法

    getURL("javascript:s2j_call(' 参数')","_self");

    这个是很古老的了,不过发布成player7或之前的版本都可以支持到它,所以几年来一直用它.
    不过只能传递字符串参数,只能做些简单的调用.最致命的是,执行这条语句会导致页面正在加载的异步js进程被阻断,所以如果一个页面渲染了一般flash就发出这个事件,那就等着空白页面吧.
    所 以现在不要再用这条方法了!

    2.ExternalInterface接口

    ExternalInterface.call("s2j_call", 参数);

    发布成8或更高的版本的flash支持该接口,优点是参数可以为json,object,数组,布尔,字符串等,所以和js交互就很方便了.
    而 且不会阻碍页面异步js进程.目前都使用该方法.

    注意:
    当flash和页面跨域时候,页面需要允许flash操控其函数,所以在插入flash时,需要加入


    <param name="allowScriptAccess" value="always" />

    二.javascript到flash

    这个才是重点,简单的来说,就是在flash里绑定js事件
    flash里:


    ExternalInterface.addCallback("j2s_callback",this, j2s_callback);

    function j2s_callback(_p)
    {

        
    trace(_p);
    }

    js里,首先要获得对flash元素的引用,考虑到不同浏览器,需要对object和embed标签都赋予不同的id,然后判断浏览器类型,通过 getElementById来获取ref.然后通过ref.j2s_callback来调用flash内方法.

    注意:
    1.当flash和页面跨域时候,flash里需要加入允许js添加callback的安全许可:


    System.security.allowDomain(" 域");

    System.security.allowInsecureDomain("");

    2.由于各个浏览器的缓存机制和页面加载机制都不同,所以不要指望flash在addCallback执行的时候确实相应的js程序已经定义了,如果没有的话,addCallback是不会成功的.
    所以,可以设个轮循来检测页面是否初始完成.随便用1.0的语法写一下:


    this.onEnterFrame = function()<br
    />
    {
        if (ExternalInterface.call("s2j_check") == "ok")
        {
            ExternalInterface.addCallback("j2s_callback",this, j2s_callback);
            this.onEnterFrame = null;
        }
    };

    页面:

    function s2j_check()
    {
        return "ok";
    };
    function j2s_callback()<br />
    {<
        //to do 调用flash;<br />
    };
  • 相关阅读:
    halcon 如何把一个region截取出来保存为图像
    Halcon学习(三)赋值与数组操作
    sort_region——对区域进行排序
    Halcon函数【转】
    Halcon算子之shape_trans,用于变换区域的形状
    Halcon学习之八:图像区域叠加与绘制
    Halcon学习之七:改变图像的现实方式和大小
    Halcon学习之六:获取Image图像中Region区域的特征参数
    Halcon学习之五:有关图像的定义域的函数
    Docker Swarm redis 集群搭建
  • 原文地址:https://www.cnblogs.com/xiaowei0705/p/2079567.html
Copyright © 2011-2022 走看看