很多时候,我们需要将swf放到网页加载,并且将相应的资源都放到网页上,在网页中加载swf通常是通过"*.swf?p=..&p2=..."这样的方式来调用这个swf和传参数的,如果这个网页和swf放在同一个目录(即同一个文件夹下)是没有问题的,可是对于一个项目来说,我们可能会有很多这样的网页,都放在一个文件夹下很难管理,于是我们需要把他们放到不同的文件夹下,比如用a.html去加载b.swf,a.html在../1/2下,b.swf在../3/4下,那我们的swf怎么去加载与swf同目录的资源呢,我们的做法是:获得swf的所在的绝对路径,要获得swf的绝对路径,可以这样:var url:String = stage.loaderInfo.url;我们需要将文件名去掉url.slice(0,url.lastIndexOf("/")+1);在网页上自然行得通了,按道理本机也行得通,但是实际上:显示安全沙箱出错或者加载资源出错,why?

在本机上,我们运行swf,得到url的值为,路径也就是file:///C://upload/;

在本机上,我们 运行同目录下的html文件,发现沙箱问题,加载问题等,url的值是file://C:\upload\,所以找不到

于是我们需要改成:url.slice(0,url.lastIndexOf("\\")+1);注意:前面的\只是转义字符,实际上就是让路径遇到最后一个"\"时截止,这样本机运行就没问题了。

下面写个例子:

var url:String="";
this.loaderInfo.addEventListener(Event.COMPLETE,onLoaderComplete);//当swf自身加载完成后调用
function onLoaderComplete(e:Event):void{
this.loaderInfo.removeEventListener(Event.COMPLETE,onLoaderComplete);
url = stage.loaderInfo.url;//获得主swf的绝对路径,将之作为URLRequest的路径
url = url.slice(0,url.lastIndexOf("/")+1);//将文件名去掉
url = url.slice(0, url.lastIndexOf("\\") + 1);//前面的\只是转义字符,实际上就是让路径遇到最后一个"\"时截止,为了能在本机上运行.
//补充说明:下面代码是接收从html传过来的参数,html传参数一般有两种方式,swf皆可以用下面方式获取这些参数,欲知请继续阅读:
for(var key:String in paramObj){
trace(paramObj[key]);
}
trace((e.target as LoaderInfo).parameters["url"],"htm参数url");
trace((e.target as LoaderInfo).parameters["callbackfn"],"htm参数callbackfn");
trace((e.target as LoaderInfo).parameters["cf"],"htm参数cf");
}

从html传参一般有两种方式:

一:

<param name="movie" value="/swf/Upload.swf?url=http://localhost:15100/Handler.ashx&callbackfn=fasdfdasf&cf=upfile.c" />

二:

<param name="movie" value="/swf/Upload.swf" />
<param name="FlashVars" value="url=http://localhost:15100/Handler.ashx&callbackfn=fasdfdasf&cf=upfile.c" />

