Javascript 如何在画布中的形状后面留下痕迹?
现在我有一些形状是在用户旋转鼠标滚轮时创建的,它们在一定时间后慢慢消失。我如何在跟随它的每个形状后面生成一条轨迹,并慢慢消失?代码如下:Javascript 如何在画布中的形状后面留下痕迹?,javascript,html,canvas,Javascript,Html,Canvas,现在我有一些形状是在用户旋转鼠标滚轮时创建的,它们在一定时间后慢慢消失。我如何在跟随它的每个形状后面生成一条轨迹,并慢慢消失?代码如下: var画布; var语境; var三角形=[]; 无功定时器; 函数init(){ canvas=document.getElementById('canvas'); context=canvas.getContext(“2d”); 调整画布的大小(); addEventListener('resize',resizeCanvas,false); windo
var画布;
var语境;
var三角形=[];
无功定时器;
函数init(){
canvas=document.getElementById('canvas');
context=canvas.getContext(“2d”);
调整画布的大小();
addEventListener('resize',resizeCanvas,false);
window.addEventListener('orientationchange',resizeCanvas,false);
canvas.onwheel=函数(事件){
handleClick(event.clientX,event.clientY);
};
var定时器=设置间隔(resizeCanvas,30);
}
函数三角形(x,y,三角形颜色){
这个.x=x;
这个。y=y;
this.triangelecolor=triangelecolor;
this.vx=Math.random()*30-15;
this.vy=Math.random()*30-15;
这个时间=100;
}
函数handleClick(x,y){
变量颜色=[
[0, 170, 255],
[230, 180, 125],
[50, 205, 130]
];
var triangelecolor=colors[Math.floor(Math.random()*colors.length)];
推(新三角形(x,y,三角形颜色));
对于(变量i=0;icanvas.width | | t.x+t.vx<0)
t、 vx=-t.vx
如果(t.y+t.vy>canvas.height | | t.y+t.vy<0)
t、 vy=-t.vy
如果(t.time==0){
三角形.拼接(i,1);
}
t、 时间-=1;
t、 x+=t.vx;
t、 y+=t.vy;
}
}
函数fillBackgroundColor(){
context.fillStyle=“黑色”;
context.fillRect(0,0,canvas.width,canvas.height);
}
init()
嗯,今天是星期天。以下是一种行之有效的方法:
trails
和alpha
var MAX_GHOSTS = 3;
function drawTriangle(triangle, alpha) { // two parameters required }
drawTriangle
时使用的三角形的alpha值。将选定三角形特性的副本推送到三角形的轨迹阵列上:复制将冻结x、y位置。不按每个计时器调用会将重影图像间隔得更远:
if( t.time%2 == 0) {
t.trails.push(
{ x: t.x, y: t.y, alpha: t.alpha, triangleColor: t.triangleColor}
);
}
- 外部循环检索三角形数组中每个条目的轨迹数组。如果trails数组长度大于MAX_GHOST,请删除其第一个元素(使用
)拼接
- 内部循环使用say
作为索引,从trails数组中获取下一个元素,例如调用它j
。计算alpha值以使其快速褪色并绘制:crumb
drawTriangle( crumb, (j+1)/(MAX_GHOSTS + 2) * crumb.alpha);
希望你喜欢 嗯,今天是星期天。以下是一种行之有效的方法:
trails
和alpha
var MAX_GHOSTS = 3;
function drawTriangle(triangle, alpha) { // two parameters required }
drawTriangle
时使用的三角形的alpha值。将选定三角形特性的副本推送到三角形的轨迹阵列上:复制将冻结x、y位置。不按每个计时器调用会将重影图像间隔得更远:
if( t.time%2 == 0) {
t.trails.push(
{ x: t.x, y: t.y, alpha: t.alpha, triangleColor: t.triangleColor}
);
}
- 外部循环检索三角形数组中每个条目的轨迹数组。如果trails数组长度大于MAX_GHOST,请删除其第一个元素(使用
)拼接
- 内部循环使用say
作为索引,从trails数组中获取下一个元素,例如调用它j
。计算alpha值以使其快速褪色并绘制:crumb
drawTriangle( crumb, (j+1)/(MAX_GHOSTS + 2) * crumb.alpha);