【问题标题】:AS3 Flex dynamically loading images does not allow images' idAS3 Flex 动态加载图像不允许图像的 id
【发布时间】:2009-10-20 00:47:50
【问题描述】:

我需要动态加载一些图像 (4-6),以便通过单击特定图像用户会调用特定操作。嵌入图像可以解决问题,但会以文件大小为代价。如果我动态加载它们,它们会丢失 ID。

<comps:ExercisesScroller id="scroller" x="300" y="100"
        ex1="@Embed(source='assets/Exerc_1.png')" 
        ex2="@Embed(source='assets/Exerc_2.png')"/>

等等这行得通。但是在 CDATA 中实例化它不起作用:

import components.ExercisesSCroller;
private var custScroller:ExercisesScroller;
private function init():void {
    custScroller = new ExercisesScroller();
    this.addElement(custScroller);
    custScroller.ex1 = "@Embed(source='assets/Exerc_1.png')";
}

我认为这应该是一个相当琐碎的任务,但到目前为止我无法解决它。

【问题讨论】:

  • 感谢 Warren 的及时回复。在 mxml 标记中嵌入图像,即使用 source="@Embed(source='*.png')" 不是问题 - 事件处理程序工作得很好。但是如果用户不想要/不需要它们,我想避免加载图像。如果我尝试通过将图像的 url 传递给组件的可绑定属性来在 AS 中实例化自定义组件(基于 Scroller),我会收到运行时错误:SWFLoader 没有 ID 属性并且没有默认属性。抱歉,我不知道如何插入代码以使其更清晰。 – 金融时报
  • FT,点击上面的“编辑”链接,看看我是如何将代码添加到您的帖子中的,并对其进行格式化。 (您不必保存编辑更改,它只会显示我用来实现结果的 Markdown 语法。)
  • 亲爱的沃伦,感谢您的帮助。不幸的是,即使有您的建议,一旦我单击图像调用相应的函数,我仍然会收到运行时错误:“ReferenceError: Error #1069: Property id not found on mx.core.FlexLoader and there is no default value”。组件中的代码非常简单:单击图像时调用的事件处理函数。函数内部的开关检测目标 id:switch(event.target.id){}。因此,当我单击图像时,出现上述错误。如果图像是嵌入的,即在 mxml 中设置 url,那么一切正常。
  • 在这种情况下,您显然没有显示代码的重要部分。这并不是说我相信我是个天才,因此显然应该从您所展示的内容中看到错误,而是我观察到没有其他人回答。尝试将问题归结为一个简单的单文件示例,少于 50 行,没有外部组件。在上面编辑您的问题以替换我在那里输入的内容。另外,请删除上面的第二个和第三个cmets;他们现在只是噪音。

标签: apache-flex actionscript-3 image


【解决方案1】:

你不能那样使用@Embed。 init() 函数的最后一行应该是这样的:

custScroller.ex1.source = "http://my.server.com/images/theRealImage.png";

这可能需要一些调整,因为我不知道您的 ExercisesScroller 组件的内部结构是什么样的。例如,您可能只需要将 URL 作为字符串属性,并在组件中包含代码以将更改应用到内部图像。

编辑:顺便说一句,我很困惑为什么上面的代码没有使用 URL 来引用替换图像。如您所示,相对路径假定文件已经是本地文件,但是您说在确定用户需要它们之前,您不想将它们下载到最终用户的计算机上。提供这样的 URL 可以获得您想要的结果:在您更改图像的 source 属性之前不会下载图像。

【讨论】:

  • 感谢 Warren 的及时回复。在 mxml 标记中嵌入图像,即使用 source="@Embed(source='*.png')" 不是问题 - 事件处理程序工作得很好。但是如果用户不想要/不需要它们,我想避免加载图像。如果我尝试通过将图像的 url 传递给组件的可绑定属性来在 AS 中实例化自定义组件(基于 Scroller),我会收到运行时错误:SWFLoader 没有 ID 属性并且没有默认属性。对不起,我不知道如何插入代码以使其更清楚。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-07
  • 1970-01-01
  • 1970-01-01
  • 2013-06-01
  • 1970-01-01
相关资源
最近更新 更多