From ccf366876c8136206ea4991b827d71cb3f0284dd Mon Sep 17 00:00:00 2001 From: hammouda101010 Date: Tue, 8 Oct 2024 13:54:30 -0400 Subject: [PATCH] ok --- extensions/Hammouda101010/mousespeed.js | 155 ++++++++++++------------ 1 file changed, 80 insertions(+), 75 deletions(-) diff --git a/extensions/Hammouda101010/mousespeed.js b/extensions/Hammouda101010/mousespeed.js index 74686ae37..3edbe4009 100644 --- a/extensions/Hammouda101010/mousespeed.js +++ b/extensions/Hammouda101010/mousespeed.js @@ -4,101 +4,106 @@ // By: Hammouda101010 // License: MIT -(function(Scratch) { - 'use strict'; - - if (!Scratch.extensions.unsandboxed) { - throw new Error('This Hello World example must run unsandboxed'); - } - // Block Icon - const blockIconURI = "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIxMzkuNjk1NDQiIGhlaWdodD0iMTM5LjY5NTQ0IiB2aWV3Qm94PSIwLDAsMTM5LjY5NTQ0LDEzOS42OTU0NCI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTE3MC4xNTIyOCwtMTEwLjE1MjI4KSI+PGcgZGF0YS1wYXBlci1kYXRhPSJ7JnF1b3Q7aXNQYWludGluZ0xheWVyJnF1b3Q7OnRydWV9IiBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZS1saW5lY2FwPSJidXR0IiBzdHJva2UtbGluZWpvaW49Im1pdGVyIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS1kYXNoYXJyYXk9IiIgc3Ryb2tlLWRhc2hvZmZzZXQ9IjAiIHN0eWxlPSJtaXgtYmxlbmQtbW9kZTogbm9ybWFsIj48cGF0aCBkPSJNMTc1LjE1MjI4LDE4MGMwLC0zNS44MTQ0MSAyOS4wMzMzMSwtNjQuODQ3NzIgNjQuODQ3NzIsLTY0Ljg0NzcyYzM1LjgxNDQxLDAgNjQuODQ3NzIsMjkuMDMzMzEgNjQuODQ3NzIsNjQuODQ3NzJjMCwzNS44MTQ0MSAtMjkuMDMzMzEsNjQuODQ3NzIgLTY0Ljg0NzcyLDY0Ljg0NzcyYy0zNS44MTQ0MSwwIC02NC44NDc3MiwtMjkuMDMzMzEgLTY0Ljg0NzcyLC02NC44NDc3MnoiIGZpbGw9IiMwMGUwZmYiIHN0cm9rZT0iI2ZmZmZmZiIgc3Ryb2tlLXdpZHRoPSIxMCIvPjxnPjxwYXRoIGQ9Ik0yMzMuMTc2NjQsMTc5LjkyMjA5bC04LjU4OTA5LC0zOC41NzcyMWwxMi4yMjk0Niw1LjAxMDgxbDE3LjY1MzQ5LDMzLjU2NjM5bC0xNy40MTk5MywzNC42MTY3NGwtMTIuNDYzMDIsMy45NjA0NnoiIGZpbGw9IiMwMGE0ZmYiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0iTTI1Ny4zNTE5NiwxODEuMzExNWwtOC41ODkwOSwtMzguNTc3MjFsMTIuMjI5NDYsNS4wMTA4MWwxNy42NTM1LDMzLjU2NjM5bC0xNy40MTk5MywzNC42MTY3NGwtMTIuNDYzMDIsMy45NjA0NnoiIGZpbGw9IiMwMGE0ZmYiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0iTTIwOS45NDMyNywxODAuNTI0OTJsLTguNTg5MDksLTM4LjU3NzJsMTIuMjI5NDYsNS4wMTA4MWwxNy42NTM1LDMzLjU2NjM5bC0xNy40MTk5MywzNC42MTY3NGwtMTIuNDYzMDIsMy45NjA0NnoiIGZpbGw9IiMwMGE0ZmYiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0iTTI1MS42MDMyMiwyMTcuOTU3NmwtMTEuMTgzLC0yMC4xNjMzbC0xOC4wMTI3LDExLjMzMjVsLTAuNzgzNywtNjkuMDE1NWw0Ny42NjYxLDQ4LjM1MzhsLTE2LjY1NzIsMy43MDc3bDEwLjMzNTksMTguOTc3M2MwLDAgMS4zMjU4LDQuNTI1NCAtMi44MjUxLDcuMTEzMmMtNC45NTY3LDMuMDkwMyAtOC41NDAzLC0wLjMwNTcgLTguNTQwMywtMC4zMDU3eiIgZmlsbD0iIzAwZTBmZiIgc3Ryb2tlPSIjMDA2YWEyIiBzdHJva2Utd2lkdGg9IjQuNSIvPjwvZz48L2c+PC9nPjwvc3ZnPjwhLS1yb3RhdGlvbkNlbnRlcjo2OS44NDc3MjExODc2MzE4Mzo2OS44NDc3MjExODc2MzIwMi0tPg==" - const menuIconURI = "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIxMzkuNjk1NDQiIGhlaWdodD0iMTM5LjY5NTQ0IiB2aWV3Qm94PSIwLDAsMTM5LjY5NTQ0LDEzOS42OTU0NCI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTE3MC4xNTIyOCwtMTEwLjE1MjI4KSI+PGcgZGF0YS1wYXBlci1kYXRhPSJ7JnF1b3Q7aXNQYWludGluZ0xheWVyJnF1b3Q7OnRydWV9IiBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZS1saW5lY2FwPSJidXR0IiBzdHJva2UtbGluZWpvaW49Im1pdGVyIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS1kYXNoYXJyYXk9IiIgc3Ryb2tlLWRhc2hvZmZzZXQ9IjAiIHN0eWxlPSJtaXgtYmxlbmQtbW9kZTogbm9ybWFsIj48cGF0aCBkPSJNMTc1LjE1MjI4LDE4MGMwLC0zNS44MTQ0MSAyOS4wMzMzMSwtNjQuODQ3NzIgNjQuODQ3NzIsLTY0Ljg0NzcyYzM1LjgxNDQxLDAgNjQuODQ3NzIsMjkuMDMzMzEgNjQuODQ3NzIsNjQuODQ3NzJjMCwzNS44MTQ0MSAtMjkuMDMzMzEsNjQuODQ3NzIgLTY0Ljg0NzcyLDY0Ljg0NzcyYy0zNS44MTQ0MSwwIC02NC44NDc3MiwtMjkuMDMzMzEgLTY0Ljg0NzcyLC02NC44NDc3MnoiIGZpbGw9IiMwMGUwZmYiIHN0cm9rZT0iI2ZmZmZmZiIgc3Ryb2tlLXdpZHRoPSIxMCIvPjxnPjxwYXRoIGQ9Ik0yMzMuMTc2NjQsMTc5LjkyMjA5bC04LjU4OTA5LC0zOC41NzcyMWwxMi4yMjk0Niw1LjAxMDgxbDE3LjY1MzQ5LDMzLjU2NjM5bC0xNy40MTk5MywzNC42MTY3NGwtMTIuNDYzMDIsMy45NjA0NnoiIGZpbGw9IiMwMGE0ZmYiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0iTTI1Ny4zNTE5NiwxODEuMzExNWwtOC41ODkwOSwtMzguNTc3MjFsMTIuMjI5NDYsNS4wMTA4MWwxNy42NTM1LDMzLjU2NjM5bC0xNy40MTk5MywzNC42MTY3NGwtMTIuNDYzMDIsMy45NjA0NnoiIGZpbGw9IiMwMGE0ZmYiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0iTTIwOS45NDMyNywxODAuNTI0OTJsLTguNTg5MDksLTM4LjU3NzJsMTIuMjI5NDYsNS4wMTA4MWwxNy42NTM1LDMzLjU2NjM5bC0xNy40MTk5MywzNC42MTY3NGwtMTIuNDYzMDIsMy45NjA0NnoiIGZpbGw9IiMwMGE0ZmYiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0iTTI1MS42MDMyMiwyMTcuOTU3NmwtMTEuMTgzLC0yMC4xNjMzbC0xOC4wMTI3LDExLjMzMjVsLTAuNzgzNywtNjkuMDE1NWw0Ny42NjYxLDQ4LjM1MzhsLTE2LjY1NzIsMy43MDc3bDEwLjMzNTksMTguOTc3M2MwLDAgMS4zMjU4LDQuNTI1NCAtMi44MjUxLDcuMTEzMmMtNC45NTY3LDMuMDkwMyAtOC41NDAzLC0wLjMwNTcgLTguNTQwMywtMC4zMDU3eiIgZmlsbD0iIzAwZTBmZiIgc3Ryb2tlPSIjMDA2YWEyIiBzdHJva2Utd2lkdGg9IjQuNSIvPjwvZz48L2c+PC9nPjwvc3ZnPjwhLS1yb3RhdGlvbkNlbnRlcjo2OS44NDc3MjExODc2MzE4Mzo2OS44NDc3MjExODc2MzIwMi0tPg==" +(function (Scratch) { + "use strict"; - // Scratch's VM - const vm = Scratch.vm; + if (!Scratch.extensions.unsandboxed) { + throw new Error("This Hello World example must run unsandboxed"); + } + // Block Icon + const blockIconURI = + "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIxMzkuNjk1NDQiIGhlaWdodD0iMTM5LjY5NTQ0IiB2aWV3Qm94PSIwLDAsMTM5LjY5NTQ0LDEzOS42OTU0NCI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTE3MC4xNTIyOCwtMTEwLjE1MjI4KSI+PGcgZGF0YS1wYXBlci1kYXRhPSJ7JnF1b3Q7aXNQYWludGluZ0xheWVyJnF1b3Q7OnRydWV9IiBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZS1saW5lY2FwPSJidXR0IiBzdHJva2UtbGluZWpvaW49Im1pdGVyIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS1kYXNoYXJyYXk9IiIgc3Ryb2tlLWRhc2hvZmZzZXQ9IjAiIHN0eWxlPSJtaXgtYmxlbmQtbW9kZTogbm9ybWFsIj48cGF0aCBkPSJNMTc1LjE1MjI4LDE4MGMwLC0zNS44MTQ0MSAyOS4wMzMzMSwtNjQuODQ3NzIgNjQuODQ3NzIsLTY0Ljg0NzcyYzM1LjgxNDQxLDAgNjQuODQ3NzIsMjkuMDMzMzEgNjQuODQ3NzIsNjQuODQ3NzJjMCwzNS44MTQ0MSAtMjkuMDMzMzEsNjQuODQ3NzIgLTY0Ljg0NzcyLDY0Ljg0NzcyYy0zNS44MTQ0MSwwIC02NC44NDc3MiwtMjkuMDMzMzEgLTY0Ljg0NzcyLC02NC44NDc3MnoiIGZpbGw9IiMwMGUwZmYiIHN0cm9rZT0iI2ZmZmZmZiIgc3Ryb2tlLXdpZHRoPSIxMCIvPjxnPjxwYXRoIGQ9Ik0yMzMuMTc2NjQsMTc5LjkyMjA5bC04LjU4OTA5LC0zOC41NzcyMWwxMi4yMjk0Niw1LjAxMDgxbDE3LjY1MzQ5LDMzLjU2NjM5bC0xNy40MTk5MywzNC42MTY3NGwtMTIuNDYzMDIsMy45NjA0NnoiIGZpbGw9IiMwMGE0ZmYiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0iTTI1Ny4zNTE5NiwxODEuMzExNWwtOC41ODkwOSwtMzguNTc3MjFsMTIuMjI5NDYsNS4wMTA4MWwxNy42NTM1LDMzLjU2NjM5bC0xNy40MTk5MywzNC42MTY3NGwtMTIuNDYzMDIsMy45NjA0NnoiIGZpbGw9IiMwMGE0ZmYiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0iTTIwOS45NDMyNywxODAuNTI0OTJsLTguNTg5MDksLTM4LjU3NzJsMTIuMjI5NDYsNS4wMTA4MWwxNy42NTM1LDMzLjU2NjM5bC0xNy40MTk5MywzNC42MTY3NGwtMTIuNDYzMDIsMy45NjA0NnoiIGZpbGw9IiMwMGE0ZmYiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0iTTI1MS42MDMyMiwyMTcuOTU3NmwtMTEuMTgzLC0yMC4xNjMzbC0xOC4wMTI3LDExLjMzMjVsLTAuNzgzNywtNjkuMDE1NWw0Ny42NjYxLDQ4LjM1MzhsLTE2LjY1NzIsMy43MDc3bDEwLjMzNTksMTguOTc3M2MwLDAgMS4zMjU4LDQuNTI1NCAtMi44MjUxLDcuMTEzMmMtNC45NTY3LDMuMDkwMyAtOC41NDAzLC0wLjMwNTcgLTguNTQwMywtMC4zMDU3eiIgZmlsbD0iIzAwZTBmZiIgc3Ryb2tlPSIjMDA2YWEyIiBzdHJva2Utd2lkdGg9IjQuNSIvPjwvZz48L2c+PC9nPjwvc3ZnPjwhLS1yb3RhdGlvbkNlbnRlcjo2OS44NDc3MjExODc2MzE4Mzo2OS44NDc3MjExODc2MzIwMi0tPg=="; + const menuIconURI = + "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIxMzkuNjk1NDQiIGhlaWdodD0iMTM5LjY5NTQ0IiB2aWV3Qm94PSIwLDAsMTM5LjY5NTQ0LDEzOS42OTU0NCI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTE3MC4xNTIyOCwtMTEwLjE1MjI4KSI+PGcgZGF0YS1wYXBlci1kYXRhPSJ7JnF1b3Q7aXNQYWludGluZ0xheWVyJnF1b3Q7OnRydWV9IiBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZS1saW5lY2FwPSJidXR0IiBzdHJva2UtbGluZWpvaW49Im1pdGVyIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS1kYXNoYXJyYXk9IiIgc3Ryb2tlLWRhc2hvZmZzZXQ9IjAiIHN0eWxlPSJtaXgtYmxlbmQtbW9kZTogbm9ybWFsIj48cGF0aCBkPSJNMTc1LjE1MjI4LDE4MGMwLC0zNS44MTQ0MSAyOS4wMzMzMSwtNjQuODQ3NzIgNjQuODQ3NzIsLTY0Ljg0NzcyYzM1LjgxNDQxLDAgNjQuODQ3NzIsMjkuMDMzMzEgNjQuODQ3NzIsNjQuODQ3NzJjMCwzNS44MTQ0MSAtMjkuMDMzMzEsNjQuODQ3NzIgLTY0Ljg0NzcyLDY0Ljg0NzcyYy0zNS44MTQ0MSwwIC02NC44NDc3MiwtMjkuMDMzMzEgLTY0Ljg0NzcyLC02NC44NDc3MnoiIGZpbGw9IiMwMGUwZmYiIHN0cm9rZT0iI2ZmZmZmZiIgc3Ryb2tlLXdpZHRoPSIxMCIvPjxnPjxwYXRoIGQ9Ik0yMzMuMTc2NjQsMTc5LjkyMjA5bC04LjU4OTA5LC0zOC41NzcyMWwxMi4yMjk0Niw1LjAxMDgxbDE3LjY1MzQ5LDMzLjU2NjM5bC0xNy40MTk5MywzNC42MTY3NGwtMTIuNDYzMDIsMy45NjA0NnoiIGZpbGw9IiMwMGE0ZmYiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0iTTI1Ny4zNTE5NiwxODEuMzExNWwtOC41ODkwOSwtMzguNTc3MjFsMTIuMjI5NDYsNS4wMTA4MWwxNy42NTM1LDMzLjU2NjM5bC0xNy40MTk5MywzNC42MTY3NGwtMTIuNDYzMDIsMy45NjA0NnoiIGZpbGw9IiMwMGE0ZmYiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0iTTIwOS45NDMyNywxODAuNTI0OTJsLTguNTg5MDksLTM4LjU3NzJsMTIuMjI5NDYsNS4wMTA4MWwxNy42NTM1LDMzLjU2NjM5bC0xNy40MTk5MywzNC42MTY3NGwtMTIuNDYzMDIsMy45NjA0NnoiIGZpbGw9IiMwMGE0ZmYiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0iTTI1MS42MDMyMiwyMTcuOTU3NmwtMTEuMTgzLC0yMC4xNjMzbC0xOC4wMTI3LDExLjMzMjVsLTAuNzgzNywtNjkuMDE1NWw0Ny42NjYxLDQ4LjM1MzhsLTE2LjY1NzIsMy43MDc3bDEwLjMzNTksMTguOTc3M2MwLDAgMS4zMjU4LDQuNTI1NCAtMi44MjUxLDcuMTEzMmMtNC45NTY3LDMuMDkwMyAtOC41NDAzLC0wLjMwNTcgLTguNTQwMywtMC4zMDU3eiIgZmlsbD0iIzAwZTBmZiIgc3Ryb2tlPSIjMDA2YWEyIiBzdHJva2Utd2lkdGg9IjQuNSIvPjwvZz48L2c+PC9nPjwvc3ZnPjwhLS1yb3RhdGlvbkNlbnRlcjo2OS44NDc3MjExODc2MzE4Mzo2OS44NDc3MjExODc2MzIwMi0tPg=="; + // Scratch's VM + const vm = Scratch.vm; - class MouseSpeed { + class MouseSpeed { constructor() { - this.mouseX = 0; // Current mouse X position - this.mouseY = 0; // Current mouse Y position - this.lastX = 0; // Previous mouse X position - this.lastY = 0; // Previous mouse Y position - this.lastTime = performance.now(); // Last time the mouse was updated - this.speed = 0; // Speed of the mouse + this.mouseX = 0; // Current mouse X position + this.mouseY = 0; // Current mouse Y position + this.lastX = 0; // Previous mouse X position + this.lastY = 0; // Previous mouse Y position + this.lastTime = performance.now(); // Last time the mouse was updated + this.speed = 0; // Speed of the mouse - // Bind this to the event listener to track mouse movement - vm.renderer.canvas.addEventListener("mousemove",this.handleMouseMove.bind(this)); + // Bind this to the event listener to track mouse movement + vm.renderer.canvas.addEventListener( + "mousemove", + this.handleMouseMove.bind(this) + ); - // Start a continuous update interval to constantly track mouse speed - setInterval(() => this.updateMouseSpeed(), 50); // Updates every 50ms + // Start a continuous update interval to constantly track mouse speed + setInterval(() => this.updateMouseSpeed(), 50); // Updates every 50ms } getInfo() { - return { - id: 'mousespeed', - name: 'Mouse Speed', - menuIconURI: menuIconURI, - blockIconURI: blockIconURI, - docsURI: 'https://extensions.turbowarp.org/Hammouda101010/mousespeed', - color1: "#38C3E5", - color2: "#33A5C1", - blocks: [ - { - opcode: 'getMouseSpeed', - blockType: Scratch.BlockType.REPORTER, - text: 'mouse speed' - }, - { - opcode: 'mouseFaster', - blockType: Scratch.BlockType.BOOLEAN, - text: 'is mouse faster than [SPEED]?', - arguments: { - SPEED:{ - type: Scratch.ArgumentType.NUMBER, - defaultValue: 50 - } - } - }, - ] - }; - } + return { + id: "mousespeed", + name: "Mouse Speed", + menuIconURI: menuIconURI, + blockIconURI: blockIconURI, + docsURI: "https://extensions.turbowarp.org/Hammouda101010/mousespeed", + color1: "#38C3E5", + color2: "#33A5C1", + blocks: [ + { + opcode: "getMouseSpeed", + blockType: Scratch.BlockType.REPORTER, + text: "mouse speed", + }, + { + opcode: "mouseFaster", + blockType: Scratch.BlockType.BOOLEAN, + text: "is mouse faster than [SPEED]?", + arguments: { + SPEED: { + type: Scratch.ArgumentType.NUMBER, + defaultValue: 50, + }, + }, + }, + ], + }; + } - // Handles Mouse Speed + // Handles Mouse Speed handleMouseMove(event) { - this.mouseX = event.clientX; - this.mouseY = event.clientY; + this.mouseX = event.clientX; + this.mouseY = event.clientY; } //Updates Mouse Speed: updateMouseSpeed() { - const currentTime = performance.now(); - const timeElapsed = (currentTime - this.lastTime) / 1000; // Time in seconds + const currentTime = performance.now(); + const timeElapsed = (currentTime - this.lastTime) / 1000; // Time in seconds - if (timeElapsed > 0) { - const dx = this.mouseX - this.lastX; - const dy = this.mouseY - this.lastY; + if (timeElapsed > 0) { + const dx = this.mouseX - this.lastX; + const dy = this.mouseY - this.lastY; - // Calculate the distance traveled by the mouse - const distance = Math.sqrt(dx * dx + dy * dy); + // Calculate the distance traveled by the mouse + const distance = Math.sqrt(dx * dx + dy * dy); - // Calculate speed in pixels per second - this.speed = distance / timeElapsed; - } + // Calculate speed in pixels per second + this.speed = distance / timeElapsed; + } - // Update the last known mouse position and time - this.lastX = this.mouseX; - this.lastY = this.mouseY; - this.lastTime = currentTime; + // Update the last known mouse position and time + this.lastX = this.mouseX; + this.lastY = this.mouseY; + this.lastTime = currentTime; } - getMouseSpeed() { //Gets Mouse Speed - return Math.round(this.speed / 50); // Return the rounded speed - } - mouseFaster(args) { // Checks if mouse speed is greater than the SPEED arg - return this.getMouseSpeed() > args.SPEED; + getMouseSpeed() { + //Gets Mouse Speed + return Math.round(this.speed / 50); // Return the rounded speed } -} - Scratch.extensions.register(new MouseSpeed()); + mouseFaster(args) { + // Checks if mouse speed is greater than the SPEED arg + return this.getMouseSpeed() > args.SPEED; + } + } + Scratch.extensions.register(new MouseSpeed()); })(Scratch); -