我使用Haxe和actionscript编程,但我是flex的新手。这是我的问题。如果我想从AS3中的服务器(blazeds)获取图像,我会将其加载到Loader
加载程序,然后将其添加到某个加载项中。 MovieClip
。我应该这样做以在flex中加载图像吗?或者有一些常见的flex模式用于这样做?
另一个问题是。如果我在blazeds服务器上有一个Image会有什么更好的方法来获取它:通过java传递它(即读取它,然后传递给客户端)或直接使用Loader
?
提前谢谢!
答案 0 :(得分:2)
BlazeDS通常用于发送在AMF中序列化的对象。对图像执行此操作看起来有点过分,因为它将作为ByteArray
发送,但您将花费资源来处理它。可能是一种更好的方法,特别是如果图像是静态内容,只需将其作为静态文件提供给任何运行BlazeDS的服务器。
您可以通过不同的方式在Flex中使用图像。 Flex框架的一些特殊功能是:将它用作Image
组件的源,但是,此组件对于许多任务而言有点过大。例如,如果使用此组件,则创建相同图像的切片将非常无效。有BitmapImage
,它应该是Image
的轻量级对应物,但它可能没有所有所需的功能(它不会从InteractiveObject
继承,所以它无法响应鼠标事件。它也仅作为Spark组件提供。
如果我需要使用图像,我通常会这样做:
如果我需要将它们缓存在程序中(以重用它们的BitmapData
),我会编写一个负责加载和缓存结果的类。
我编写了一个非常简单的组件,它扩展了UIComponent
并使用它的graphics
属性将给定的BitmapData
绘制到其中。这通常允许在几个组件中简单地共享相同的BitmapData
。
让此组件覆盖updateDisplayList
方法,以便缩放或修剪它使用的BitmapData
。
我确实使用Loader
来加载图片,因为没有其他方法可以做到这一点。其他组件(例如Image
或SWFLoader
或BitmapImage
也会使用Loader,并且它们不会添加任何有价值的内容。
可能,如果你需要slice-9-grid功能,那么Spark组件中内置了一些内容,但我仍然宁愿自己做,然后再依赖它。 Flex组件真的不值得信任。
答案 1 :(得分:1)
没必要。设置source
对象的spark.components.Image
属性将加载图像。
要加载swf文件,您可以以相同的方式使用mx.controls.SWFLoader
。