惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tenable Blog
MyScale Blog
MyScale Blog
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
爱范儿
爱范儿
博客园 - 司徒正美
D
Darknet – Hacking Tools, Hacker News & Cyber Security
量子位
N
News | PayPal Newsroom
S
Secure Thoughts
酷 壳 – CoolShell
酷 壳 – CoolShell
L
LINUX DO - 热门话题
有赞技术团队
有赞技术团队
V
Visual Studio Blog
T
Tailwind CSS Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Project Zero
Project Zero
B
Blog RSS Feed
J
Java Code Geeks
Google Online Security Blog
Google Online Security Blog
Last Week in AI
Last Week in AI
Cyberwarzone
Cyberwarzone
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
小众软件
小众软件
博客园 - 【当耐特】
Latest news
Latest news
T
Threat Research - Cisco Blogs
aimingoo的专栏
aimingoo的专栏
博客园_首页
博客园 - 三生石上(FineUI控件)
Engineering at Meta
Engineering at Meta
D
Docker
Forbes - Security
Forbes - Security
Help Net Security
Help Net Security
Apple Machine Learning Research
Apple Machine Learning Research
P
Proofpoint News Feed
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Simon Willison's Weblog
Simon Willison's Weblog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
V2EX - 技术
V2EX - 技术
N
Netflix TechBlog - Medium
The Last Watchdog
The Last Watchdog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Threatpost
Cloudbric
Cloudbric
T
The Exploit Database - CXSecurity.com
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 叶小钗
Webroot Blog
Webroot Blog

博客园 - GIS小能

利用Simplify进行ArcGIS Server多面合并查询 关于Flex Ant的相关注意事项 ArcGIS KeyGen注册机,五步操作实现ArcGIS9.X与ArcGIS10全模块无时限破解(转载:我是一只牛) Flex开发必知(1) ArcGIS Server 10 问题汇总 ArcGIS Server 10 许可文件 Ecp 基于flex及SVG技术打造交互式地图(数据篇) 将应用程序从Flex 3迁移至Flex 4(转载) ArcGIS 10 破解安装(desktop及ArcGIS Server 10) 基于Geoserver配置多图层地图以及利用uDig来进行样式配置 基于ArcGIS Server 10 在flex瓦片客户端叠加瓦片服务 胡说八道--mate flex 优化原则 flex调用WMS远程图片所产生安全错误 loder导致的安全沙箱的2122错误 flex一周精选(20100308) 解析MapBar兴趣点加载原理 Flex一周精选(20100301) 浅谈Image和Bitmap
flex与flash交互详解
GIS小能 · 2010-07-12 · via 博客园 - GIS小能

总的来说,Flex与flash的交互主要分成三种:

1、flash发送事件,flex接收事件;

2、flex调用flash的方法。

3、flash调用flex方法

在这里主要讲前两种,总的来说,这两种交互并没有特殊的难的地方,下面分别给出两个简单的例子

一、flash发送事件,flex接收

(1)首先打开flash cs,这里我用的是flash cs 4,直接拖拽一个简单的按钮,其命名为ozbutton,在主时间轴上添加动作,其代码如下

stop();
ozbutton.addEventListener(MouseEvent.CLICK,OzClick);
function OzClick(evt:MouseEvent):void
{
    trace("test button");
    dispatchEvent(new Event("test"));
}

image

代码很简单,就是发出一个事件,事件的名称叫做test

(2)Flex中接收事件,并做出响应运作,这部分也是算比较 简单,我直接贴代码。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
    <![CDATA[
        private function FlashComplete(event:Event):void
   {
    var flashMc:MovieClip = flashContent.content as MovieClip;
    flashMc.addEventListener("test",SayHello);
   }
    private function SayHello(event:Event):void
   {
    mx.controls.Alert.show("HELLO 小能");
   }
    ]]>
</mx:Script>
    <mx:Image x="200" y="200" id="flashContent"  source="cn/com/egova/umgis/flex/image/flash/eye.swf" complete="FlashComplete(event)" />
</mx:Application>

简单的来分析一下,用image装载一个swf,当装载结束后,获取其内容,其内容为一个电影剪辑,并添加一个监听即可。

但是实际过程中,仍然要注意的是:

1、分发事件应该是在主时间轴,否则会产生监听不到的情况,如果不在主时间轴上,那么其事件应该将冒泡设置为true,如 new Event(“test”,true) ;

2、如果需要在Flash内部分发事件中带有参数的话,那么必须采用自定义事件,那么应该采用如下的方法:

因为在flash as中,如果采用自定义事件,必须在外部自定义As文件,如下所示(clipEvent .as):

package {
    import flash.events.Event;
    public class clipEvent extends Event {
        public static const CLIP_CLICK:String="clip_click";
        private var _mm:String;
        public function clipEvent() {
            super(CLIP_CLICK,true);
        }
        public function get M() {
            return _mm;
        }
        public function set M(a:String) {
            _mm=a;
        }
    }
}

as文件的位置可以用include方式(as 2.0)来进行引用,其格式如下:

//上一级
include "../1a.as"
//子级
include "文件夹名/1a.as"

但是同级的情况下不要用:

/*同级
include "1a.as"

否则会报1037:包不能嵌套的错误。

在as 3.0下,应该采用import 方式,而不再用include。import 使用方式:

import  flashevent.*;

定义完自定义事件之后,便可以直接调用 ,下面为调用上面自定义事件的代码:

var p:clipEvent=new clipEvent()
        var r:Number = 25;
        p.M = r.toString();
        trace(p.M);
        dispatchEvent(p);

在flex端接收上述事件的代码如下:

private function SayHello(event:Event):void {
                if(flashMc!=null){
                    var obj:Object = Object(event);                       
                    var angle:Number = Number(obj.data);
                    trace("flash:"+angle.toString());
                }
            }

二、 flex调用flash的方法

这个比较简单,在flash中直接编写函数,直接调用即可,同样,也必须在主时间轴上,否则会产生调用不到的情况。