在As3中,已经提供了byteArray来操作二进制数据,我们同样可以利用fluorine来传递byteArray.首先我们需要按照AS3笔记(14),Hi! Flash remoting(1)-Fluorine中新建一个解决方案,在Sample.cs中,我们需要增加一个处理保存图片的方法,叫做SaveImg.代码如下:
|
usingSystem; namespace ServiceLibrary1 |
SaveImg(ByteArray bArray, String fileName)中的ByteArray为Fluorine所定义的数据类型,SaveImg方法会在服务端文件夹里保存当前位图.这里需要注意,
using FluorineFx;
using FluorineFx.AMF3;是调用FluorineFx的方法集.使用byteArray必须引用FluorineFx.AMF3,在C#中并没有byteArray.关于详细的byteArray操作可以看FluorineFx的帮助手册.
下面为将一个bitmap数据转换为byetarray的案例.下例中JPGEncoder来自As3Corelib.
| /*@ Author:frank Site:www.2solo.cn Date:2008.02.27 Info:remoting for .net with fluorinefx sending bitmap data */ package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Loader; import flash.display.Sprite; import flash.events.*; import flash.geom.Point; import flash.geom.Rectangle; import flash..net.*; import flash.utils.ByteArray; import com.adobe.images.JPGEncoder; public class amf3bmp extends Sprite { private var bArr:ByteArray; private var bmd:BitmapData=new img(0,0) as BitmapData; private var image:Bitmap; private static var nc:NetConnection = new NetConnection(); public static var btn=new test_btn; public function amf3bmp() { dispatchBtn(btn); setUpNC(); configureAssets(); } private function configureAssets():void { image=new Bitmap(bmd); addChild(image); btn.x=30; btn.y=150; addChild(btn); } /* 网络连接设定 */ private function setUpNC() { nc.client = nc; nc.objectEncoding = flash..net.ObjectEncoding.AMF3; nc.connect("http:localhost/fl1/Gateway.aspx"); } /* 加载url */ private function startLoad():void { var JPG:JPGEncoder = new JPGEncoder(70); var bary:ByteArray = JPG.encode(image.bitmapData); nc.call("ServiceLibrary1.Sample.SaveImg",new Responder(SuccResult,OtherStatus),bary,"remote.jpg"); bmd.dispose(); } /* Remoting成功事件 */ private function SuccResult(re:String) { trace("成功!"); } /* Remoting失败事件 */ private function OtherStatus(re:Boolean) { trace("错误!"); } /* 定义按钮事件 */ private function dispatchBtn(target):void { target.addEventListener(MouseEvent.CLICK,btnClick); } /* 按钮事件 */ private function btnClick(event:Event):void { trace("发送事件" ); startLoad(); } } } |
本文可作为为As3使用ByteArray的一个范例,也可以作为Flash上传图片的一个范例,我在以后会介绍其他几中图片上传方法.附上附件:http://www.2solo.cn/upload/amf3bmp_2soloDOTcn.zip
admin#flashas.net (#为@) 联系QQ:
:40777822
浙ICP备06033001号