首页 > 软件开发 > HTML >

HTML5+canvas相互碰撞散开红色小球

来源:互联网 2023-03-16 19:10:17 147

HTML5 canvas相互碰撞散开红色小球CVj办公区 - 实用经验教程分享!

工具/原料

  • adobe dreamweaver

方法/步骤

  • 1

    新建html文档。薪码CVj办公区 - 实用经验教程分享!

    HTML5 canvas相互碰撞散开红色小球CVj办公区 - 实用经验教程分享!

  • 2

    书写hmtl代码。低祝倘canvas id="screen">/canvas>CVj办公区 - 实用经验教程分享!

    HTML5 canvas相互碰撞散开红色小球CVj办公区 - 实用经验教程分享!

  • 3

    书写css代码。CVj办公区 - 实用经验教程分享!

    style>CVj办公区 - 实用经验教程分享!

    html { overflow: hidden; -ms-touch-action: none; -ms-content-zooming: none; }CVj办公区 - 实用经验教程分享!

    body { position: absolute; margin: 0; padding: 0; background: #222; width: 100%; height: 100%; }CVj办公区 - 实用经验教程分享!

    #screen { position: absolute; width: 100%; height: 100%; background: #000; cursor: pointer; }CVj办公区 - 实用经验教程分享!

    .search { background: #0065CB !important; }CVj办公区 - 实用经验教程分享!

    /style>CVj办公区 - 实用经验教程分享!

    HTML5 canvas相互碰撞散开红色小球CVj办公区 - 实用经验教程分享!

  • 4

    书写并添加js代码。救醒CVj办公区 - 实用经验教程分享!

    script>CVj办公区 - 实用经验教程分享!

    "use strict";CVj办公区 - 实用经验教程分享!

    (function () {CVj办公区 - 实用经验教程分享!

    var scr, ctx, pointer, grid, npart, ipart, pdiam, gw, gh, ax = 0, ay = 0;CVj办公区 - 实用经验教程分享!

    var obj = [];CVj办公区 - 实用经验教程分享!

    var Particle = function () {CVj办公区 - 实用经验教程分享!

    this.x = Math.random() * scr.width;CVj办公区 - 实用经验教程分享!

    this.y = Math.random() * scr.height;CVj办公区 - 实用经验教程分享!

    this.vx = 0;CVj办公区 - 实用经验教程分享!

    this.vy = 0;CVj办公区 - 实用经验教程分享!

    this.dx = 0;CVj办公区 - 实用经验教程分享!

    this.dy = 0;CVj办公区 - 实用经验教程分享!

    this.w = pdiam * .5;CVj办公区 - 实用经验教程分享!

    }CVj办公区 - 实用经验教程分享!

    Particle.prototype.move = function () {CVj办公区 - 实用经验教程分享!

    this.x = this.dx;CVj办公区 - 实用经验教程分享!

    this.y = this.dy;CVj办公区 - 实用经验教程分享!

    this.vx = this.dx;CVj办公区 - 实用经验教程分享!

    this.vy = this.dy;CVj办公区 - 实用经验教程分享!

    this.dx = 0;CVj办公区 - 实用经验教程分享!

    this.dy = 0;CVj办公区 - 实用经验教程分享!

    ctx.drawImage(ipart, this.x - this.w, this.y - this.w, this.w * 2, this.w * 2);CVj办公区 - 实用经验教程分享!

    }CVj办公区 - 实用经验教程分享!

    Particle.prototype.physics = function () {CVj办公区 - 实用经验教程分享!

    if (pointer.isDown) {CVj办公区 - 实用经验教程分享!

    var dx = this.x - pointer.X;CVj办公区 - 实用经验教程分享!

    var dy = this.y - pointer.Y;CVj办公区 - 实用经验教程分享!

    var d = Math.sqrt(dx * dx dy * dy);CVj办公区 - 实用经验教程分享!

    if (d Math.min(scr.width, scr.height) / 2) {CVj办公区 - 实用经验教程分享!

    this.dx = dx / d * 0.5;CVj办公区 - 实用经验教程分享!

    this.dy = dy / d * 0.5;CVj办公区 - 实用经验教程分享!

    }CVj办公区 - 实用经验教程分享!

    }CVj办公区 - 实用经验教程分享!

    this.vx = ax;CVj办公区 - 实用经验教程分享!

    this.vy = ay;CVj办公区 - 实用经验教程分享!

    //this.vy = .1;CVj办公区 - 实用经验教程分享!

    this.x = this.vx;CVj办公区 - 实用经验教程分享!

    this.y = this.vy;CVj办公区 - 实用经验教程分享!

    if (this.x pdiam * .5) this.dx = (pdiam * .5 - this.x);CVj办公区 - 实用经验教程分享!

    else if (this.x > scr.width - pdiam * .5) this.dx -= (this.x - scr.width pdiam * .5);CVj办公区 - 实用经验教程分享!

    if (this.y pdiam * .5) this.dy = (pdiam * .5 - this.y);CVj办公区 - 实用经验教程分享!

    else if (this.y > scr.height - pdiam * .5) this.dy -= (this.y - scr.height pdiam * .5);CVj办公区 - 实用经验教程分享!

    var gx = Math.round(this.x / (pdiam * 4));CVj办公区 - 实用经验教程分享!

    var gy = Math.round(this.y / (pdiam * 4));CVj办公区 - 实用经验教程分享!

    for (var ix = gx - 1; ix = gx 1; ix ) { CVj办公区 - 实用经验教程分享!

    for (var iy = gy - 1; iy = gy 1; iy ) {CVj办公区 - 实用经验教程分享!

    var g = grid[iy * gw ix] || [];CVj办公区 - 实用经验教程分享!

    for (var j = 0, l = g.length; j l; j ) {CVj办公区 - 实用经验教程分享!

    var that = g[j];CVj办公区 - 实用经验教程分享!

    var dx = that.x - this.x;CVj办公区 - 实用经验教程分享!

    var dy = that.y - this.y;CVj办公区 - 实用经验教程分享!

    var d = Math.sqrt(dx * dx dy * dy);CVj办公区 - 实用经验教程分享!

    if (d pdiam) {CVj办公区 - 实用经验教程分享!

    dx = (dx / d) * (pdiam - d) * .25;CVj办公区 - 实用经验教程分享!

    dy = (dy / d) * (pdiam - d) * .25;CVj办公区 - 实用经验教程分享!

    this.dx -= dx;CVj办公区 - 实用经验教程分享!

    this.dy -= dy;CVj办公区 - 实用经验教程分享!

    that.dx = dx;CVj办公区 - 实用经验教程分享!

    that.dy = dy;CVj办公区 - 实用经验教程分享!

    }CVj办公区 - 实用经验教程分享!

    }CVj办公区 - 实用经验教程分享!

    }CVj办公区 - 实用经验教程分享!

    }CVj办公区 - 实用经验教程分享!

    if (!grid[gy * gw gx]) grid[gy * gw gx] = [this];CVj办公区 - 实用经验教程分享!

    else grid[gy * gw gx].push(this);CVj办公区 - 实用经验教程分享!

    }CVj办公区 - 实用经验教程分享!

    var run = function () {CVj办公区 - 实用经验教程分享!

    ctx.clearRect(0, 0, scr.width, scr.height);CVj办公区 - 实用经验教程分享!

    grid = new Array(gw * gh);CVj办公区 - 实用经验教程分享!

    for(var i = 0; i npart; i ) obj[i].physics();CVj办公区 - 实用经验教程分享!

    for(var i = 0; i npart; i ) obj[i].move();CVj办公区 - 实用经验教程分享!

    requestAnimFrame(run);CVj办公区 - 实用经验教程分享!

    }CVj办公区 - 实用经验教程分享!

    var init = function (p) {CVj办公区 - 实用经验教程分享!

    pdiam = p.particleSize;CVj办公区 - 实用经验教程分享!

    scr = new ge1doot.Screen({CVj办公区 - 实用经验教程分享!

    container: "screen",CVj办公区 - 实用经验教程分享!

    resize: function () {CVj办公区 - 实用经验教程分享!

    gw = Math.round(scr.width / (pdiam * 4));CVj办公区 - 实用经验教程分享!

    gh = Math.round(scr.height / (pdiam * 4));CVj办公区 - 实用经验教程分享!

    }CVj办公区 - 实用经验教程分享!

    });CVj办公区 - 实用经验教程分享!

    ctx = scr.ctx;CVj办公区 - 实用经验教程分享!

    scr.resize();CVj办公区 - 实用经验教程分享!

    pointer = new ge1doot.Pointer({});CVj办公区 - 实用经验教程分享!

    ipart = new Image();CVj办公区 - 实用经验教程分享!

    ipart.src = p.particleImg;CVj办公区 - 实用经验教程分享!

    npart = Math.round(((scr.width * scr.height) / (pdiam * pdiam)) * 0.6);CVj办公区 - 实用经验教程分享!

    for (var i = 0; i npart; i ) {CVj办公区 - 实用经验教程分享!

    obj[i] = new Particle();CVj办公区 - 实用经验教程分享!

    }CVj办公区 - 实用经验教程分享!

    if (window.DeviceMotionEvent != undefined) {CVj办公区 - 实用经验教程分享!

    window.ondevicemotion = function(e) {CVj办公区 - 实用经验教程分享!

    ax = e.accelerationIncludingGravity.x * 0.1;CVj办公区 - 实用经验教程分享!

    ay = -e.accelerationIncludingGravity.y * 0.1;CVj办公区 - 实用经验教程分享!

    if (ax > 0.1) ax = 0.1; else if (ax -0.1) ax = -0.1;CVj办公区 - 实用经验教程分享!

    if (ay > 0.1) ay = 0.1; else if (ay -0.1) ay = -0.1;CVj办公区 - 实用经验教程分享!

    if (window.innerWidth / window.innerHeight > 1) {CVj办公区 - 实用经验教程分享!

    var t = ay;CVj办公区 - 实用经验教程分享!

    ay = ax;CVj办公区 - 实用经验教程分享!

    ax = -t;CVj办公区 - 实用经验教程分享!

    }CVj办公区 - 实用经验教程分享!

    }CVj办公区 - 实用经验教程分享!

    } else ay = 0.1;CVj办公区 - 实用经验教程分享!

    run();CVj办公区 - 实用经验教程分享!

    }CVj办公区 - 实用经验教程分享!

    return {CVj办公区 - 实用经验教程分享!

    load : function (p) {CVj办公区 - 实用经验教程分享!

    window.addEventListener('load', function () {CVj办公区 - 实用经验教程分享!

    init(p);CVj办公区 - 实用经验教程分享!

    }, false);CVj办公区 - 实用经验教程分享!

    } CVj办公区 - 实用经验教程分享!

    }CVj办公区 - 实用经验教程分享!

    })().load({CVj办公区 - 实用经验教程分享!

    particleImg: "images/la.png",CVj办公区 - 实用经验教程分享!

    particleSize: 32CVj办公区 - 实用经验教程分享!

    });CVj办公区 - 实用经验教程分享!

    /script>CVj办公区 - 实用经验教程分享!

    HTML5 canvas相互碰撞散开红色小球CVj办公区 - 实用经验教程分享!

  • 5

    代码整体结构。CVj办公区 - 实用经验教程分享!

    HTML5 canvas相互碰撞散开红色小球CVj办公区 - 实用经验教程分享!

  • 5相关内容非法爬取自百度经验
  • 6

    查看效果。CVj办公区 - 实用经验教程分享!

    HTML5 canvas相互碰撞散开红色小球CVj办公区 - 实用经验教程分享!

  • 以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!CVj办公区 - 实用经验教程分享!


    标签: HTML

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码