画架没有显示位图

时间:2013-12-31 02:07:16

标签: javascript html5 easeljs

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

答案 0 :(得分:13)

图片可能尚未加载。

  1. 您可以在舞台上添加Ticker以不断更新它(大多数应用程序都会这样做,因为其他内容会随着时间的推移而发生变化)
  2. 示例:

    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,然后重新更新舞台
    2. 示例:

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

      1. 在将图像绘制到舞台之前,使用PreloadJS之类的图像预加载图像。对于拥有更多资产的大型应用来说,这是一个更好的解决方案。
      2. 示例:

        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"});