【问题标题】:AS3: What is the difference between loading external and internal assets?AS3:加载外部资产和内部资产有什么区别?
【发布时间】:2011-12-06 10:47:15
【问题描述】:

我对编程很生疏,不了解内部加载和外部加载之间的区别。使用 Flash Develop 制作的游戏,我的所有资产都将包含在包中。它们数量不多(20 张图片和小 mp3 ~2 MB)。使用下面的代码加载我的资产有什么问题?或者为什么我必须创建一个带有等待计时器的 URL 加载器?任何 cmets 将不胜感激。

public class ImageLoader 
{       
    private var alImages:Array = new Array;     

    public function ImageLoader() 
    {
        [Embed(source = "../lib/greenbutton.png")] 
        var imgGreenButton:Class;
        alImages.push(["imgGreenButton", imgGreenButton]);

        [Embed(source = "../lib/tray.jpg")]
        var imgTray:Class;
        alImages.push(["imgTray", imgTray]);    

    }

    public function getBitmap (search:String):Bitmap {          

        // Create Cyan square for load fails
        var tempData:BitmapData = new BitmapData(40, 40, false, 0x000FFFF);
        var tempBitmap:Bitmap = new Bitmap (tempData);

        for (var i:int = 0; i < alImages.length; i++) {         
            if (alImages[i][0] == search) {             
                tempBitmap = new alImages[i][1];                    
            }
        }
        return tempBitmap;
    }
}

【问题讨论】:

  • 我不确定我是否理解您的问题:)。您没有在此示例中加载您的资产。您正在嵌入它们(这意味着它们在编译时被编译到您的 swf 中,并且可以直接从您的代码中访问)。要加载外部资产,您需要创建 Loader 类实例、创建 URLRequest 对象等。然后您需要实现一些事件处理程序。至于您的代码 - 使用 Dictionary 而不是 Array 来存储位图。字典会让您直接访问位图,而不是遍历所有项目。
  • 感谢 rincewind。我会查字典。

标签: actionscript-3


【解决方案1】:

当您将任何资产(意味着)MovieClip/Image 添加为 *.Fla 文件的设计时 Flash 库的一部分时。它被称为内部资产。

如果您将使用 ActionScript 从 Swf 文件外部加载已编译的 swf 中的任何内容,则称为外部资源。

对于内部资产: 1. 它将在您的 Fla 文件编译时进行编译。 2.您的swf文件与外部资产的比较变得很大。 3. 与外部资产相比,初始加载时间会很长。

对于外部资产: 1. Fla 文件编译时不会编译。 2.您的swf文件与内部资产比较变小。 3. 与内部资源相比,初始加载时间会很短。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多