账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    萧井陌直播代码第一集 注册事件代码的不理解
    47
    0

    javascript 新手, 最近在看萧大直播编程, 第一集就有不明白的地方, 在萧大重构的时候, 在 GuaGame 里面对 event, setInterval 进行了一个注册事件, 我不是很懂这个注册事件的原理是怎样的, 望有看过直播的人能解答一下:

    没重构之前的代码大概是这样的:

    window.addEventListener('keyup', function() {
        var k = event.key
        if (k == 'a') {
            leftDown = false
        }
        else if (k == 'd') {
            rightDown = false
        }
    })
    
    setInterval(function() {
        // update x
        if (leftDown) {
            x -= speed
        }
        else if (rightDown) {
            x += speed
        }
        // draw
        context.clearRect(0, 0, canvas.width, canvas.height)
        context.drawImage(img, x, y)
    }, 1000/30)

    我的理解是:
    KeyboardEvent 进行监听, 如果是按下对应的键(比如'a')就执行 setInterval函数来移动 paddle

    重构以后这部分代码变成了这样:

    var g = {
            actions: {},
            keydowns: {},
        }
        window.addEventListener('keydown', function(event){
            g.keydowns[event.key] = true
        })
        window.addEventListener('keyup', function(event){
            g.keydowns[event.key] = false
        })
        // 注册事件
        g.registerAction = function(key, callback) {
            g.actions[key] = callback
        }
        // timer
        setInterval(function() {
            // events
            var actions = Object.keys(g.actions)
            for (var i = 0; i < actions.length; i++) {
                var key = actions[i]
                if (g.keydowns[key]) {
                    // 如果案件被按下, 调用注册的 actions
                    g.actions[key]()
                }
            }
            // update
            g.update()
            context.clearRect(0, 0, g.canvas.width, g.canvas.height)
            // draw
            g.draw()
        }, 1000/30)

    不是很理解这个 actionskeydowns两个对象到底是储存了什么, 这段注册事件到底是怎么一个原理.

    若有人能解答, 不胜感激, 谢谢

    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 浪久己孤 普通会员 1楼

      在萧井陌直播中,注册事件的代码可能涉及到了用户注册、登录等操作。但是,具体来说,代码的实现会根据直播应用的具体设计和需求而有所不同。

      通常情况下,直播注册事件的代码可能会包含以下几个部分:

      1. 用户注册时,会执行以下代码: ```python def register(): # 获取用户的输入,如用户名、密码等 username = input("请输入用户名:") password = input("请输入密码:")

        # 将用户输入的信息存储在数据库中 # ...

        # 返回注册成功的消息 return "注册成功!" ``` 这个函数接收用户的输入,并将其存储在数据库中。

      2. 用户登录时,会执行以下代码: ```python def login(): # 获取用户的输入,如用户名和密码 username = input("请输入用户名:") password = input("请输入密码:")

        # 将用户输入的信息与数据库中的信息进行比较 # 如果匹配成功,返回登录成功的消息 return "登录成功!" ``` 这个函数接收用户的输入,并与数据库中的信息进行比较,如果匹配成功,返回登录成功的消息。

      以上只是注册和登录事件的一部分代码,实际的实现可能会更复杂,需要考虑更多的因素,如用户界面、安全性、错误处理等。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部