如何用BlazeDS更改图片

摘要:
我相信您在实际应用中会遇到这样的问题:如何动态更改网元图片或Topo背景?本文通过一个特定的示例演示了如何将图像从本地上传到服务器,并将其设置为Topo背景。有关FileReference的用法,请参阅官方文档FileReferenceAPI:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/FileReference.html2.BlazeDS本文使用BlazeDS上传文件,后续文章也使用BlazeDS。有关BlazeDS的更多信息,请参阅BlazeDS官方网站:http://opensource.adobe.com/wiki/display/blazeds/BlazeDS现在让我们进入正题:1.选择一张图片并显示它privatefunctionselectImage():void{fileReference=newFileReference();fileReference.addEventListener;fileReference.addEventListener;fileReference.browse;}2.上传图片,上传完成后,将其设置为Topo背景1 privatefunctionuploadImage():void{2RemoteObjectUtil.invoke;3}45 privatefunctionhandleUploadSuccess:void{6if(resultsBoolean&&callBackFunction!

相信大家在实际应用中肯定会碰到这样的问题:如何动态更改网元图片或者Topo背景?本文用具体实例演示了如何从本地上传图片到服务器,并设置为Topo背景。

如何用BlazeDS更改图片第1张

首先介绍一下本文用到的技术:

1. FileReference
FileReference用于从本地打开文件,而且需要添加编译选项:-target-player=10.0.0。关于FileReference的用法请参考官方文档
FileReference API:

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/FileReference.html

2. BlazeDS

本文用BlazeDS上传文件,后续文章也使用了BlazeDS。更多关于BlazeDS的信息请参考官方网站

BlazeDS:http://opensource.adobe.com/wiki/display/blazeds/BlazeDS

下面进入正题:
1. 选择图片,然后将图片显示出来

privatefunctionselectImage():void {
fileReference =newFileReference();
fileReference.addEventListener(Event.SELECT, function(e:Event):void {
fileReference.load();
});
fileReference.addEventListener(Event.COMPLETE, function(e:Event):void {
var loader:Loader =newLoader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(event:Event):void {
image.source =event.target.content;
uploadButton.enabled =true;
});
loader.loadBytes(fileReference.data);
});
fileReference.browse([newFileFilter("Image Files", "*.jpg;*.jpeg;*.gif;*.png;*.JPG;*.JPEG;*.GIF;*.PNG")]);
}

如何用BlazeDS更改图片第2张

2. 上传图片,并且在上传结束后,设置成Topo背景

1 privatefunctionuploadImage():void {
2 RemoteObjectUtil.invoke("UploadImage", "uploadFile", handleUploadSuccess, fileReference.name, fileReference.data);
3 }
4 5 privatefunctionhandleUploadSuccess(result:Object):void {
6 if(result asBoolean&&callBackFunction !=null){
7 callBackFunction(fileReference.name);
8 PopUpManager.removePopUp(this);
9 }else{
10 Alert.show("Upload Image failed.");
11 }
12 };
1 uploadImage.callBackFunction =function(name:String):void {
2 var style:IStyle;
3 if(network.currentSubNetwork ==null){
4 style =box;
5 }else{
6 style =network.currentSubNetwork;
7 }
8 style.setStyle(Styles.BACKGROUND_TYPE, Consts.BACKGROUND_TYPE_IMAGE);
9 style.setStyle(Styles.BACKGROUND_IMAGE, name);
10 };

如何用BlazeDS更改图片第3张

3. 调用后台方法的代码如下:

1 publicstatic functioninvoke(destination:String, method:String, callBack:Function, ... parameters:Array):void {
2 var remoteObject:RemoteObject =newRemoteObject(destination);
3 remoteObject.addEventListener(FaultEvent.FAULT, function(e:FaultEvent):void {
4 Alert.show(e.toString());
5 });
6 remoteObject.addEventListener(ResultEvent.RESULT, function(e:ResultEvent):void {
7 if(callBack !=null){
8 callBack(e.result);
9 }
10 });
11 remoteObject.getOperation(method).send.apply(null, parameters);
12 }

4. 后台保存图片的代码如下,将PATH更改为Web工程部署后的目录:

1 publicclass UploadImage {
2 privatefinal static StringPATH ="F:/ws/java/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/BlazedsDemo/";
3 4 publicbooleanuploadFile(StringfileName, byte[] content) throws Exception {
5 if(content ==null|| content.length ==06 || fileName ==null|| fileName.length() ==0){
7 return false;
8 }
9 File file =newFile(PATH +fileName);
10 FileOutputStream stream =newFileOutputStream(file);
11 stream.write(content);
12 stream.close();
13 return true;
14 }
15 }

如需源代码可留言

免责声明:内容来源于网络,仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇临界段CCriticalSection的使用silverlight 了解了一种新技术 科普下下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Web--js高级--11月30日随笔

一: 面向对象的三种方式: 1.单例模式 2.工厂模式 3.构造函数 js天生自带的类 Object 基类: Function Array Number Math Boolean Date Regexp String 二:事件 浏览器客户端上客户出发的行为都成为是事件 所有的事件都是天生自带的,不需要我们去绑定,只需要我们去触发。 通过 obj.事件名=...

触摸

  UIView支持触摸事件  因为继承于UIResponder,而且支持多点触摸,使用时需要定义UIView子类,实现触摸相关的方法 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;点击开始时执行此方法(多么见名知意) - (void)touchesEnded:(NSSet...

用pygame实现打飞机游戏-6-显示敌机

1 #coding=utf-8 2 importpygame 3 #导入pygame模块 4 from pygame.locals import * 5 #导入检测键盘的子模块 6 importtime 7 classAircraftCoordinate(object): 8 def __init__(self,screen): 9...

使用消息系统进行微服务间通讯时,如何保证数据一致性

前言 微服务是当下的热门话题,今天来聊下微服务中的一个敏感话题:如何保证微服务的数据一致性。谈到分布式事务,就避免不了CAP理论。 CAP理论是指对于一个分布式计算系统来说,不可能同时满足以下三点: 1. 一致性(Consistence) (等同于所有节点访问同一份最新的数据副本)2. 可用性(Availability)(对数据更新具备高可用性)3. 容...

js 无刷新监听URL的变化

无刷新改变路由的两种方法 通过hash改变路由 代码: window.location.hash='edit' 效果: http://xxxx/#edit 通过history改变路由 history.back(): 返回浏览器会话历史中的上一页,跟浏览器的回退按钮功能相同 history.forward():指向浏览器会话历史中的下一页,跟浏览器的前进...

浏览器的统一指针事件:Pointer Event

 在早期的浏览器,输入的事件其实相对单纯,只有考虑到鼠标和键盘两种;而当时的鼠标事件,其实就是 click、mousedown、mouseup 等等的事件。但是当手机、平板开始流行时候,再移动装置上的主要操作界面,已经从鼠标变成是触控了~ 由于触控和鼠标的操作逻辑,算是有根本上的差异的,再加上大部分的装置又支持多点触控,所以虽然浏览器大多会把触控的事件对应...