<html>
<head>
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<div class='square' id="red"></div>
<div class='square' id="blue"></div>
<!-- <div class='square' id="green"></div> -->
<h2></h2>
<h3></h3>
</body>
</html>
// Setup
///////////////////////////////////////////////
var red = {};
red.id = '#red';
red.x = 180;
red.y = 150;
red.width = 50;
red.height = 50;
var blue = {};
blue.id = '#blue';
blue.x = 50;
blue.y = 90;
blue.width = 50;
blue.height = 50;
$(document).on('mousemove', handleMouseMove);
// core logic
///////////////////////////////////////////////
function handleMouseMove(event) {
// get the mouse location from the event object
moveBlueSquare(event.pageX, event.pageY);
if (doCollide(red, blue)) {
showResult(true);
} else {
showResult(false);
}
}
// Helper Functions
///////////////////////////////////////////////
function moveBlueSquare(x, y) {
blue.x = x
blue.y = y
$(blue.id).css('left', blue.x);
$(blue.id).css('top', blue.y);
}
function doCollide(square1, square2) {
blue.leftX = blue.x;
blue.topY = blue.y;
blue.rightX = blue.x + blue.width;
blue.bottomY = blue.y + blue.height;
// TODO: Do the same for square2
red.leftX = red.x;
red.topY = red.y;
red.rightX = red.x + red.width;
red.bottomY = red.y + red.height;
// TODO: Return true if they are overlapping, false otherwise
if (blue.rightX > red.leftX && blue.leftX < red.rightX && blue.bottomY > red.topY && blue.topY < red.bottomY){
$('#blue').css('background', 'yellow')
$('#red').css('background', 'green')
return true;
}
else {
$('#blue').css('background', 'blue')
$('#red').css('background', 'red')
return false;
}
}
function showResult(result) {
$("h2").text('doCollide: ' + result);
$("h3").text('Mouse Position: ' + blue.x + ' ,' + blue.y);
}
Output
You can jump to the latest bin by adding /latest
to your URL
Keyboard Shortcuts
Shortcut | Action |
---|---|
ctrl + [num] | Toggle nth panel |
ctrl + 0 | Close focused panel |
ctrl + enter | Re-render output. If console visible: run JS in console |
Ctrl + l | Clear the console |
ctrl + / | Toggle comment on selected lines |
ctrl + ] | Indents selected lines |
ctrl + [ | Unindents selected lines |
tab | Code complete & Emmet expand |
ctrl + shift + L | Beautify code in active panel |
ctrl + s | Save & lock current Bin from further changes |
ctrl + shift + s | Open the share options |
ctrl + y | Archive Bin |
Complete list of JS Bin shortcuts |
JS Bin URLs
URL | Action |
---|---|
/ | Show the full rendered output. This content will update in real time as it's updated from the /edit url. |
/edit | Edit the current bin |
/watch | Follow a Code Casting session |
/embed | Create an embeddable version of the bin |
/latest | Load the very latest bin (/latest goes in place of the revision) |
/[username]/last | View the last edited bin for this user |
/[username]/last/edit | Edit the last edited bin for this user |
/[username]/last/watch | Follow the Code Casting session for the latest bin for this user |
/quiet | Remove analytics and edit button from rendered output |
.js | Load only the JavaScript for a bin |
.css | Load only the CSS for a bin |
Except for username prefixed urls, the url may start with http://jsbin.com/abc and the url fragments can be added to the url to view it differently. |