【问题标题】:Actionscript: how to call embedded image from an mxml file that didn't embed it?Actionscript:如何从未嵌入的 mxml 文件中调用嵌入的图像?
【发布时间】:2012-06-07 02:41:28
【问题描述】:

我在我的 Flex mxml 文件(脚本部分)中嵌入了一个图像,使用:

<fx:Script>
   <![CDATA[
   import com.views.myTitleWindowFile;
   ...
   [Embed(source="com/assets/image_error.png")]
   public static const IMG_ERROR:Class;
   ...

而且效果很好。现在我想在名为 myTitleWindowFile(用于 spark TitleWindow 组件)的 mxml 文件中使用相同的图像,该文件如上所示导入。 myTitleWindowFile.mxml 在这一行给出错误:

Alert.show("Please enter a value.", "Error",Alert.OK,null,null,IMG_ERROR);

错误状态:1120: Access of undefined property IMG_ERROR. 知道我做错了什么吗?提前感谢任何cmets。

【问题讨论】:

标签: actionscript-3 apache-flex actionscript flex4


【解决方案1】:

您的myTitleWindowFile 不应访问其父级中的任何资源。它很容易导致您想在应用程序的另一个没有定义IMG_ERROR 的区域中重用myTitleWindowFile 的情况。

我会在myTitleWindowFile 中声明IMG_ERROR 并在本地访问它。它使您的代码更简洁、更便携。

【讨论】:

  • 谢谢 Jason,如何在仍然只嵌入文件一次的同时做到这一点?也就是说,如果在整个应用程序中也使用了 TitleWindow 中使用的相同图标?
  • @ggkmath 我正要提出与您已经找到的其他答案类似的建议。我个人在多个组件中声明 IMG_ERROR 类没有问题,只要它们都在我的 /assets/ 文件夹中引用相同的源图像。如果您更新源图像,则嵌入该图像的所有类都将得到更新。
  • 那么,您是否愿意牺牲文件大小(例如通过多次嵌入来增加文件大小(我假设这就是您所说的“声明”))以获得制作 TitleWindow 代码的好处(在这种情况下)更便携?或者,你是否避免多次嵌入,你只是多次声明一个类似的类来保持代码的可移植性?
  • @ggkmath 对不起,是的,这就是我所说的“声明”。这真的取决于情况。如果文件大小是一个问题,那么使用另一个答案中建议的静态资源类可能是一个不错的选择,特别是如果您嵌入的图像本身很大。我过去开发的应用程序非常注重图像,文件大小不是一个大问题,但开发易于重用且尽可能独立的组件是一个重点。
猜你喜欢
  • 2011-11-21
  • 2011-04-23
  • 1970-01-01
  • 1970-01-01
  • 2011-06-09
  • 1970-01-01
  • 2010-11-14
  • 2011-12-27
  • 1970-01-01
相关资源
最近更新 更多