【问题标题】:Java byte[] to Flex BitmapImage sourceJava byte[] 到 Flex BitmapImage 源
【发布时间】:2012-05-07 07:11:01
【问题描述】:

我有 flex 移动客户端,它使用 java 服务器 byte[] 作为 flash.utils.ByteArray,但是当我想用作我的 bitmapImage 编译器的源时,它说未知类型:

private function onResult3(event:ResultEvent,token:Object):void 
{
    if(event.result!=null)  
    {
        var Lder:Loader=new Loader();
        var ba:ByteArray=event.result as ByteArray;
        Lder.loadBytes(ba);// exception is thrown here
        doktorResim.bitmapData.draw(Lder);                  
     }  

}

有什么帮助、建议吗?

【问题讨论】:

  • 有什么异常?转换后'ba'是否为空?你有没有单步执行代码?
  • ba 转换后不为空,有长度就可以了。我认为问题在于loader无法识别ba的结构。数据库是oracle,服务器作为byte[]发送给flex移动客户端的byteArray。
  • 有什么异常?请提供完整的堆栈跟踪。
  • 错误 #2044:未处理的 IOErrorEvent:。 text=Error #2124: 加载的文件是未知类型。
  • 请也显示您的 java 代码,可能是字节数组未正确加载,您需要查看 3 个位置,1)Java 正在从 Oracle 加载所有字节,2)Java 正在将所有字节写入响应流,最后 3) Flex 正在从 Java 中读取所有字节而不会中断。

标签: java apache-flex bytearray blazeds flex-mobile


【解决方案1】:

如果 Java 正在正确读取和发送字节,那么您需要等待 flex 加载所有字节以供 LoaderInfo 的使用事件 complete 参见 Loader

var url:String = "http://www.helpexamples.com/flash/images/image2.jpg";
var urlRequest:URLRequest = new URLRequest(url);
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loader_complete);
loader.load(urlRequest);
addChild(loader);

function loader_complete(evt:Event):void {
    var target_mc:Loader = evt.currentTarget.loader as Loader;
    target_mc.x = (stage.stageWidth - target_mc.width) / 2;
    target_mc.y = (stage.stageHeight - target_mc.height) / 2;
}

希望有帮助

【讨论】:

  • 错误是不同的。结果我有一个 byteArray。它的大小与java服务器中的一样。但是当我调用 loader.loadBytes(resultBytes);异常:“错误 #2044:未处理的 IOErrorEvent:.text=错误 #2124:加载的文件是未知类型。”被抛出。到目前为止,我找不到任何解决问题的方法。
  • 你添加事件监听器完成了吗,还显示你的java代码,你能用JAVA从数据库中写入文件到磁盘上吗?
  • 这是由于我在 Java Server 和 Flex 移动平台之间使用的 BlazeDs 库。我读取了每个字节数组的内容,其中一个在 flex 端就像“66 22 77 ...”,就像“BMá...”
  • 是的,我写过。问题是不同的。 Loader 实际上并没有将我的 byteArray 识别为 byteArray。无论如何,调试器都不会进入 onComplete 事件。 Java Server 代码没有任何问题,它只是从 Oracle 表格单元格返回 byteArray。
  • public byte[] getHastaResim(String hastaTc) { String sql = "select r.resim from ha_hbys_resimler r where r.tckimlik_no ='" + hastaTc + "'";字节 s[] = null;结果集 rst = null;尝试 { 尝试 { rst = exQuery(sql); } catch (ClassNotFoundException ex) { Logger.getLogger(DbConnection.class.getName()).log(Level.SEVERE, null, ex); } rst.next(); s = rst.getBytes(1); } catch (SQLException ex) { System.out.print(ex.getMessage()); } 返回 s; }//服务器代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-26
  • 1970-01-01
相关资源
最近更新 更多