[ActionScripte 3.0] swf和网页通信的更多相关文章

  1. javascript和swf在网页中交互的一些总结

    Javascript和swf在网页中交互一般可有以下几种情况: 1.swf和这些调用的javascript在同域 2.swf和这些调用的javascript在不同域,比如加载远程的swf然后call别 ...

  2. 基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍。最后我们将会实现一个基于Server-Sent Event和Flask简单的在线聊天室。

    基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍.最后我们将会实现一个基于S ...

  3. 在ASP.NET2.0里打印网页指定的内容(比如打印网页里的一个Table)

    原文:在ASP.NET2.0里打印网页指定的内容(比如打印网页里的一个Table) 打印指定内容: <html> <head> <script   type= " ...

  4. vue2.0 $emit $on组件通信

    在vue1.0中父子组件通信使用$dispatch 和 $broadcast,但是在vue2.0中$dispatch 和 $broadcast 已经被弃用. 因为基于组件树结构的事件流方式实在是让人难 ...

  5. HDC 2021 | HMS Core 6.0:连接与通信论坛,为App打造全场景连接体验

    如何在弱网环境下让用户享受无中断沉浸体验? 如何在全场景互联中让多设备交互如丝般顺滑? 如何在无网区域让移动终端发出紧急求助信息? 连接无处不在,连接与体验息息相关!流畅的网络体验已成为应用开发的关键 ...

  6. 最新管家婆财贸ERP C9 V22.0的应用网页版的财务软件1000用户补丁免狗授权注册机网络版软件下载

    管家婆财贸ERPC9应用价值: 1.多组织独立核算 多种组织形态核算,出具独立的三大财务报表及业务报表,发挥经营管理的积极性,便于专业化运营. 2.兼顾统筹与分权 满足多种集团统管与分权管控模式需求, ...

  7. [ActionScritp 3.0] 使用LocalConnection建立通信

    包 flash.net 类 public class LocalConnection 继承 LocalConnection → EventDispatcher → Object 语言版本:  Acti ...

  8. vue2.0父子组件之间通信

    父组件是通过props属性给子组件通信的来看下代码: 父组件: <parent> <child :child-com="content"></chil ...

  9. 图解从 URL 到网页通信原理

    前言 一.文本对话--从请求到响应 二.TCP/IP 协议族介绍 三.基于TCP/IP通信过程 四.TCP建立连接及断开(重点补充) 小结 前言 互联网的原始目的,就是为了传输文本(文本对话).那我们 ...

随机推荐

  1. 06.Lucen入门程序-Field

    需求: 实现一个歌词搜索系统,通过关键字搜索,凡是文件名或文件内容包括关键字的文件都要找出来. 注意:该入门程序只对文本文件(.txt)搜索. Lucene中包含两个重要的类: IndexWriter ...

  2. String.getBytes()[转]

    在Java中,String的getBytes()方法是得到一个操作系统默认的编码格式的字节数组.这个表示在不通OS下,返回的东西不一样! String.getBytes(String decode)方 ...

  3. [C++] Const Summary (mind map)

    Const Summary

  4. code3731 寻找道路

    将图反向,从终点spfa,把和终点没有联系的点找出来, 把它们和它们所连接的所有点删去(反向图) 然后再一遍spfa,输出最短路即可 代码: #include<iostream> #inc ...

  5. 高性能python编程之协程(stackless)-乾颐堂

    我们都知道并发(不是并行)编程目前有四种方式,多进程,多线程,异步,和协程. 多进程编程在python中有类似C的os.fork,当然还有更高层封装的multiprocessing标准库,在之前写过的 ...

  6. 修改字段名change

    ALTER TABLE tc_activity_miaosha_item CHANGE `batch_id` `movie_batch_id` INT () NOT NULL DEFAULT ' CO ...

  7. Redhat9.0+Apache1.3.29+Mysql3.23.58+PHP4.3.4

    Redhat9.0+Apache1.3.29+Mysql3.23.58+PHP4.3.4 TAG标签: 摘要:红帽创建于1993年,是目前世界上最资深的Linux和开放源代码提供商,同时也是最获认可的 ...

  8. block functions区块函数插件的定义与使用

    在插件目录plugins里新建文件 block.插件名.php文件(如 block.插件名.php) 例:block.test2.php <?php function smarty_block_ ...

  9. CMDB和运维自动化

    IT运维,指的是对已经搭建好的网络,软件,硬件进行维护.运维领域也是有细分的,有硬件运维和软件运维 硬件运维主要包括对基础设施的运维,比如机房的设备,主机的硬盘,内存这些物理设备的维护 软件运维主要包 ...

  10. CBV加装饰器解决登录注册问题和 <<中间件>>

    文本目录 CBV加装饰器解决登录注册问题 一:什么是中间件 二:中间件有什么用 三:自定义中间件 四:中间件应用场景 五:SCRF TOKEN跨站请求伪造 六: 其他操作 CBV加装饰器解决登录注册问 ...