画架没有显示位图

i m*_*dis 10 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();
    }
Run Code Online (Sandbox Code Playgroud)

这是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>
Run Code Online (Sandbox Code Playgroud)

为什么?请帮忙,好像在其他人的代码中这有用,但为什么这对我不起作用?

Lan*_*nny 14

图像可能尚未加载.

  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);
}
Run Code Online (Sandbox Code Playgroud)
  1. 聆听onload图像,并再次更新舞台

例:

var bmp = new createjs.Bitmap("path/to/image.jpg");
bmp.image.onload = function() {
    stage.update();
}
Run Code Online (Sandbox Code Playgroud)
  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"});
Run Code Online (Sandbox Code Playgroud)

  • 答案是完全正确的:),只是为了帮助其他人使用第2点,为图像监听`onload`事件,你可以使用`createjs.Bitmap`的`image`属性,如:`var bitmap = new createjs.位图( "image.jpg的"); bitmap.image.onload = function(){stage.update(); }; ... stage.addChild(bitmap);`+ :) :) (4认同)