【问题标题】:displaying an image in flex在 flex 中显示图像
【发布时间】:2017-02-09 20:15:43
【问题描述】:

我曾使用 Haxe 和 actionscript 编程,但我是 flex 新手。这是我的问题。如果我想从 AS3 中的服务器(blazeds)获取图像,我会将其加载到 Loader 加载器,然后将其添加到一些例如MovieClip。我应该这样做以在 flex 中加载图像吗?或者有一些常见的 flex 模式可以做到这一点?

另一个问题是。如果我在 blazeds 服务器上有一个图像,有什么更好的方法来获取它:通过 java 传递它(即读取它,然后传递给客户端)或直接使用Loader

提前谢谢你!

【问题讨论】:

    标签: flash apache-flex blazeds


    【解决方案1】:

    BlazeDS 通常用于发送在 AMF 中序列化的对象。对图像执行此操作似乎有点过头了,因为它将以ByteArray 发送,但您将花费资源来处理它。可能有更好的方法,特别是如果图像是静态内容,只需将其作为静态文件提供给运行 BlazeDS 的任何服务器。

    您可以通过多种方式在 Flex 中使用图像。 Flex 框架的一些特殊之处是:将其用作Image 组件的源,但是,对于许多任务来说,这个组件有点太大了。例如,如果您使用此组件,创建相同图像的图块将非常无效。有BitmapImage,它是Image 的轻量级对应物,但它可能没有所有所需的功能(它不继承自InteractiveObject,因此它无法响应鼠标事件。它也是仅作为 Spark 组件提供。

    如果我需要使用图像,我通常会这样做:

    1. 如果我需要在程序中缓存它们(以重用它们的BitmapData),我编写一个负责加载和缓存结果的类。

    2. 我编写了一个非常简单的组件,它扩展了UIComponent,并使用它的graphics 属性将给定的BitmapData 绘制到其中。这通常允许在多个组件中简单地共享相同的BitmapData

    3. 让此组件覆盖 updateDisplayList 方法,以便缩放或修剪它使用的 BitmapData

    我确实使用Loader 来加载图像,因为真的没有其他方法可以做到这一点。其他组件,例如 ImageSWFLoaderBitmapImage 也使用 Loader,它们不会在此基础上增加任何价值。

    可能,如果您需要 slice-9-grid 功能,那么 Spark 组件集中有一些内置的东西,但我还是宁愿自己做,然后依赖它。 Flex 组件真的不值得信任。

    【讨论】:

      【解决方案2】:

      没有必要。设置spark.components.Image 对象的source 属性将加载图像。

      加载swf文件,同样可以使用mx.controls.SWFLoader

      【讨论】:

      • 谢谢! ImageLoader哪个更常用?
      • Image 是一个轻量级版本,没有任何麻烦。在幕后,Image 使用了Loader,但是如果你只是想显示一个图像,程序员就不需要担心这个
      猜你喜欢
      • 2019-08-17
      • 1970-01-01
      • 2020-06-03
      • 1970-01-01
      • 2018-02-24
      • 1970-01-01
      • 2012-07-28
      • 2018-05-28
      • 1970-01-01
      相关资源
      最近更新 更多