你那表示法 2013-12-05 07:31 采纳率: 0%
浏览 988

JavaScript调用Flex方法

1.Flex里面使用ExternalInterface.call(“Js函数名称”,参数)进行调用javascript方法,其返回的值就是Js函数所返回的值。

2.在初始化方法中使用ExternalInterface.addCallback(“注册的方法名”,As中的函数名)进行注册,“注册的方法名”可以再javascript中直接调用

3.在js中,就可以用document.getElementById(“Flash在Html中的ID”).注册的方法名(参数)进行调用,当然,默认”Flash在Html中的ID”就是Flex文件的名称,例如,我们这里就是SampleApp,因为我们的Flex文件就是SampleApp.mxml

//Flex代码
<?xml version="1.0" encoding="utf-8"?>
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
creationComplete="application1_creationCompleteHandler(event)"
minWidth="955" minHeight="600">

<fx:Script>
    <![CDATA[
        import flash.external.*;

        import mx.controls.Alert;
        import mx.events.FlexEvent;
        protected function text_clickHandler(event:MouseEvent):void
        {
            myFunc();
        }

        public function myFunc():void 
        {
            Alert.show("Invoke Ok");                
        }

        public function getValue():Number 
        {
            return 84;        
        }

        protected function application1_creationCompleteHandler(event:FlexEvent):void
        {
            ExternalInterface.addCallback( "myFlexFunction" ,myFunc);
            ExternalInterface.addCallback( "getValue" ,getValue);
        }

    ]]>
</fx:Script>

<fx:Declarations>
    <!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>

<mx:Button id="Test" label="Hello" click="text_clickHandler(event)">

</mx:Button>

/s:Application

//HTML代码,Flex自动生成的代码中小改动。


<!-- SWFObject's dynamic embed method replaces this alternative HTML content with Flash content when enough
JavaScript and Flash plug-in support is available. The div is initially hidden so that it doesn't show
when JavaScript is disabled.
-->


To view this page ensure that Adobe Flash Player version
11.1.0 or greater is installed.


    <noscript>
        <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100px" height="100px" id="SampleApp">
            <param name="movie" value="SampleApp.swf" />
            <param name="quality" value="high" />
            <param name="bgcolor" value="#ffffff" />
            <param name="allowScriptAccess" value="sameDomain" />
            <param name="allowFullScreen" value="true" />
            <!--[if !IE]>-->
            <object type="application/x-shockwave-flash" data="SampleApp.swf" width="100px" height="100px">
                <param name="quality" value="high" />
                <param name="bgcolor" value="#ffffff" />
                <param name="allowScriptAccess" value="sameDomain" />
            <!--<![endif]-->
            <!--[if gte IE 6]>-->
                <p> 
                    Either scripts and active content are not permitted to run or Adobe Flash Player version
                    11.1.0 or greater is not installed.
                </p>
            <!--<![endif]-->
                <a href="http://www.adobe.com/go/getflashplayer">
                    <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash Player" />
                </a>
            <!--[if !IE]>-->
            </object>
            <!--<![endif]-->
        </object>
    </noscript>     

    <input type="button" value="test" onclick="TestFlex()"/>


<br> function TestFlex()<br> {<br> var obj=document.getElementById(&#39;SampleApp&#39;); <br> //obj.myFlexFunction(); <br> var vals=obj.getValue();<br> alert(vals);<br> }<br>

  • 写回答

1条回答

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-02-26 17:31
    关注

    该回答引用ChatGPT

    以上代码演示了如何在 Flex 中调用 JavaScript 方法以及如何在 JavaScript 中调用 Flex 方法。


    在 Flex 中,使用 ExternalInterface.call() 方法来调用 JavaScript 函数,这个方法可以接收一个字符串作为第一个参数,该字符串表示要调用的 JavaScript 函数名称,还可以接收一个可选的参数列表,用于向 JavaScript 函数传递参数。该方法返回的值就是 JavaScript 函数的返回值。


    在 Flex 中,使用 ExternalInterface.addCallback() 方法来注册一个函数,该函数可以在 JavaScript 中被调用。该方法需要两个参数,第一个参数是注册的函数名称,第二个参数是在 Flex 中定义的函数名称。


    在 JavaScript 中,可以使用 document.getElementById() 方法获取 Flex 应用程序中的 SWF 对象,并使用注册的函数名称来调用该函数。如果 Flex 应用程序的名称为 SampleApp,则可以使用 document.getElementById("SampleApp").myFlexFunction() 来调用 myFlexFunction() 方法,或者使用 document.getElementById("SampleApp").getValue() 来调用 getValue() 方法。


    在以上代码中,当用户单击 Flex 应用程序中的按钮时,会调用 myFunc() 方法并显示一个弹出窗口。该应用程序还定义了一个名为 getValue() 的函数,用于返回一个数字。在 JavaScript 中,单击 HTML 页面中的按钮会调用 TestFlex() 方法,在该方法中使用 document.getElementById("SampleApp").getValue() 来获取 Flex 应用程序中的值,并使用 alert() 方法来显示该值。

    评论

报告相同问题?

悬赏问题

  • ¥15 鸿业暖通修改详细负荷时闪退
  • ¥15 有偿求码,CNN+LSTM实现单通道脑电信号EEG的睡眠分期评估
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体