请选择 进入手机版 | 继续访问电脑版
收藏本站腾讯微博新浪微博
点点网模板设计大赛 phpchina

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 用悬赏 三天解决问题 解决访问速度慢 论坛支持农历生日 - 给官方提建议

论坛活动及任务 归纳网站最新活动 地图任务 邮件更新任务:保护帐号安全

积分换实物,来参加蓝色理想积分兑换吧! 联系招聘客服 蓝色理想帮你找工作! 万元奖励等你拿——点点网模板设计大赛

查看: 31808|回复: 18

[AS1&2] AS3 中使用 URLRequest 和 URLLoader 与服务器交互 [复制链接]

mirycat 楼主

CK同伈鎖

荣誉管理

帖子
4640
体力
19243
威望
372
发表于 2006-7-5 10:56:00 |显示全部楼层
AS3 中使用 URLLoader 与 URLRequest 取代了先前版本 LoadVars 方法. 初学者可能又会迷糊了.
在现在帮助系统没有完善的情况下 (Flash 9 没有帮助, Flex Builder 2 的只有英文), 这里写篇简单的教程, 方便大家往 AS3 过渡.


在 AS3 中, 有关于网络操作的内置类全部在 flash.net 里. 下面是本教程要用到的类的清单 :

URLLoader : 用于从网络或者本地读取文件, 可以通过设置他的 dataFormat 属性改变收到的文本类型.
与 AS2 的 LoadVars 不同的是, 他的默认值 URLLoaderDataFormat.TEXT 即纯文本格式, 所以在读取外部文本变量的时候得修改一下他的 dataFormat 为 URLLoaderDataFormat.VARIABLES. 不过在 AS2 中没有该属性, 取代的是 contentType 属性.
URLRequest : 用于传递变量到服务器, 以及 URLLoader 要 load 的目标路径. 可以通过设置他的 contentType 属性改变发送到服务器的变量类型, 默认是 application/x-form-urlencoding, 也就是 URLEncode 编码.
URLVariables : 用于配置传递到服务器变量的键 / 值集合, 如 user1=Kakera&user2=Eigo.
URLLoaderDataFormat : 用于设置 URLLoader 读取文件的类型, 有 TEXT (纯文本), VARIABLES (URLEncoding 的键 / 值集合), BINARY (2 进制格式), URLLoader 会根据相应的类型进行解码操作, 如解码 URLEncode

同时还有其他不常用的 :
URLRequestMethod : 决定使用哪种方式传递数据到服务器, POST 或者 GET.
URLReqeustHeader : 用于配置传递到服务端的 HTTP 标头.


值得一提的是, URLLoader 还有相当完整的事件让我们来获取读取数据的状态, 下面是有关 URLLoader 事件的清单.

complete : 使用 URLLoader.load() 方法后, 数据完全加载完毕时触发, 通常如果能够触发这个事件的话, 说明你的程序没有问题.
httpStatus : 使用 URLLoader.load() 方法后, 获取 HTTP 状态代码时触发, 通过判断他的 state 属性我们可以获得远程文件的加载状态. 成功 (200), 没有权限 (403), 找不到文件 (404), 服务器内部错误 (500) 等等. 这个事件总是在 compelete 之前被触发.
ioError : 使用 URLLoader.load() 方法时, 发生致命错误时触发, 我还没碰到过..
open : 使用 URLLoader.load() 方法后, 开始从服务器下载数据时触发一次, 此时的 URLLoader.bytesLoaded 一定是 0.
progress : 使用 URLLoader.load() 方法后, 在从服务器下载数据的过程中持续触发, 通过侦听他的变化我们可以很方便的为 URLLoader 做加载状态的显示.
securityError : FlashPlayer 的安全错误, 比如跨域加载, 从硬盘 (文件系统) 发送 / 读取服务器上的数据.


关于注册侦听器的建议

flashplayer 内置类的所有事件都有相关事件类常量来表示, 推荐使用他们来注册事件侦听器. 而所有的内置类的事件类 (Event) 全部在 flash.events 包中
如使用
  1. import flash.events.Event;
  2. urlLoaderInstance.addEventListener(Event.COMPLETE, completeHandler);
复制代码

来代替
  1. urlLoaderInstance.addEventListener("complete", completeHandler);
复制代码


下面是 URLLoader 支持的事件所对应类的清单, 他们可以在 Flex Builder 2 的文档中找到
complete : Event.COMPLETE
httpStatus : HTTPStatusEvent.HTTP_STATUS
ioError : IOErrorEvent.IO_ERROR
open : Event.OPEN
progress : ProgressEvent.PROGRESS
securityError : SecurityErrorEvent.SECURITY_ERROR


然后下面是使用 URLLoader 的一些简单的例子
1. 单纯的读取服务器或者硬盘上同目录下叫 Variables.txt 文本文件, 文本的内容是
  1. user1=Kakera&user2=Eigo&user3=Keirago
复制代码


LoadVariablesOnly.fla

 提示:您可以先修改部分代码再运行




2. 提交数据到 ServerSide.asp, 并输出服务器的返回值
ServerSide.asp

 提示:您可以先修改部分代码再运行



SendAndLoadVariables.fla

 提示:您可以先修改部分代码再运行


