`

Flex与Flash的交互_2(深层对象交互示例)

阅读更多
Flex端程序


1、主程序文件TestFlex_Flash.mxml源代码:

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*">

    <mx:Script>

    <![CDATA[

        import flash.profiler.showRedrawRegions;

        import mx.controls.Alert;

        import flash.utils.Timer;

        import flash.events.TimerEvent;

        

        public function testf():void{

           Alert.show("已经调用");

           trace("ljlo");

           

              var time:Timer=new Timer(1000,1);

              time.start();

      time.addEventListener(TimerEvent.TIMER_COMPLETE,invokeFlash);             

        }

        

        public function loadSwf():void{

           //传入此flex对象

            Object(swfgame.content).setApp(this);

//             Object(swfgame.content).toFlex();

            

        }

        

        public function invokeFlash(inovevent:TimerEvent):void{

             //调用flash组件实例类对象的方法(myC为在flash帧中定义)

            Object(swfgame.content).myC.innerFunction();

        }

        

        public function parentMethod():void{

            Alert.show("调用父方法......");;

        }

    ]]>

    </mx:Script>

    <mx:SWFLoader id="swfgame" source="test.swf" x="174" y="75" width="330" height="200" creationComplete="loadSwf()"/>

    <!--TestComponent标签表示将引入*(同一)目录下的TestComponent.mxml组件-->
    <local:TestComponent  id="component">

       

    </local:TestComponent>

</mx:Application>



2、TestComponent.mxml源代码

<?xml version="1.0" encoding="utf-8"?>

<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300" xmlns:local="*">

    <mx:Script>

    <![CDATA[

        import mx.controls.Alert;

        

            public function testf():void{

           Alert.show("class组件已经调用了....");

           trace("ljlo");

        } 

    ]]>

    </mx:Script>
<!--下面注释掉的代码就是加载Flash制作的swf的,加载完成后,Flex就可以用swfgame这个对象的content属性表示调用该Flash程序的代码了-->
<!--   <mx:SWFLoader id="swfgame" source="test.swf" x="174" y="75" width="61" creationComplete="loadSwf()"/>-->

     <local:VisualView id="view" />

</mx:Canvas>



3、非可视组件VisualView.as源代码

package

{

    import mx.core.IMXMLObject;

    import mx.controls.Alert;



    public class VisualView implements IMXMLObject

    {

      protected var view : Object;

      protected var id : String;     

      public function initialized( document : Object, id : String ) : void

      {

         this.view = document;

         this.id = id;

        

      }    

     

      public function VisualView()

      {

      }

     

      public function testView():void{

        Alert.show("调用无视图方法。");

      }

      

      Public function invokeFlashMethod():void{

          Object(View.parentApplication.swfgame.content).

myC.innerFunction();

}    
    }
}


Flash端程序

1、帧里(或者文档类)代码如下

import flash.utils.Timer;

import flash.events.TimerEvent;

 

var flexApp:Object;

function setApp(ap:Object):void {

         this.flexApp=ap;

//      myC.passFlex(flexApp);

         var time:Timer=new Timer(1000,1);

         time.start();

         time.addEventListener(TimerEvent.TIMER_COMPLETE,toFlex);

}

var myC:MyClass=new MyClass();

 
//下面这个方法测试调用Flex程序代码的效果,通过下面的四个调用也可以看出Flex代码中各组件的从属关系
function toFlex(eve:TimerEvent){

        flexApp.testf();                    //flash直接调用flex加载该游戏作用域内方法
        flexApp.component.testf();       //flash调用flex子组件方法

         flexApp.component.view.testView();   //flash调用flex非可视组件组件中方法


    flexApp.component.parentApplication.parentMethod();   //flash调用flex父组件方法

         myC.passFlex(flexApp);

}



2、Flash自定义类MyClass类源代码

    作用是为表明Flex可以调用Flash中对外公开的类的公开方法(只要是公开的类,就可以一级一级调用下去)

package {

         

         public class MyClass {

                   public var myObj:Object=null;

                   public function MyClass() {

 

                   }

                   public function passFlex(obj:Object) {

                            //obj.testf();

                            myObj=obj;

                   }

                   public function innerFunction(){

                            //myObj.component.testf();

                            trace("i am from the flash inner class")

                   }

         }

}
分享到:
评论

相关推荐

    flex与JS交互示例

    通过这个示例,你可以了解到Flex与JavaScript交互的基本流程和实现方式。在实际项目中,可以根据需求进一步扩展,如传递复杂数据结构、处理异步调用、错误处理等。对于开发者来说,掌握这项技能能极大地提高Web应用...

    如何做好Flex与Java交互_.docx

    在本文中,我们将深入探讨如何有效地实现Flex与Java之间的交互。Flex是一种基于Adobe Flash Player的开发框架,用于创建富互联网应用程序(RIA),而Java则是一种广泛使用的后端编程语言。在Flex应用中,与Java服务...

    Flex和java交互的示例代码

    ### Flex与Java交互知识点 #### 一、简介 在Flex与Java进行交互的过程中,主要涉及到的是前后端的数据传输。本文将详细介绍如何通过Flex与Java进行数据交换,包括Flex客户端的实现方式、Java后端的数据处理逻辑,...

    flex+php.rar_Flex+PHP_PHP Flex_felx p_flex_flex php

    2. **RESTful服务与数据库交互**: - "rest_with_database"可能指的是一个示例,展示如何使用Flex调用PHP实现的RESTful API来操作数据库。REST(Representational State Transfer)是一种轻量级的架构风格,适合于...

    flex与js交互2

    ### Flex与JavaScript交互详解 #### 一、引言 随着Web技术的发展,不同语言之间的通信变得尤为重要。在Flex与HTML的结合中,Flex通常作为富客户端应用,而JavaScript则负责处理网页逻辑。为了实现二者之间的无缝...

    Flex与.NET交互

    Flex与.NET交互是一种常见的跨平台应用开发场景,它允许基于Adobe Flex的前端应用程序与Microsoft .NET框架后端服务进行通信。这种交互使得开发者能够利用Flex的富互联网应用(RIA)特性与.NET的强大后端功能相结合...

    flex-menu.rar_Flex 4_Menu_flex_flex Menu_flex 菜单

    MXML是一种声明式语言,用于描述用户界面的布局和组件结构,而ActionScript则是一种面向对象的编程语言,用于处理逻辑和交互。 创建Flex 4菜单的基本步骤如下: 1. 在MXML文件中,引入MenuBar和MenuItem组件: ```...

    AIR-com.rar_AIR com_FLASH COM_flash air 串口_flash串口_flex air exe

    描述中提到"flash与串口通讯源码",这表明压缩包内包含的项目或代码示例是关于如何在Flash环境中实现与硬件设备的串行通信。在Flash或Flex开发中,通过Flash Player或AIR的本地连接(LocalConnection)API,开发者...

    FLEX通过AS3与FLASH交互

    在IT领域,FLEX、AS3...文件“nodb_flex_fla”可能是包含示例代码或项目的FLASH源文件,进一步学习和实践可以更深入地理解这一交互过程。在实际操作中,开发者需要根据自己的项目需求,灵活运用这些技术和知识。

    Flex与Flash相互调用

    Flex与Flash交互技术详解 在数字媒体和网页应用开发领域,Flex和Flash是两种非常重要的技术。Flex基于ActionScript 3.0,主要用于构建富互联网应用程序(RIA),而Flash则是著名的动画和多媒体创作工具,其内容可以...

    flex3-cn-api..zip_flex_flex 3 api_flex3 api_flex3 a_flex3 api

    2. **ActionScript 3**: Flex 3基于ActionScript 3,这是一种面向对象的脚本语言,提供了类型系统、包结构、事件模型等特性。开发者可以使用AS3编写业务逻辑、处理数据和实现复杂的算法。 3. **Flex组件库**: Flex ...

    flex与js交互 关于ExternalInterface使用的小例子

    在IT领域,尤其是在Web开发中,Flex和JavaScript的交互是一个重要的技术话题。Flex是一种基于Adobe AIR和Flash Player的开发框架,...在实际项目中,可以参考提供的压缩包文件“js与Flex交互”中的示例进行学习和实践。

    dh.rar_flex cool me_flex menu skin_flex 导航_flex4 menu_flex4 menu

    这个"dh.rar_flex cool me_flex menu skin_flex 导航_flex4 menu_flex4 menu"的压缩包文件,显然是与Flex4相关的资源,特别是关于创建酷炫的菜单导航和皮肤设计。 在Flex4中,菜单(Menu)是一种常见的用户界面元素...

    flex与ajax交互、flex与javascript交互.docx

    #### 三、Flex与Ajax交互示例 下面的示例展示了如何在一个简单的Flex应用中使用Flex-AjaxBridge技术与JavaScript进行交互。 ##### Flex端代码(main.mxml): ```xml xmlns:bridge="bridge.*" fontSize="13" ...

    Flex与java交互

    本文将详细介绍如何利用Flex与Java进行交互,并通过一个具体的示例来演示整个过程。 #### 二、准备工作 为了实现Flex与Java的交互,我们需要完成以下准备工作: 1. **下载BlazeDS**: BlazeDS是一款Adobe提供的...

    flex_as3_p2p_demo

    标题“flex_as3_p2p_demo”所指的是一组基于Flex技术的AS3 P2P(peer-to-peer)应用程序示例。Flex是Adobe开发的一个开源框架,主要用于构建富互联网应用(RIA)。AS3(ActionScript 3)是Flex的核心编程语言,用于...

    Flex(Flash)与.net交互教程

    Flex(Flash)与.NET交互教程主要讲解了如何在Flex(基于Flash技术的RIA开发工具)和.NET框架之间建立通信,实现客户端与服务器端的数据交换。本文将深入介绍这个过程,包括必要的软件安装、项目的创建以及代码实现...

    arcgis_flex.rar_FLEX ARCGIS_arcgis_arcgis flex_flex

    2. **ArcGIS Flex API详解**:详细讲解ArcGIS Flex API的各种组件和方法,如何创建地图、添加图层、进行空间分析等。 3. **案例分析**:提供示例代码和实际应用案例,帮助理解如何将GIS功能集成到Flex应用中。 4. ...

    flex和javascript交互例子

    在Flex中,我们可以使用`ExternalInterface`类来与JavaScript进行交互。`ExternalInterface.addCallback`方法允许我们在JavaScript中调用Flex组件的方法,而`ExternalInterface.call`方法则用于在Flex中调用...

    flex与java交互源码

    本示例“flex与java交互源码”提供了一个解决方案,尤其在处理参数数量不确定的情况下。 Flex与Java的通信主要依赖于AMF(Action Message Format)协议,这是一种二进制的序列化格式,能够高效地传输数据。Adobe的...

Global site tag (gtag.js) - Google Analytics