如何缓存图像并稍后在 EaselJS 中使用?

Posted

技术标签:

【中文标题】如何缓存图像并稍后在 EaselJS 中使用?【英文标题】:How to cache an image and use it later in EaselJS? 【发布时间】:2014-12-11 19:23:02 【问题描述】:

我有一个非常基本的精灵动画。如何缓存图像并在精灵表创建的“图像”部分使用它? 我试过了:

Image1= new Image(2779,1135)
Image1.src = "img/contur.png"   

但我不知道如何在“图片”部分包含图片 1。

stage = new createjs.Stage(document.getElementById("testCanvas")); stage.clear();

var ss = new createjs.SpriteSheet(
    "animations": "run": [0, 50],
    "images": ["img/contur.png"],
    "frames":
        
        "height": 140,
        "width": 231,
        "regX": 0,
        "regY": 0,
        "count": 51
        
    );

var grant = new createjs.Sprite(ss, "run");

stage.addChild(grant);
createjs.Ticker.setFPS(24);
createjs.Ticker.addEventListener("tick", stage);

【问题讨论】:

【参考方案1】:

如果我对您的问题的理解正确,您希望在图片在 spritesheet 中使用之前加载它。

您有两种方法可以做到这一点:

    img.load上添加回调:

    img = new Image();
    img.src = "img/contur.png";
    img.onload = function(event) 
        // you can create spritesheet here
    
    

    使用 PreloadJS(推荐):

    loader   = new createjs.LoadQueue(true);
    loader.on('complete', function(event) 
        // you can create spritesheet here
    );
    loader.loadManifest([id:'imageX', src:'img/contur.png']);
    

    如果是这样的话,你还需要运行一个web服务器(例如,使用python:python -m SimpleHTTPServer 8088

对于这两个选项,您只需要使用图像的路径(浏览器会自动获取预加载的图像):

var ss = new createjs.SpriteSheet(
    "animations": "run": [0, 50],
    "images": ["img/contur.png"],
    "frames": 
        "height": 140,
        "width": 231,
        "regX": 0,
        "regY": 0,
        "count": 51
    
);

如果您使用的是 PreloadJS,您可以通过别名(定义在清单上)指定加载的图像对象:

"images": [loader.getResult('imageX')],
...

注意:记得在向舞台添加东西或动画帧后调用stage.update(),否则它只会显示空白画布或静态图像。

【讨论】:

非常感谢您的回复。实际上,图像已加载(当我开始游戏时),但在显示在画布上之前(用户完成 lvl 之后)它仍然停留几秒钟。在第二个完成的 lvl 上,它会立即出现。 EaselJS 内部是否需要另一个缓存? 我有一个更大的精灵可以在更大的屏幕上工作。如何缩小 spritesheet 以适应画布区域?

以上是关于如何缓存图像并稍后在 EaselJS 中使用?的主要内容,如果未能解决你的问题,请参考以下文章

easelJS - 使用 Javascript 调整图像大小,然后将其与 SpriteSheet 一起使用

为啥我的位图图像使用 EaselJS 在画布中出现别名?

画布动画作为 div 背景 - EaselJS

CreateJS / EaselJS 具有特定尺寸形状的奇怪性能

如何在easeljs中管理多个场景?

如何将从 UIImagePickerViewController 中选择的图像路径保存到 sqlite 数据库并稍后访问它? IOS