gpt4 book ai didi

javascript - pts.js 'NS_ERROR_NOT_AVAILABLE: ' 尝试将图像用于粒子时出错

转载 作者:行者123 更新时间:2023-11-30 06:15:35 25 4
gpt4 key购买 nike

我想在 pts.js 中为粒子加载相同的图像。

当我尝试使用 Assets 文件夹中的本地镜像时,我在控制台中收到错误“NS_ERROR_NOT_AVAILABLE:”。

我在某处读到这可能是因为图像在加载之前就试图使用...

我也试过使用指向其他图像的外部链接而不是本地镜像,而且效果很好。所以不确定我的本地文件发生了什么。

编辑:

我只是在 chrome 而不是 firefox 上试过这个,我收到了一条新的更详细的错误消息。

“未捕获的 DOMException:无法在‘CanvasRenderingContext2D’上执行‘drawImage’:提供的 HTMLImageElement 处于‘损坏’状态。”在 pts.min.js:6.

仍然不确定到底哪里出了问题。

Pts.quickStart('#hello', 'transparent')

var world

// Loading in image to be used
var myImg = new Image()
myImg.src = '/assets/img/myImage.png'

space.add({
start: (bound, space) => {
// Create world and 100 random points
world = new World(space.innerBound, 1, 0)
let pts = Create.distributeRandom(space.innerBound, 20)

// Create particles and hit them with a random impulse
for (let i = 0, len = pts.length; i < len; i++) {
let p = new Particle(pts[i]).size(i === 0 ? 10 : 20)
p.hit(0, 0)
world.add(p)
}

world.particle(0).lock = true
},

animate: (time, ftime) => {
world.drawParticles((p, i) => {


// Image variable for the particle to be drawn as
form.image(myImg)
})

world.update(ftime)
},

action: (type, px, py) => {
if (type == 'move') {
world.particle(0).position = new Pt(px, py)
}
},

resize: (bound, evt) => {
if (world) world.bound = space.innerBound
}
})

space.bindMouse().bindTouch()
space.play()

最佳答案

在canvas上绘制图片,需要先加载图片。您可以使用 myImg.addEventListener( 'load', ... ) 跟踪它。

加载后,您可以在 Pts 的动画循环中的 form.image( myImg, ... ) 中使用它。

这是一个基于您上面的代码的工作示例:

Pts.quickStart( "#pt", "#123" );

//// Demo code starts (anonymous function wrapper is optional) ---

(function() {

var world;
var imgReady = false;

// Loading in image to be used
var myImg = new Image()
myImg.src = 'http://icons.iconarchive.com/icons/icojoy/maneki-neko/256/cat-6-icon.png';
myImg.addEventListener('load', function() {
imgReady = true;
}, false);

space.add( {

start: (bound, space) => {

// Create world and 100 random points
world = new World( space.innerBound, 1, 0 );
let pts = Create.distributeRandom( space.innerBound, 100 );

// Create particles and hit them with a random impulse
for (let i=0, len=pts.length; i<len; i++) {
let p = new Particle( pts[i] ).size( (i===0) ? 30 : 3+Math.random()*space.size.x/50 );
p.hit( Num.randomRange(-50,50), Num.randomRange(-25, 25) );
world.add( p );
}

world.particle( 0 ).lock = true; // lock it to move it by pointer later on

},


animate: (time, ftime) => {
world.drawParticles( (p, i) => {
if (imgReady) {
console.log( p )
form.image(myImg, [p.$subtract( p.radius ), p.$add( p.radius )] );
}
});

world.update( ftime );
},


action:( type, px, py) => {
if (type == "move") {
world.particle( 0 ).position = new Pt(px, py);
}
},

resize: (bound, evt) => {
if (world) world.bound = space.innerBound;
}
});

space.bindMouse().bindTouch();
space.play();

})();

关于javascript - pts.js 'NS_ERROR_NOT_AVAILABLE: ' 尝试将图像用于粒子时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56420837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com