Javascript 创建单独的旋转矩形
嗨,我正在尝试使用“a/s”和javascript使我“绘制”的两个矩形围绕其中心点顺时针和逆时针旋转。我撞到墙上,想让它旋转。Javascript 创建单独的旋转矩形,javascript,animation,rotation,Javascript,Animation,Rotation,嗨,我正在尝试使用“a/s”和javascript使我“绘制”的两个矩形围绕其中心点顺时针和逆时针旋转。我撞到墙上,想让它旋转。 我知道我需要定义中心点,顺时针旋转的角度和逆时针旋转的角度。在这个学习阶段,我无法创建函数等来实现这一点,因此任何帮助都将是非常棒的。 这是我当前的代码 <html> <title>Squash Game V1</title> <h1>Squash</h1> <canvas id="gameCan
我知道我需要定义中心点,顺时针旋转的角度和逆时针旋转的角度。在这个学习阶段,我无法创建函数等来实现这一点,因此任何帮助都将是非常棒的。
这是我当前的代码
<html>
<title>Squash Game V1</title>
<h1>Squash</h1>
<canvas id="gameCanvas" width=800 height=600></canvas>
<script>
var canvas;
var canvasContext;
var ballX = 50;
var ballY = 50;
var gravity = 0.2;
var bounceFactor = 0.6;
var ballSpeedX = 3;
var ballSpeedY = 10;
var ballSpeedY2 = 5;
var ballBounce = 0
var ballStartPos = 50
var redPadY = 475
var redPadX = 50
var bluePadY = 475
var bluePadX = 750
const paddleHeight = 100
const paddleWidth = 10
const resistence = 0.998
const ballWidth = 15;
window.onload = function() {
canvas = document.getElementById('gameCanvas');
canvasContext = canvas.getContext('2d');
var framesPerSecond = 60;
setInterval(function() {
moveEverything();
drawEverything();
}, 1000/framesPerSecond);
}
function ballReset() {
ballX = ballStartPos;
ballY = ballStartPos;
ballBounce = 0;
function incrementAngle() {
rotateAnti -= 10;
if(rotateAnti > 360) {
rotateAnti = 0;
}
}
function decrementAngle(){
rotateClock += 10;
if(rotateClock>360){
rotateClock = 0;
}
}
}
//map var array keeps track of multiple button presses allowing both pads to be moved by single button presses
var map = []; // Or you could call it "key"
onkeydown = onkeyup = function(e){
e = e || event; // to deal with IE
map[e.keyCode] = e.type == 'keydown';
{
//moves left paddle
var key = e.keyCode ? e.keyCode : e.which;
if (key == 87) {
redPadX -= 20;
}else if (key == 83) {
redPadX += 20;
}
} {
//moves right paddle
var key = e.keyCode ? e.keyCode : e.which;
if (key == 38) {
bluePadX -= 20;
} else if (key == 40) {
bluePadX += 20;
}
}
}
function moveEverything() {
// this moves ball down
ballY += ballSpeedY;
// this moves the ball across
ballX += ballSpeedX;
// this speeds ball up as it's falling plus slows down making it fall
ballSpeedY += gravity;
ballSpeedX = ballSpeedX*resistence;
//this bounes the ball
if (ballY > canvas.height - ballWidth) {
ballSpeedY = -ballSpeedY
//this reduces height of the bounce
ballSpeedY *= bounceFactor;}
//this should count bounces
if (ballY > canvas.height - ballWidth){
ballBounce = ballBounce + 1;
}
//ball will bounce of right wall
if (ballX > canvas.width - ballWidth) {
ballSpeedX = -ballSpeedX}
//ball will bounce off left wall
if (ballX < 0 + ballWidth) {
ballSpeedX = -ballSpeedX}
//if ball bounces twice it resets
if (ballBounce >= 2) {
ballReset()}
}
function drawEverything() {
//this draws the pong court
colourRect(0,0,canvas.width,canvas.height, 'black');
//this draws left pad
colourRect(redPadX, redPadY, paddleWidth, paddleHeight, "red");
//this draws right pad
colourRect(bluePadX, bluePadY, paddleWidth, paddleHeight, "blue");
//this draws the ball
colourCircle(ballX, ballY, 10, "white");
function colourCircle(centreX, centreY, radius, drawColour) {
canvasContext.fillStyle = drawColour;
canvasContext.beginPath();
canvasContext.arc(centreX, centreY, radius, 0,Math.PI*2, true)
canvasContext.fill();
}
//this function draws a rectangle
function colourRect(leftX, topY, width, height, drawColour) {
canvasContext.fillStyle = drawColour;
canvasContext.fillRect(leftX, topY, width, height);
}
}
</script>
</html>
壁球游戏V1
南瓜
var帆布;
var canvasContext;
var ballX=50;
var-ballY=50;
var重力=0.2;
var bounceFactor=0.6;
var ballSpeedX=3;
var=10;
var ballSpeedY2=5;
var ballBounce=0
var ballStartPos=50
var redPadY=475
var redPadX=50
var bluePadY=475
变量bluePadX=750
常数桨高度=100
常数桨叶宽度=10
恒定电阻=0.998
常数球宽=15;
window.onload=函数(){
canvas=document.getElementById('gameCanvas');
canvasContext=canvas.getContext('2d');
var framesPerSecond=60;
setInterval(函数(){
移动一切();
抽屉物品();
},1000/帧每秒);
}
函数ballReset(){
ballX=ballStartPos;
ballY=ballStartPos;
弹跳=0;
函数增量角度(){
rotateAnti-=10;
如果(旋转角度大于360){
rotateAnti=0;
}
}
函数递减缠结(){
旋转锁+=10;
如果(旋转锁定>360){
rotateClock=0;
}
}
}
//map var数组跟踪多个按钮的按下,允许两个焊盘通过单个按钮的按下来移动
变量映射=[];//或者你可以叫它“钥匙”
onkeydown=onkeyup=功能(e){
e=e | | event;//处理IE
map[e.keyCode]=e.type=='keydown';
{
//向左划桨
var key=e.keyCode?e.keyCode:e.which;
如果(键==87){
redPadX-=20;
}否则如果(键==83){
redPadX+=20;
}
} {
//右移桨
var key=e.keyCode?e.keyCode:e.which;
如果(键==38){
bluePadX-=20;
}否则,如果(键==40){
bluePadX+=20;
}
}
}
函数moveEverything(){
//这个球向下移动
ballY+=ballY;
//这会将球移动到另一边
ballX+=ballSpeedX;
//这使球在下落时加速,并使其下落时减速
球速度+=重力;
ballSpeedX=ballSpeedX*电阻;
//这是球
如果(球>画布高度-球宽){
鲍尔斯皮蒂=-鲍尔斯皮蒂
//这会降低反弹的高度
ballSpeedY*=bounceFactor;}
//这应该算反弹
如果(球>画布高度-球宽){
ballBounce=ballBounce+1;
}
//球将从右墙反弹
if(ballX>canvas.width-ballWidth){
ballSpeedX=-ballSpeedX}
//球将从左墙反弹
if(球X<0+球宽){
ballSpeedX=-ballSpeedX}
//如果球反弹两次,它将重置
如果(球弹跳>=2){
ballReset()}
}
函数drawerything(){
//这就吸引了乒乓球场
colorRect(0,0,canvas.width,canvas.height,'black');
//这画的是左pad
colorRect(redPadX、redPadY、桨叶宽度、桨叶高度,“红色”);
//这是右图
colorRect(bluePadX、bluePadY、桨宽、桨高,“蓝色”);
//这就引出了球
彩色圆圈(ballX,ballY,10,“白色”);
函数颜色圆(中心、中心、半径、绘图颜色){
canvasContext.fillStyle=DrawColor;
canvasContext.beginPath();
canvasContext.arc(centreX,centreY,radius,0,Math.PI*2,true)
canvasContext.fill();
}
//此函数用于绘制矩形
函数colorRect(leftX、topY、宽度、高度、DrawColor){
canvasContext.fillStyle=DrawColor;
canvasContext.fillRect(leftX,topY,width,height);
}
}
这是您的代码,添加了红色条的旋转。旋转发生在colorRect
函数中。它平移到对象的中心,以弧度旋转,然后再向后平移。这就是中心旋转的全部内容。用Q
和A
旋转
var画布;
var canvasContext;
var ballX=50;
var-ballY=50;
var重力=0.2;
var bounceFactor=0.6;
var ballSpeedX=3;
var=10;
var ballSpeedY2=5;
var ballBounce=0
var ballStartPos=50
var redPadY=475
var redPadX=50;
var redRotate=0;
var to_弧度=Math.PI/180;
var bluePadY=475
变量bluePadX=750
var=0;
常数桨高度=100
常数桨叶宽度=10
恒定电阻=0.998
常数球宽=15;
window.onload=函数(){
canvas=document.getElementById('gameCanvas');
canvasContext=canvas.getContext('2d');
var framesPerSecond=60;
setInterval(函数(){
移动一切();
抽屉物品();
},1000/帧每秒);
}
函数ballReset(){
ballX=ballStartPos;
ballY=ballStartPos;
弹跳=0;
函数增量角度(){
rotateAnti-=10;
如果(旋转角度大于360){
rotateAnti=0;
}
}
函数递减缠结(){
旋转锁+=10;
如果(旋转锁定>360){
rotateClock=0;
}
}
}
//映射变量数组跟踪多个按钮