EaselJS无法显示位图。

11
这是我的easel js函数,它绘制了一个红色的圆和一张图片,但是圆显示出来了,但图片没有显示。
这是我 easel js 函数,它画了一个红色的圆和一张图片,然而圆显示出来了,但图片没有。
function Start() {
          var stage = new createjs.Stage("DogeCanvas");
          var dog = new createjs.Bitmap("doge.jpg");
          var circle = new createjs.Shape();
          circle.graphics.beginFill("red").drawCircle(0, 0, 50);
          circle.x = 100;
          circle.y = 100;
          dog.x=100;
          dog.y=100;
          stage.addChild(circle, dog);
          stage.update();
    }

这是HTML文件

<!DOCTYPE html>
<html>
    <head>
        <title>test</title>
        <script src="http://code.createjs.com/easeljs-0.7.0.min.js"></script>
        <script src="Doge.js"></script>

    </head>

    <body bgcolor="#C7C7C7" onload="Start();">
          <canvas id="DogeCanvas" width="480" height="320"></canvas>
    </body>
</html>

为什么?求帮助,似乎在其他人的代码中这个可以工作,但为什么它对我不起作用?

1个回答

16

图片可能尚未加载。

  1. 您可以向舞台添加一个Ticker来不断更新它(大多数应用程序都这样做,因为有其他随时间改变的东西)

示例:

createjs.Ticker.on("tick", stage);
// OR
createjs.Ticker.addEventListener("tick", stage);
// OR
createjs.Ticker.on("tick", tick);
function tick(event) {
    // Other stuff
    stage.update(event);
}
  1. 监听图片的onload事件,再次更新舞台

示例:

var bmp = new createjs.Bitmap("path/to/image.jpg");
bmp.image.onload = function() {
    stage.update();
}

  1. 在将图像绘制到舞台之前,使用PreloadJS等工具预加载图像。这对于具有更多资源的大型应用程序来说是更好的解决方案。

示例:

var queue = new createjs.LoadQueue();
queue.on("complete", function(event) {
    var image = queue.getResult("image");
    var bmp = new createjs.Bitmap(image);
    // Do stuff with bitmap
});
queue.loadFile({src:"path/to/img.jpg", id:"image"});

4
答案是完全正确的 :),只需要帮助其他人使用第2点,监听图像的onload事件,您可以使用createjs.Bitmapimage属性,例如:var bitmap = new createjs.Bitmap("image.jpg"); bitmap.image.onload = function() { stage.update(); };... stage.addChild(bitmap); +1 :) - albciff
如果您想应用过滤器,这也是适用的情况。 - Lanny

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接