关于flex在做项目中遇到的问题

最近用flex来做一个工作流定义编辑器。在网上找了很多例子,也学到了不少东西。

flex是adobe公司出的对于flash的一个产品。对于学过java的人来说再简单不过了。这里也不多说了,就对于这几天在项目中遇到的问题谈一下自己的解决方法与认识。

一、flex中将自己的一个Canvas变成为图片,保存到本地。

 var bitmapData:BitmapData = new BitmapData(myCanvas.width, myCanvas.height);
 bitmapData.draw(myCanvas,new Matrix());
 var byteArray:ByteArray = new JPEGEncoder(80).encode(bitmapData);

这里变成了一个字节数组,

保存本地可以用(FileReference):fr.save(byteArray,filename);

远程的可以用:

       var request:URLRequest = new URLRequest(url);

       request.method=URLRequestMethod.POST;

       request.contentType = "application/octet-stream";//
       request.data = byteArray;

       var loader:URLLoader = new URLLoader();

       try{
                loader.load(request);
            }catch (error:Error) {
                Alert.show("上传失败");
            }

 

 

二、关于给as中的变量从外部给予初始值。这个我用的是javascript。

     as中:

--------------------------------------------------------------------

      ExternalInterface.addCallback("setSessionId",setSessionId);//给javascript调用的接口

 

      private function setSessionId(argId:String):void{
                fileUpload.JSessionId = argId;
            }

--------------------------------------------------------------------------------

     js中:

     getSWF("WorkFlowDesigner").setSessionId(sessionId);

 

     function getSWF(movieName){
           if (navigator.appName.indexOf("Microsoft") != -1){
               return window[movieName];
           }
           else {
               return document[movieName];
           }
    }

这里有一个问题:在flex还没有加载完毕这里的js就不能调用,也就是存在一个延迟加载的问题。我直接用

window.οnlοad=function(){
        //这里让flex有时间来加载
         setTimeout("setInitParam()",2000);
    };

问题解决了。

 

-------------------------------------------------------------------------------

 

 

 

三、关于flex中的沙箱。

什么是沙箱了:我的理解就是在flex中(包括flash)中在使用网络上,因为有时候会出现如:从hao123网面到sina的一个异域的访问,如果在sina的crossdomain.xml文件中有hao123的配置,那么这个flex就可以访问。

其实我在这里也没有用到这点。可能是因为遇到了代理服务的问题,flex认为是异域。所以我也加上了crossdomain.xml

内容为:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <allow-access-from domain="*"/>
  <allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>

 

 

 

四、关于as中自定义事件。

public static  const STATUSCHANGED:String="myStatusChanged";

------------------------当这个方法执行--------------------------

var e:Event =new Event(STATUSCHANGED);
dispatchEvent(e); //这里会触发下面的onstatuschanged函数

------------------------- 下面的方法onstatuschanged就会执行 ---------------------------------

 

//这里绑定了一个选择事件,有一个监听

myDrawBoard.addEventListener(DrawBoard.STATUSCHANGED,onstatuschanged);

 

 

五、关于flex中XML类的使用。

 as中提供的XML类非常好用:

 

var xml:XML=new XML("<rootnode/>);

xml.@ID = "id"

xml.appendChild(new XML("<childnode/>));

解析成:

<rootnode id="id"><childnode/></rootnode>

 

 

 

还有一些东西以后慢慢再写吧。。。

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值