我试图预加载一组SVG对象并使用CreateJS/PreloadJS显示它们。到目前为止,我能够在没有预加载的情况下显示SVG对象,但是一旦使用PreloadJS中的LoadQueue,我就无法使我的示例正常工作。无法预加载并使用CreateJS显示SVG
有人知道我在做什么错吗?谢谢!
http://jsfiddle.net/trudeo/05eqqp49/
的Javascript
var imageManifest = [
{ id: "MySvgImage", src: "http://dev.w3.org/SVG/tools/svgweb/samples/svg-files/check.svg" }
];
var stage = new createjs.Stage(document.getElementById('gameCanvas'));
var assetQueue = new createjs.LoadQueue(true);
assetQueue.loadManifest(imageManifest);
assetQueue.on('complete', complete);
function complete(e) {
// DOESN'T WORK
var svgImage = new createjs.Bitmap(assetQueue.getResult('MySvgImage'));
stage.addChild(svgImage);
// WORKS
var svgImage2 = new createjs.Bitmap("http://dev.w3.org/SVG/tools/svgweb/samples/svg-files/circles1.svg");
stage.addChild(svgImage2);
stage.update();
createjs.Ticker.setFPS(40);
createjs.Ticker.addListener(tick);
}
function tick() {
stage.update();
}
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<script src="http://code.createjs.com/createjs-2013.12.12.min.js"></script>
<script src="http://code.createjs.com/preloadjs-0.4.1.min.js"></script>
<script src="app.js"></script>
</head>
<body>
<canvas id="gameCanvas" width="800" height="800"></canvas>
</body>
</html>
你好兰尼!感谢您的所有细节!我试图建立一个人们可以用来测试的样本。如果SVG文件与Javascript代码位于同一站点,是否可以使我的示例正常工作? – Martin 2014-09-02 20:11:13
不,您无法将SVG实例传递给位图 - 它似乎无法与“drawImage”一起使用。我认为它会,所以值得进一步研究。您可以预先加载SVG,以便在DOM中使用。 – Lanny 2014-09-02 22:16:57
我不使用CreateJS,但对预加载器感兴趣,所以四处张望。看到这个,只是想Id指出了一个工作.... http://jsfiddle.net/pphd9tmy/。要知道,如果你的图像是这样的图像然后图像标签在svg与外部链接不会工作,你需要使用dataURL嵌入图像(显然....还没有轮到尝试它,更好的血腥工作;)。这恰好是我寻找preloader的原因;) – PAEz 2014-10-17 12:12:55