首先,我在AS3比较n00b,所以如果这是一个可怕的问题,我很抱歉。我已经搜索过,无法找到这个确切问题的直接参考/解决方案。
我的问题: 我正在尝试将所有相关图形嵌入到类(“Assets.as”)中,该类将使用静态方法按名称检索这些嵌入图形。
我尝试过的事情:
Assets.as
package
{
[...imports...]
public class Assets
{
[Embed(source="assets/images/l_peak.png")]
public static const l_peak:Class;
public static function getByName(pName:String):Bitmap
{
var retClass:Class = flash.utils.getDefinitionByName(pName) as Class;
return new Bitmap(new retClass());
}
}
}
然而,然后返回一个null对象。无论我如何工作,getDefinitionByName()
都返回null或者说没有一个名为this的对象(即“l_peak”)。
我知道你可以使用loader()来动态地使用图形,但我希望嵌入这些图形并简单地通过它们的名称动态获取它们。
非常感谢任何帮助!
答案 0 :(得分:2)
你为什么不试试:
return Assets[pName];
答案 1 :(得分:1)
我认为该属性必须是公共var而不是const但我可能是错的。 作为测试,尝试使用public var
[Embed(source="assets/images/l_peak.png")]
public var l_peak:Class;
此外,本文可能会帮助您: http://www.bit-101.com/blog/?p=853
如果您仍然遇到问题,可能是资产路径出现问题。来自live docs:
指定要嵌入的资产的名称和路径;绝对路径或相对于包含嵌入语句的文件的路径。嵌入资产必须是本地存储的资产。因此,您无法指定要嵌入的资产的URL。 有关设置路径的详细信息,请参阅关于设置嵌入资产的路径。