Actionscript 3 可变嵌入式源AS3

Actionscript 3 可变嵌入式源AS3,actionscript-3,Actionscript 3,我现在正在制作一个小的记忆游戏,有多种卡片和背景的主题。我已经设法使一组图像嵌入到游戏中成为可能,但我想让更多的主题成为可能。为了实现这一点,我对不同的卡使用了8次: public var c1:String; [Embed(source = c1)] public var Card1:Class; 通过这一点,我创建了一个构造函数: public function Theme( _c1:String) { c1 = _c1; } var Fruit:Theme = new Theme ("

我现在正在制作一个小的记忆游戏,有多种卡片和背景的主题。我已经设法使一组图像嵌入到游戏中成为可能,但我想让更多的主题成为可能。为了实现这一点,我对不同的卡使用了8次:

public var c1:String;
[Embed(source = c1)]
public var Card1:Class;
通过这一点,我创建了一个构造函数:

public function Theme( _c1:String)
{
c1 = _c1;
}
var Fruit:Theme = new Theme (".../lib/Apple.jpg");
现在,在指定主题的另一个类中,我使用此构造函数:

public function Theme( _c1:String)
{
c1 = _c1;
}
var Fruit:Theme = new Theme (".../lib/Apple.jpg");
现在我相信这是怎么做的,它用一个字符串c1生成一个新的主题对象,该字符串c1是图片的源,然后使用该字符串源通过将其放入嵌入源来生成图片,但我得到以下错误消息:

c1 does not have a recognized extension, and a mimeType was not provided. 
Unable to transcode c1

如何防止这种情况发生?

这里您要做的是传递一个变量(在运行时,在swf编译后发生)以嵌入元标记,该元标记在编译时进行预处理(在应用程序意识到实际的主题字符串值之前)

有两种解决方案。每个主题都有一个新的swf文件。将主题的资源定义为常量,而不是变量:

[Embed(source = 'path/to/resource')]
如果你想使用一个swf,你必须重新考虑你的应用程序设计,在运行时加载主题,初始化一个加载程序,获取资源,从该资源创建一个新的
主题,然后开始实际的游戏代码

class Theme extends EventDispatcher {

   public static const THEME_READY = 'themeReady';

   private resource:Bitmap;

   public function Theme(resourceUri:String) {
      loadResource(resourceUri);
   }
   private function loadResource(path:String):void {
      var loader:URLLoader = new URLLoader(new URLRequest(path));
      loader.addEventListener(Event.COMPLETE, onResourceLoaded);
   }
   private function onResourceLoaded(e:Event):void {
      e.target.removeEventListener(Event.COMPLeTE, onResourceLoaded);
      this.resource = e.target.content; 
      initialize();
      dispatchEvent(new Event(THEME_READY));
   }
}
游戏初始化:

var themeResource:String = 'path/to/resource.jpg';
var theme:Theme = new Theme(themeResource);
theme.addEventListener(Theme.THEME_READY, initializeGame);

我认为那是行不通的

在flash中,您可以通过以下方式嵌入图像:

[Embed(source="picture.jpg")]
private var Picture:Class;
或者可以使用动态加载(在运行时)作为外部映像

我建议将每个图像作为一个类嵌入,并在主题类中实现选择逻辑