在flex中显示图像

时间:2012-03-25 09:45:35

标签: flash flex blazeds

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

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

提前谢谢!

2 个答案:

答案 0 :(得分:2)

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

您可以通过不同的方式在Flex中使用图像。 Flex框架的一些特殊功能是:将它用作Image组件的源,但是,此组件对于许多任务而言有点过大。例如,如果使用此组件,则创建相同图像的切片将非常无效。有BitmapImage,它应该是Image的轻量级对应物,但它可能没有所有所需的功能(它不会从InteractiveObject继承,所以它无法响应鼠标事件。它也仅作为Spark组件提供。

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

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

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

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

  4. 我确实使用Loader来加载图片,因为没有其他方法可以做到这一点。其他组件(例如ImageSWFLoaderBitmapImage也会使用Loader,并且它们不会添加任何有价值的内容。

    可能,如果你需要slice-9-grid功能,那么Spark组件中内置了一些内容,但我仍然宁愿自己做,然后再依赖它。 Flex组件真的不值得信任。

答案 1 :(得分:1)

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

要加载swf文件,您可以以相同的方式使用mx.controls.SWFLoader