javascript - 将多个球放入盒子中 (javascript)

标签 javascript html css

我创建了一个像这样的简单网站,当点击框时,球会落入框内。但是每次只掉一个球。当多次点击框时,我希望多个球落入框内:
website

这是我使用的代码:

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
    function popup (n) {
            var context;
            var dx= 4;  
            var dy=4;
            var y=25;
        var elWidth=150;
        var ballWidth=10;
            var x=(elWidth+ballWidth)/2;
            var counter = 0;
        var myCanvas=document.getElementById('myCanvas'+n);
            function draw(){
                context= myCanvas.getContext('2d');
                context.clearRect(0,0,200,235);
                context.beginPath();
                context.fillStyle="red";
                context.arc(x,y,10,0,Math.PI*2,true);
                context.closePath();
                context.fill();
        if(y>300){clearInterval(interval);}
                if( y<0 || y>224)dy=0;
                y+=dy;
        myCanvas.className='active';
            }


            var interval=setInterval(draw,10);
    }
</script>
<style>
html,body{
    margin:0;
}

div.time {
    display: table;
    background: green;
    float: left;
    margin: 20px;
    zoom: 1; 
    position: relative;
    top: 75px;
    left:35px;
    width: 150px;
    height: 150px;
}

span {
    display: table-cell;
    text-align: center;
    vertical-align: middle;
    color: white
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}


canvas{
    z-index:10000;
    transform: inherit;
    float: left;
    margin: 20px;
    zoom: 1; 
    position: relative;
    top: -200px;
    left:35px;
    margin:20px;
}
#myCanvas1{clear:left;}
</style>
</head>
<body>
<div class="time"><span>Past Thoughts</span></div>
<div class="time"><span>Present Thoughts</span></div>
<div class="time"><span>Future Thoughts</span></div>
<canvas id="myCanvas1" width="150" height="235" onclick="popup(1)"></canvas>
<canvas id="myCanvas2" width="150" height="235" onclick="popup(2)"></canvas>
<canvas id="myCanvas3" width="150" height="235" onclick="popup(3)"></canvas>
</body>
</html>  

我希望在多次点击框时将多个球放入框内。但是旧球应该留在盒子里。如何实现?我也想为它添加一些响应能力,以便它可以在手机和平​​板电脑上进行测试。我怎样才能在不改变功能的情况下做到这一点?

最佳答案

如下更改脚本。

var myCanvas, context;
var balllist = [];
var counter = 0;
var interval;

window.popup = function (n) {
    var dy = 4, y = 25;
    var elWidth = 150;
    var ballWidth = 10;
    var x= (elWidth + ballWidth) / 2;
    counter++;

    // create a new ball
    balllist.push({x: x, y: y, dy: dy});

    myCanvas = document.getElementById('myCanvas' + n);
    context = myCanvas.getContext('2d');

    function draw() {
        context.clearRect(0,0,200,235);
        for (var i = 0; i < balllist.length; i++) {
            var ball = balllist[i];
            context.beginPath();
            context.fillStyle="red";
            context.arc(ball.x, ball.y, 10, 0, Math.PI*2, true);
            context.closePath();
            context.fill();
            if (i == balllist.length - 1 && ball.y > 300) {
                clearInterval(interval);
            }
            if(ball.y < 0 || ball.y > 224) ball.dy = 0;
            ball.y += ball.dy;
        }
    }
    clearInterval(interval);
    interval = setInterval(draw, 10);
}

此代码仅适用于一个 Canvas 。创建另一个 balllist(如 canvas2 的 balllist2)并修改弹出函数以使用该 balllist。

关于javascript - 将多个球放入盒子中 (javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26686276/

相关文章:

javascript - JSON.stringify 奇怪的行为

javascript - 需要清楚 javascript 日期逻辑

html - 复选框检查 boolean 值是否为真与 Angular2

html - Microsoft IE/Edge 上缩放的 div 溢出

javascript - 将一些 Javascript 放在单独的文件中?

javascript - Jquery 使用计时器为 div 上的类设置动画

javascript - Angular 2库配置

javascript - 无法解决rxjs依赖问题

css - md-optgrp 中的样式标签

javascript - 缩小窗口大小后网页无法正常显示