0

我是 Flex 和 ActionScript 新手,但我的任务是根据查询字符串替换 Flex 页面上的元素。换句话说,用户可以传入一个参数,例如 ?image=dog.png,ActionScript 将用用户传入的内容替换图像。整个页面布局在一个 .mxml 文件中。占位符图像(透明)需要替换为用户指定的内容。他们传入的图像将始终存在于 SWF 文件中。

我已经尝试了几件事,但都没有奏效。例如,我尝试更改图像的来源):

view.BlankImage.source = "@Embed(source='/resources/myNewImage.png')";

我还尝试插入最初隐藏的图像,假设我可以使其在运行时可见。但是 Flex 在其页面格式中包含隐藏图像,因此即使我从不显示隐藏图像,所有内容的放置都一团糟。

这是相关的mxml:

<s:VGroup width="100%" bottom="0" horizontalAlign="right">
<mx:Image id="BlankSpot" source="@Embed(source='/resources/blank.medium.png')"
    visible="{!someParameter}" includeInLayout="{BlankSpot.visible}"/>
    <toolbars:SearchBox id="searchBox"/>
</s:VGroup>

知道如何在运行时替换图像吗?我需要提供更多信息吗?

谢谢!

4

1 回答 1

2

多一点信息会有所帮助。我假设图像来自网络并且并非全部嵌入到应用程序中。

如果是这种情况,您可以将图像的 url 传递给新的 .png。

尝试BlankSpot.source = "http://someurl.com/image.png

编辑

由于您声明所有图像都嵌入到您的应用程序中,您可以用相对路径替换 web url。

也许是这样的:

var img:String = "dog.png";
BlankSpot.source = "/resources/" + img;

如果您有一定数量的图像,您还可以预先定义和嵌入它们。处理此问题的一个好方法是创建一个包含所有嵌入资产的 Resources 类。

package {
    public final class Resources {
        [Embed (source="/resources/dog.png")] public static const DOG:Class;
      }
}

然后,您可以直接在图像的源中使用它

BlankSpot.source = Resources.DOG;

此外,您似乎正在使用 Flex 4,<s:VGroup>因此您也应该切换到 spark 图像。

如果这里没有使用 mx 图像的特定原因,请将该块替换为

<s:Image id="BlankSpot" source="@Embed(source='/resources/blank.medium.png')"
visible="{!someParameter}" includeInLayout="{BlankSpot.visible}"/>
于 2012-05-01T20:08:10.893 回答