AdamDrechsel/SVG-inlamning — Issue #2: Fart på paddeln
Author: itpastorn
Created: 2012-01-25 14:15:18+00:00
State: open

Nytt utkast till skript
--------------------------

var rpad = document.getElementById("rect1");
var rpad_y = rpad.getAttribute("y");
var rpad_speed = 0;

var lpad = document.getElementById("rect2");
var lpad_y = lpad.getAttribute("y");
var lpad_speed = 0;

var fired = false;

window.onkeydown = function (e) {
if (fired) {
return false;
}
switch(e.keyCode) {
case 38:
if (rpad_y >= 15){
rpad_speed = -20
// rpad_y -= 20;
// rpad.setAttribute("y", rpad_y);
}
break;

case 40:
if (rpad_y <= 430) {
rpad_speed = 20;
// rpad_y = +rpad_y +20;
// rpad.setAttribute("y", rpad_y);
}
break;

case 65:
if (lpad_y >= 15){
lpad_y -= 20;
lpad.setAttribute("y", lpad_y);
}
break;

case 90:
if (lpad_y <= 430){
lpad_y = +lpad_y + 20;
lpad.setAttribute("y", lpad_y);
}
break;
}
fired = true;
return false;
}

window.onkeyup = function () {
fired = false;
rpad_speed = 0;
lpad_speed = 0;
}
var totspeed = 10;
var startvinkel = Math.random() * 0.5 * Math.PI - Math.PI * 0.25;

var boll = {
x : 600,
y : 300,
xspeed : Math.cos(startvinkel) * totspeed,
yspeed : Math.sin(startvinkel) * totspeed,
bollen : document.getElementById("bollen")
};
boll.r = boll.bollen.getAttribute("r");

function moveball() {
// Flytta paddlar först
rpad_y = +rpad_y + (+rpad_speed);
rpad_y = (rpad_y < 15) ? 15 : rpad_y;
rpad.setAttribute("y", rpad_y);
console.log(rpad_y);

if ( boll.y < 20 ) {
boll.yspeed = Math.abs(boll.yspeed);
}
// studs uppe
else if (boll.y > 580) {
boll.yspeed = -Math.abs(boll.yspeed);
}
// studs nere
if (boll.x < 70) {
// Träffar den paddeln?
if ( boll.y >= lpad_y - boll.r && boll.y <= +lpad_y + 150 + +boll.r ) {
console.log("träff vänster" + boll.y + " - " + lpad_y);
// Träff-vänster
// Paddelns mitt lpad_y + 75
var vinkel = (boll.y - lpad_y - 75) * Math.PI /260;
boll.xspeed = Math.cos(vinkel) * totspeed;
boll.yspeed = Math.sin(vinkel) * totspeed;
}
if ( boll.x < 0 ) {
return false;
}
}
if (boll.x > 1260) {
// träffar den höger-paddeln?
if ( boll.y >= rpad_y - boll.r && boll.y <= +rpad_y + 150 + +boll.r ) {
var vinkel = (boll.y - rpad_y - 75) * Math.PI /260;
boll.xspeed = -Math.cos(vinkel) * totspeed;
boll.yspeed = Math.sin(vinkel) * totspeed;
// träff-höger
}
if (boll.x > 1330) {
return false;
// miss- höger
}
}
boll.x += boll.xspeed;
boll.y += boll.yspeed;
boll.bollen.setAttribute("cx", boll.x);
boll.bollen.setAttribute("cy", boll.y);
window.setTimeout(moveball, 30);
}
moveball();