gpt4 book ai didi

javascript - 不知道如何将栅格应用于我的代码中的每个行星

转载 作者:行者123 更新时间:2023-11-28 03:41:16 27 4
gpt4 key购买 nike

我正在尝试按照 paper.js 网站上的基本示例在 Canvas 上绘制行星,但是当我想在 for 循环中使用栅格将“纹理”应用于每个行星时其中,只有一颗行星获得纹理。

我在网上尝试了几种解决方案,但没有一个能让我做出我想要的东西。您会注意到,在我的代码中,我同时拥有行星(点)和恒星(星星)。纹理是基本的 100*100 方形图像。

        var url = '../IMG/planettexture.png';
var raster = new Raster(url);

var count = 150;
var x = window.innerWidth;
var y = window.innerHeight;

for (i=0;i<count;i++){

var xrandom = randomCoordinates(x);
var yrandom = randomCoordinates(y);

var center = new Point(xrandom,yrandom);

var points = 12;

var radius1 = randomCoordinates(1);
var radius2 = randomCoordinates(5);
var path = new Path.Star(center, points, radius1, radius2);
path.fillColor = 'white';

raster.position = new Point(xrandom,yrandom);
path.clipMask = true;
}

var path = new Path.Circle({
center: [0, 0],
radius: 10,
fillColor: 'white',
strokeColor: 'black'
});

var symbol = new Symbol(path);

for (var i = 0; i < count; i++) {
var center = Point.random() * view.size;
var placedSymbol = symbol.place(center);
placedSymbol.scale(i / count);
}

function randomCoordinates(number){
return Math.random()*number;
}

function onFrame(event) {

for (var i = 0; i < 450; i++) {
var item = project.activeLayer.children[i];

item.position.x += item.bounds.width / 20;

if (item.bounds.left > view.size.width) {
item.position.x = -item.bounds.width;
}
}
}

您需要 Paper.js 来运行它。使用此代码,只有一颗星星是“纹理”的,其余的在我的屏幕上不可见。您知道问题出在哪里吗?

最佳答案

您不需要在 for 循环内克隆栅格吗?

var clonedRaster = raster.clone();
clonedRaster.position = new Point(xrandom,yrandom);

这是一个工作示例:https://codepen.io/JulienLemaitre/pen/PMmBNJ

关于javascript - 不知道如何将栅格应用于我的代码中的每个行星,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57286271/

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