有谁知道为什么 getDefinitionByName 函数与“com.foo.Bar”一起使用并在“com.foo.Rab”中出现错误?
我唯一的线索是 com.foo.Bar 类是在将项目导入 Flash Builder 4.5 for PHP(即 4.5.1)之前创建的。
我的问题很具体,事实上,如果你有 FB4.5.1,同一程序的早期版本,并且有很多时间,你可以自己尝试。显然,我希望找到经历过此特定问题或具有类似功能的任何相关问题的人。
有谁知道为什么 getDefinitionByName 函数与“com.foo.Bar”一起使用并在“com.foo.Rab”中出现错误?
我唯一的线索是 com.foo.Bar 类是在将项目导入 Flash Builder 4.5 for PHP(即 4.5.1)之前创建的。
我的问题很具体,事实上,如果你有 FB4.5.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'];
也许这对你有帮助?
getDefinitionByName 只能导入当前 ApplicationDomain 中已经存在的类。您的应用程序必须在执行早期以正常方式导入 com.foo.Rab,否则它将无法工作。