开始旋转bt。单击并通过鼠标位置进行控制
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开始旋转bt。单击并通过鼠标位置进行控制相关的知识,希望对你有一定的参考价值。
我想在单击按钮时开始旋转,然后能够控制鼠标位置的旋转角度。
现在,我的代码运行旋转,但是我不知道如何通过单击按钮来启动旋转,然后在鼠标位置上对其进行控制。
我是javascript和p5js的新手。任何提示将不胜感激。
到目前为止,这是我的代码。
var grid;
var current_img;
var img1;
var img2;
var layerOne;
function preload()
{
img1 =loadImage('https://i.imgur.com/Q6aZlme.jpg');
}
function setup()
{
let cnv = createCanvas(1000, 1000, );
layerOne = createGraphics (1000, 1000);
layerOne.grid = new Grid(40);
}
function draw()
{
background(img1);
layerOne.background(100,100,100);
if (show_grid == true)
{
push();
let ts = millis() / 1000.0;
let angle = radians( ts * 2.0 * Math.PI * 5.0 );
translate( width / 2, height / 2 );
rotate(angle);
translate( -width / 2, -height / 2 );
imageMode( CENTER );
rectMode( CENTER );
layerOne.grid.display();
pop();
}
}
let show_grid = false;
function a()
{
show_grid = true;
current_img = img1;
image(layerOne,0,0);
}
class Grid
{
constructor (cellSize)
{
this.cellSize = cellSize;
this.numberOfColumns = floor( width / this.cellSize );
this.numberOfRows = floor( height / this.cellSize );
this.cells = new Array( this.numberOfColumns );
for (var column = 0; column < this.numberOfColumns; column ++)
{
this.cells[column] = new Array(this.numberOfRows);
}
for (var column = 0; column < this.numberOfColumns; column ++)
{
for (var row = 0; row < this.numberOfRows; row++)
{
this.cells[column][row] = new Cell(column, row, cellSize);
}
}
}
display ()
{
for (var column = 0; column < this.numberOfColumns; column ++)
{
for (var row = 0; row < this.numberOfRows; row++)
{
this.cells[ column ][ row ].show_cell();
}
}
}
}
class Cell
{
constructor (column, row, size)
{
this.x = column;
this.y = row;
this.w = size;
}
show_cell ()
{
image(current_img, this.x * this.w ,
this.y * this.w , this.w , this.w );
}
}
<html>
<button
id="BgCategory1-btn1" onclick="a()"
class="btn btn-primary" type="submit">
Background1
</button>
</html>
答案
HTML按钮不应属于“类型”提交,因为您不在表单范围内。 (提交按钮将启动表单操作。)
以下代码是恕我直言正确的:
<html>
<input
id="BgCategory1-btn1" onclick="a()"
class="btn btn-primary" type="button">
Background1
</input>
</html>
在a()
中,设置标记`show_grid'以激活旋转。如您所说,这有效。但是旋转是从实际时间(以毫秒为单位)得出的。您只需要使用鼠标坐标即可得出角度。
可以从变量mouseX
和mouseY
获得鼠标坐标。
因此,如果您想通过向左或向右移动鼠标来旋转网格,请使用:
const turns = 5;
let angle = radians( mouseX / width * 2.0 * Math.PI * turns );
并且,如果您希望上下移动鼠标来旋转网格,请使用:
const turns = 5;
let angle = radians( mouseY / height * 2.0 * Math.PI * turns );
[hight
和with
包含画布的高度和高度(绘图区域),应内置在draw()
方法中可以使用的变量中。
如果鼠标位于屏幕中间,则要旋转零度。您必须从鼠标坐标中减去半个屏幕尺寸。
只是一个例子,它同样适用于向下:
const turns = 5;
let angle = radians( ( mouseX - width / 2 ) / width * 2.0 * Math.PI * turns );
以上是关于开始旋转bt。单击并通过鼠标位置进行控制的主要内容,如果未能解决你的问题,请参考以下文章