在切换到FB 4.5.1后,Flash Builder中的getDefinitionByName将racist作为新类

时间:2011-08-26 10:24:33

标签: actionscript-3 flash-builder flash-builder4.5

有没有人知道为什么getDefinitionByName函数与“com.foo.Bar”一起使用并且“com.foo.Rab”会出错?

我唯一的线索是在将项目导入到Flash Builder 4.5 for PHP(即4.5.1)之前创建了类com.foo.Bar。


我的问题非常具体,事实上如果你有FB4.5.1,同一个程序的先前版本,以及很多时间,你可以尝试自己。显然,我希望找到经历过这个特定问题的人或任何有类似功能的相关问题。

2 个答案:

答案 0 :(得分:1)

我将卡片游戏从纯Flash / AS3移植到Flex 4.5,在原始应用中,我使用getDefinitionByName动态地从库中加载卡片MovieClip:

var sprite:Sprite = new (getDefinitionByName(spriteName) as Class);

但在我的Flex应用程序中,我不再使用它了。相反,我有这个类 - Assets.as:

package {
    public class Assets {
        [Embed('assets/Pref.swf', symbol='spades_Q')]
        public static const SPADES_Q:Class;

        [Embed('assets/Pref.swf', symbol='clubs_Q')]
        public static const CLUBS_Q:Class;

        [Embed('assets/Pref.swf', symbol='diamonds_Q')]
        public static const DIAMONDS_Q:Class;

        [Embed('assets/Pref.swf', symbol='hearts_Q')]
        public static const HEARTS_Q:Class;

        ....

然后在我的主要课程中使用:

var sprite:Sprite = new Assets[spriteName];

例如:

var sprite:Sprite = new Assets['HEARTS_Q'];

也许这有助于你?

答案 1 :(得分:0)

getDefinitionByName只能导入当前ApplicationDomain中已存在的类。您的应用必须在执行早期以正常方式导入com.foo.Rab,否则将无效。