`

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与JS交互的例子, 直接在html-template文件夹下修改index.template.html文件实现此例.

    Flex和java交互的示例代码

    Flex和java交互的示例代码,给出的Flex部分:前端界面和vo,后端Java部分,以及配置部分。注意:我直接用的JDBC连接MySql,且只做了数据显示,没有增修改删除。

    用Flex、Eclipse和blazeds_turnkey实现Flex与Java的交互的相关配置和简单示例

    用Flex、Eclipse和blazeds_turnkey实现Flex与Java的交互的相关配置和简单示例

    flexdemo示例有兴趣可以看看

    flexdemo示例有兴趣可以看看 1 flex 与普通java类通信RemoteObject 2 flex 与服务器交互HTTPService 3 flex与webservice交互WebService

    Flash+Flex+Air移动开发入门经典 pdf

    《flash+flex+air移动开发入门经典——适用于android、ios和blackberry》 第1章 flash、flex和air简介 1 1.1 adobe flash 1 1.2 actionscript 3.0 2 1.2.1 ecmascript 2 1.2.2 关键概念 3 1.3 flex框架 11 ...

    flex与java通信完整示例

    flex与java交互的例子,适合初学者

    Ext框架与Flex框架的整合实例

    如果一切正常,那么点击"与flash交互"的Ext按钮;如果一切正常,那么可以在Flash对象中看到“这是一个测试值!!!”;然后在对象中的“发送消息到JavaScript”按钮上面的文本域输入“到JavaScript中去”,然后点击...

    Flex企业应用开发实战源代码

    首先介绍了Flex/Flash的工作机理和利用Flex开发企业级应用必须掌握的基础知识和核心元素;接着剖析了Flex与Java的通信机制,以及Flex企业应用的客户端架构和服务器端架构;再接着详细讲解了BlazeDS框架的使用方法和...

    优化ADOBE_FLASH_平台的性能

    随着 Adobe® Flash® Player 10.1 的发布,开发人员可以在移动设备和桌面上使用相同的 Flash Player。本文档通过代码示例 和使用案例,为开发人员概括介绍了在移动设备上部署应用程序的最佳做法。主题包括: • ...

    ActionScript 3.0 API文档及Flex开发详解电子书

    (2)《Flex 3 RIA开发详解与精深实践》一书3位作者杨占坡,杨铭,翁颖做客AIRIA论坛,与技术爱好者在线交流。并配合AIRIA论坛开展活动在线送书、读书、交流尽在AIRIA论坛 别名: 企业级Web应用与AIR桌面应用 作者: ...

    使用Flex 4、Django、Python和PyAMF开发项目示例

    项目使用pyamf框架实现flex 与python的数据交互,实现简单添加数据到mysql数据库,以及从mysql数据库中查询数据返回到flex页面。

    ActionScript开发技术大全

    7.1.2日期对象的属性与方法 140 7.1.3日期格式化 143 7.2时间间隔 144 7.2.1使用Timer类 144 7.2.2秒表示例 146 7.3小结 149 第8章ActionScript3.0异常处理 150 8.1ActionScript3.0异常 150 8.1.1异常概述 150 8.1.2...

    ActionScript开发人员指南中文版

    了解FlashPlayer和AIR运行时中的D显示对象 创建和移动D显示对象 将D对象投影到D视图上 示例:透视投影 执行复杂的D转换 通过三角形获得D效果 第章:文本使用基础知识 第章:使用TextField类 显示文本 选择和操作文本 ...

    tview:用Go编写的用于终端UI的丰富交互式小部件

    终端用户界面的丰富交互式小部件 这个Go包为基于终端的用户界面提供了常用的组件。 这些组件包括: 输入形式(包括输入/密码字段,下拉选择,复选框和按钮) 可导航的多色文本视图 复杂的可导航表格视图 灵活的...

    FlexGraphics library vv1.7

    FlexGraphics是一套创建矢量图形的VCL组件,支持Delphi和C++Builder开发环境。FlexGraphics Lib能够用于创建地区图、绘制、电子线路、原理和记忆的图表...示例,帮助等可到官方网站下载:http://www.flex-graphics.com

    WiiGesture for Fex/AIR:允许通过WiiMote在Web应用程序中包含手势交互-开源

    WiiGesture是一个库,用于在基于Adobe Flash / Flex / Air的Web应用程序中添加手势交互。 因此,它使用WiiFlash服务(http://wiiflash.bytearray.org/?page_id=50)检索传感器数据,并且基于模板匹配的内部算法可...

    react-native-express-cn:上快速上手React Native,包含相关示例:shortcake:

    关于一份教你快速上手React Native的指南英文版本为特色 :rocket:内容精简,特为Swift上手RN开发准备 :smiling_face_with_heart-eyes:提供交互式示例,动动手重新熟悉知识点 :flexed_biceps:覆盖RN日常开发的绝大...

    luci:另一种动态类型的轻量级编程语言

    Luci 命令行解释器包括一个粗略的交互模式,允许快速探索语言及其运行时设施。 Luci 缺少大量功能,其中许多都列在下。 Luci 的内置类型和函数在中描述。 使用 Luci 编写的示例程序在samples/目录中。 建造 要...

    德鲁伊:第一个基于数据的Rust本机UI设计工具包

    实现此目标的因素很多,包括性能,丰富的交互调色板(因此有一个小部件库来支持它们)以及与本机平台的良好配合。 有关更多详细信息,请参见。 德鲁伊的当前发展很大程度上是由它在新字体编辑器使用所驱动的。 ...

    数据优先的 Rust 原生 UI 设计工具包。

    这个目标有很多因素,包括性能、丰富的交互调色板(因此有一个支持它们的小部件库)以及与原生平台的良好配合。有关更多详细信息,请参阅目标部分。Druid 目前的发展很大程度上是由于它在新字体编辑器Runebender 中...

Global site tag (gtag.js) - Google Analytics