有没有人知道为什么getDefinitionByName函数与“com.foo.Bar”一起使用并且“com.foo.Rab”会出错?
我唯一的线索是在将项目导入到Flash Builder 4.5 for PHP(即4.5.1)之前创建了类com.foo.Bar。
我的问题非常具体,事实上如果你有FB4.5.1,同一个程序的先前版本,以及很多时间,你可以尝试自己。显然,我希望找到经历过这个特定问题的人或任何有类似功能的相关问题。
答案 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,否则将无效。