画架不显示位图

IT技术 javascript html easeljs
2021-03-10 13:27:33

这是我的画架 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个回答

图像可能尚未加载。

  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"});
答案是完全正确的 :),只是为了帮助其他人使用第 2 点,要侦听onload图像事件,您可以使用类似image属性createjs.Bitmapvar bitmap = new createjs.Bitmap("image.jpg"); bitmap.image.onload = function() { stage.update(); }; ... stage.addChild(bitmap);+1 :)
2021-04-30 13:27:33
如果您想应用过滤器,情况也是如此。
2021-04-30 13:27:33