zoukankan      html  css  js  c++  java
  • js动画之面向对象二

    面向对象,就是将一系列具有相同属性的元素提取出来,需要用的时候就new一个。

    • 先看效果图:
    • 分析:这些小球有相同动作,相同的“外貌”,所以将它提出来封装成一个对象,然后通过点击事件new这个对象。
    • 完整代码如下:
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style>
            * {margin: 0;padding: 0;}
            div{ 50px;height: 50px;position: absolute;left: 0;border-radius:50%;background: red;}
        </style>
    </head>
    <body>
        <button onclick="addDiv()">click</button>
        <script>
            function addDiv(){
                // new一个div对象
                let breakout = new Breakout(20,50);
                breakout.init();
            }
            function Breakout(x,y) {   //对象 构造函数  
                this.x = x;
                this.y = y;
            }
            Breakout.prototype = {    //原型方法  
                init() {              //初始化系统 
                    this.createDiv(); 
                    this.divStar();    //初始化div  
                },
                createDiv(){
                    let brick = document.createElement("div");
                    document.body.appendChild(brick);
                    this.Odiv = brick;
                },
                divStar() { 
                    console.log(this)
                    this.Odiv.style.top = this.y + 'px';  
                    this.Odiv.style.left = this.x + 'px';
                    this.disX = 3;             
                    this.disY = 3;                
                    this.maxWidth = window.innerWidth - this.Odiv.offsetWidth - this.disX;         
                    this.maxHeight = window.innerHeight - this.Odiv.offsetHeight - this.disY;    
                    this.ballMove();
                },
                ballMove() {        //div开始运动  
                    function auto() {
                        if (this.x >= this.maxWidth) this.disX *= -1;
                        if (this.y >= this.maxHeight) this.disY *= -1;
                        if (this.x < 0) this.disX *= -1;
                        if (this.y < 0) this.disY *= -1;
                        this.x += this.disX;
                        this.y += this.disY;
                        this.Odiv.style.left = this.x + 'px';
                        this.Odiv.style.top = this.y + 'px';
                        window.requestAnimationFrame(auto.bind(this));
                    }
                    auto.call(this);
                },
            }
        </script>
    </body>
    </html>
  • 相关阅读:
    godaddy 亚太机房 更换 美国机房 全过程(图)
    博客园设置访问密码
    GoDaddy Linux主机支持机房的更换
    今天电信宽代终于装上光纤了,升级或安装光纤需购光猫,可以自购。我来扫盲一下
    我来科普一下为毛很多人升级了20M的电信光纤宽带反而感觉速度更卡了
    百度浏览器使用率统计
    hdu 1281
    C#基于SMTP协议和SOCKET通信,实现邮件内容和附件的发送,并可隐藏收件人
    如何处理标注打架
    提高你的Java代码质量吧:谨慎包装类型的比较
  • 原文地址:https://www.cnblogs.com/duanhuarong/p/12196631.html
Copyright © 2011-2022 走看看