AS3动态参考嵌入式图形?

时间:2012-03-06 21:50:08

标签: actionscript-3 graphics loading

首先,我在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()来动态地使用图形,但我希望嵌入这些图形并简单地通过它们的名称动态获取它们。

非常感谢任何帮助!

2 个答案:

答案 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。   有关设置路径的详细信息,请参阅关于设置嵌入资产的路径。