Javascript 鼠标移动时的变化
所以我在玩triangalify.js 我的目标是,当鼠标移动时,三角形画布的变化将发生变化 理论上很好,但实际上并不需要,我尝试了几种不同的代码格式,但实际上似乎无法让Triangalify尊重新的值 所以,希望有人能说明我做错了什么Javascript 鼠标移动时的变化,javascript,trianglify,Javascript,Trianglify,所以我在玩triangalify.js 我的目标是,当鼠标移动时,三角形画布的变化将发生变化 理论上很好,但实际上并不需要,我尝试了几种不同的代码格式,但实际上似乎无法让Triangalify尊重新的值 所以,希望有人能说明我做错了什么 //Do Traingle Canvas window.onload=函数(){ 变量模式=三角形({ 宽度:window.innerWidth, 高度:window.innerHeight, 单元大小:120, 笔画宽度:1.3, 差异:0.75, 种子:“
//Do Traingle Canvas
window.onload=函数(){
变量模式=三角形({
宽度:window.innerWidth,
高度:window.innerHeight,
单元大小:120,
笔画宽度:1.3,
差异:0.75,
种子:“9rqsn”,
x_颜色:“蓝色”
});
var homecan=document.getElementById('home');
appendChild(pattern.canvas());
document.onmousemove=(函数(){
var onmousestop=函数(){
变量模式=三角形({
差异:0.05
});
pattern.canvas()
},
线
返回函数(){
clearTimeout(线程);
线程=设置超时(onmousestop,100);
};
})();
};代码>
下面是一个示例,在鼠标移动时颜色会成功更改。对于方差来说应该是一样的,尽管这似乎很难测试
<!DOCTYPE html>
<html>
<script src="https://cdnjs.cloudflare.com/ajax/libs/trianglify/0.4.0/trianglify.min.js"></script>
<body>
<canvas id='mycanvas' width='200' height='200' style="border:1px solid Black;"></canvas>
<script type="text/javascript">
window.onload = function () {
var pattern = Trianglify({
width: window.innerWidth,
height: window.innerHeight,
cell_size: 120,
stroke_width: 1.3,
variance: 0.75,
seed: '9rqsn',
x_colors: 'Blues'
});
pattern.canvas(document.getElementById('mycanvas'));
};
document.onmousemove = function () {
var pattern = Trianglify({
variance: 0.05,
x_colors: 'Reds'
});
pattern.canvas(document.getElementById('mycanvas'));
};
</script>
</body>
</html>
window.onload=函数(){
变量模式=三角形({
宽度:window.innerWidth,
高度:window.innerHeight,
单元大小:120,
笔画宽度:1.3,
差异:0.75,
种子:“9rqsn”,
x_颜色:“蓝色”
});
canvas(document.getElementById('mycanvas');
};
document.onmousemove=函数(){
变量模式=三角形({
差异:0.05,
x_颜色:“红色”
});
canvas(document.getElementById('mycanvas');
};
资料来源:
三角自述:
三角启动:
Html5画布:
OnMouseMove事件:原始解决方案的问题是,OnMouseMove中新生成的画布没有显示在任何地方。您应该从第一次创建画布时就记住它,然后将其作为参数传递给pattern.canvas(…)调用:
window.onload = function() {
var pattern = Trianglify({
width: window.innerWidth,
height: window.innerHeight,
cell_size: 120,
stroke_width: 1.3,
variance: 0.75,
seed: '9rqsn',
x_colors: 'Blues'
});
var homecan = document.getElementById('home');
var canvas = pattern.canvas();
homecan.appendChild(canvas);
document.onmousemove = (function() {
var onmousestop = function() {
var pattern = Trianglify({
width: window.innerWidth,
height: window.innerHeight,
variance: 0.05
});
pattern.canvas(canvas);
},
thread;
return function() {
clearTimeout(thread);
thread = setTimeout(onmousestop, 100);
};
})();
}
@pabrams的解决方案也不错,只是别忘了用id=“mycanvas”创建
元素。顺便说一句,您使用计时器所做的基本上是自制的去盎司实现(尽管正确!):在onmousetop
函数中定义的var模式对window.onload
函数中定义的原始模式没有影响。因此,它不会像您期望的那样修改现有画布。相反,您可以尝试删除旧画布并附加新画布。您可能还需要在此处添加所有选项,以使其按预期工作。(另外,您错过了窗口.onload
函数的右大括号}
。我想,这只是写问题时的输入错误。我在您的问题中也编辑了这个。)
完整演示:
//Do Traingle Canvas
window.onload=函数(){
变量模式选项={
宽度:window.innerWidth,
高度:window.innerHeight,
单元大小:120,
笔画宽度:1.3,
差异:0.75,
种子:“9rqsn”,
x_颜色:“蓝色”
};
变量模式=三角形(模式选项);
var homecan=document.getElementById('home');
appendChild(pattern.canvas());
document.onmousemove=(函数(){
var onmousestop=函数(){
patternOptions.variance=0.05;
var pattern2=三角形(patternOptions);
homecan.innerHTML='';//清除现有画布
homecan.appendChild(pattern2.canvas());//追加新画布
},
线
返回函数(){
clearTimeout(线程);
线程=设置超时(onmousestop,100);
};
})();
};代码>
你能用codepen或其他什么地方制作一个有效的演示吗?包括必要的库等。谢谢你的帖子,我明天会有机会看一遍谢谢你的帖子,我明天会有机会看一遍。当然,如果还有什么不清楚的,请告诉我。谢谢你的帖子,我明天会有机会看一遍
var patternOptions = {
width: window.innerWidth,
height: window.innerHeight,
cell_size: 120,
stroke_width: 1.3,
variance: 0.75,
seed: '9rqsn',
x_colors: 'Blues'
};
...........
..........
var onmousestop = function() {
patternOptions.variance = 0.05;
var pattern2 = Trianglify(patternOptions);
homecan.innerHTML = ''; //Clear the existing canvas
homecan.appendChild(pattern2.canvas()); //append the new canvas
},
thread;