|
|

楼主 |
发表于 2022-3-9 16:01
|
显示全部楼层
代码分享:
<div style="margin: auto; width: 600px; text-align:center;">
<canvas id="canv" width="500" height="300" style="background:#000;"></canvas><br><br>
<input type="button" id="btn" value="自左向右" />
<span id="bMsg" style="color:red;">行进方向:左右来回</span>
</div>
<script>
var bMsg = document.getElementById('bMsg');
var cc = document.getElementById('canv'); //获得画布
var ct = cc.getContext('2d'); //获得画笔
var flag = 0; //运行方向标识:默认0, 0=来回运动,1=自左向右,2=自右向左
var x = 20; //小球初始时圆心水平位置
var speed = 1; //行进速度
var start = setInterval(draw, 10); //来回运动
//按钮单击事件匿名函数
document.getElementById('btn').onclick = function(){
clearInterval(start);
if(this.value == '自左向右'){
speed = Math.abs(speed); //速度用绝对值处理
flag = 1; //改变方向标识
this.value = '自右向左';
bMsg.innerHTML = '行进方向: 自左向右';
} else if(this.value == '自右向左') {
speed = -speed; //倒置速度数值
flag = 2;
this.value = '来回运动';
bMsg.innerHTML = '行进方向: 自右向左';
} else {
flag = 0;
this.value = '自左向右';
bMsg.innerHTML = '行进方向: 左右来回';
}
start = setInterval(draw, 10);
}
//小球运动函数
function draw(){
ct.clearRect(0, 0, cc.width, cc.height); //清空画布
ct.beginPath();
ct.fillStyle = "gray";
ct.arc(x, 150, 20, 0, 2*Math.PI);
ct.fill();
x += speed; //改变x值以令小球运动
if(flag == 0){ //来回运动
if(x > cc.width - 20 || x<20){
speed = -speed;
}
} else if(flag == 1){ //自左向右
if(x > cc.width ) x = -20;
} else { //自右向左
if(x < -20) x = cc.width + 20;
}
}
</script> |
|