[ 本帖最后由 mirycat 于 2007-2-12 01:31 编辑 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
已有 1 人评分威望 收起 理由
经典论坛大妈 + 4 历史打分

总评分: 威望 + 4   查看全部评分

西部数码顶级域名注册商39元抢注!

得失

银牌会员

帖子
677
体力
2573
威望
1
发表于 2006-7-5 11:00:00 |显示全部楼层
小弟有个问题:
as3里有没有深度管理的功能,比如有没有类似getNextHighestDepth()功能的API
租服务器,上51IDC | [长沙]招聘:PHP经理10K/WEB前端6K/PHP开发6K

使用道具 举报

mirycat 楼主

CK同伈鎖

荣誉管理

帖子
4640
体力
19243
威望
372
发表于 2006-7-5 11:04:00 |显示全部楼层
AS3 没有深度概念了. 全部使用
DisplayObjectContainer.addChild (DisplayObject 子类的实例)

相关的还有 DisplayObjectContainer.addChildAt, DisplayObjectContainer.swapChildren, swapChildrenAt, 等

使用道具 举报

得失

银牌会员

帖子
677
体力
2573
威望
1
发表于 2006-7-5 11:08:00 |显示全部楼层
呵呵,脱离表现的开发,oop万岁哦

使用道具 举报

帖子
137
体力
332
威望
3
发表于 2006-7-6 09:36:00 |显示全部楼层
没时间看啊,AS3 到现在只是知道而以,收藏起来,回头再看

使用道具 举报

tophy 
帖子
14
体力
44
威望
0
发表于 2006-7-6 10:27:00 |显示全部楼层
如果没有深度的概念,怎么来处理那些层叠关系的表现问题呢???

使用道具 举报

帖子
86
体力
253
威望
0
居住地
河南省 洛阳市
发表于 2006-7-6 11:31:00 |显示全部楼层
感觉这样整理代码平规范了许多,不过用起来还得多写一些,我这样的懒人可不想多写
一顶天下平

使用道具 举报

绝版

中级会员

帖子
135
体力
384
威望
0
发表于 2006-7-31 12:46:41 |显示全部楼层
不能下载 点击下载本教程以及教程的源码
一男对一女说:“我请你吃饭。”
女说:“改日吧。”

使用道具 举报

mirycat 楼主

CK同伈鎖

荣誉管理

帖子
4640
体力
19243
威望
372
发表于 2006-7-31 14:28:18 |显示全部楼层
原帖由 ajaxman 于 2006-7-31 12:46 PM 发表
不能下载 点击下载本教程以及教程的源码

已修正

使用道具 举报

帖子
1912
体力
7180
威望
4
居住地
广东省 广州市
发表于 2006-7-31 19:00:25 |显示全部楼层
OOP确实是个好东西.开发小东西的时候注意不到,到搞个稍大点的东东才知道OOP真的是好啊!

使用道具 举报

帖子
89
体力
480
威望
29
发表于 2006-9-15 16:06:46 |显示全部楼层
不错,赞一个

使用道具 举报

54068 
帖子
44
体力
94
威望
0
发表于 2006-9-23 19:22:30 |显示全部楼层
好像很难喔?

使用道具 举报

一只小海豹

高级会员

帖子
209
体力
1104
威望
0
发表于 2006-10-15 19:26:21 |显示全部楼层
顶,好贴!
在Web程序的开发中度过每一天......
我Blog:
一只小海豹!

使用道具 举报

帖子
40
体力
347
威望
0
发表于 2006-10-18 10:18:01 |显示全部楼层
不能大打开!要打开MY.EXE晕!

使用道具 举报

zzwgyr 

coffeeZhang

高级会员

帖子
289
体力
828
威望
3
发表于 2007-1-31 11:16:00 |显示全部楼层
不能下载了?
flash AS交流 群:16362102

http://www.flashas.cn

使用道具 举报

帖子
6
体力
22
威望
0
发表于 2007-11-18 22:30:21 |显示全部楼层
提醒:最后回贴距现在292天,请不要无意义回复
原帖由 tophy 于 2006-7-6 10:27 发表
如果没有深度的概念,怎么来处理那些层叠关系的表现问题呢???


还是有深度概念的,只是在不需要的时候,不用我们自己设置,FLASH会将后 addChild的显示对象放在屏幕的上层,这样,这个显示对象就会盖住下面的显示对象。当然深度是可以在运行时调整的。

使用道具 举报

帖子
455
体力
1580
威望
0
发表于 2007-11-24 11:42:57 |显示全部楼层
关于发送图片流的问题,请问下我接收的话有什么特殊的要求么?朋友用flash取得一段图象并发送得我,我处理的时候出错....但他用php生成图象就可以.有关经验的朋友请指点下...

使用道具 举报

lkele 
帖子
138
体力
304
威望
0
居住地
广东省 深圳市
发表于 2007-11-24 20:43:56 |显示全部楼层
不错,谢谢楼主

使用道具 举报

帖子
216
体力
901
威望
16
居住地
重庆市 涪陵区
发表于 2009-1-20 10:42:17 |显示全部楼层
提醒:最后回贴距现在 423 天,请不要无意义回复
原帖由 tophy 于 2006-7-6 10:27 发表
如果没有深度的概念,怎么来处理那些层叠关系的表现问题呢???


swapChildrenAt


用这个,,,具体你查下帮助...

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|安久科技提供CDN|blueidea.com ( 京ICP备05002321号 )  

GMT+8, 2012-2-13 07:58 , Processed in 0.130279 second(s), 9 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部