【发布时间】: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