我正在尝试使用SVG图像制作游戏,以便使它们具有可伸缩性并从中生成物理对象(参见matter.js了解如何实现)。
我的问题是,如果我加载2个不同的SVG纹理,然后将它们渲染出来,第二个会在第一个下面形成图层。
这种情况不会发生在光栅图像或画布选项中,只会在WebGL中发生。
有没有办法阻止这种情况发生,还是我使用SVG的方式有误?
var renderer = PIXI.autoDetectRenderer(
window.innerWidth,
window.innerHeight,
{
backgroundColor : 0xffffff,
resolution:2
}
);
// add viewport and fix resolution doubling
document.body.appendChild(renderer.view);
renderer.view.style.width = "100%";
renderer.view.style.height = "100%";
var stage = new PIXI.Container();
//load gear svg
var texture = PIXI.Texture.fromImage('https://upload.wikimedia.org/wikipedia/commons/thumb/0/0b/Gear_icon_svg.svg/2000px-Gear_icon_svg.svg.png');
var gear = new PIXI.Sprite(texture);
//position and scale
gear.scale = {x:0.1,y:0.1};
gear.position = {x:window.innerWidth / 2,y:window.innerHeight / 2};
gear.anchor = {x:0.5,y:0.5};
//load heart svg
var texture2 = PIXI.Texture.fromImage('https://upload.wikimedia.org/wikipedia/commons/thumb/4/42/Love_Heart_SVG.svg/2000px-Love_Heart_SVG.svg.png');
var heart = new PIXI.Sprite(texture2);
//position and scale
heart.scale = {x:0.1,y:0.1};
heart.position = {x:window.innerWidth/4,y:window.innerHeight / 2};
heart.anchor = {x:0.5,y:0.5};
//add to stage
stage.addChild(gear);
stage.addChild(heart);
// start animating
animate();
function animate() {
gear.rotation += 0.05;
// render the container
renderer.render(stage);
requestAnimationFrame(animate);
}
<script src="https://github.com/pixijs/pixi.js/releases/download/v4.8.2/pixi.min.js"></script>
PIXI.Texture.fromImage()
的URL。这些URL以2000px-Gear_icon_svg.svg.png
和2000px-Love_Heart_SVG.svg.png
结尾。这些是PNG文件,而不是SVG文件。因此...无论这里发生了什么行为,我怀疑它与SVG与PNG无关。我也不明白为什么这种行为是错误的。 - mpb