Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 AS3:加载外部和内部资产之间有什么区别?_Actionscript 3 - Fatal编程技术网

Actionscript 3 AS3:加载外部和内部资产之间有什么区别?

Actionscript 3 AS3:加载外部和内部资产之间有什么区别?,actionscript-3,Actionscript 3,我对编程很生疏,不理解内部加载和外部加载之间的区别。使用Flash Develop制作的游戏,我的所有资产都将在软件包中。它们并不多(20个图像和2 MB的小型mp3)。用下面的代码加载我的资产有什么问题?或者为什么我必须创建一个带有等待计时器的URL加载器?如有任何意见,将不胜感激 public class ImageLoader { private var alImages:Array = new Array; public function Im

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

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;
    }
}
公共类ImageLoader
{       
私有变量alImages:数组=新数组;
公共函数ImageLoader()
{
[Embed(source=“../lib/greenbutton.png”)]
var-imgGreenButton:类;
alImages.push([“imgGreenButton”,imgGreenButton]);
[Embed(source=“../lib/tray.jpg”)]
var-imgTray:类;
推送([“imgTray”,imgTray]);
}
公共函数getBitmap(搜索:字符串):位图{
//为加载创建青色方形失败
var tempData:BitmapData=新的BitmapData(40,40,false,0x000FFFF);
var tempBitmap:Bitmap=新位图(tempData);
对于(vari:int=0;i
当您将添加任何资产(手段)MovieClip/Image作为*.Fla文件的设计时Flash库的一部分时。这叫做内部资产

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

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

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

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