Toon posts:

[JS] Object Oriented: stuiterbal

Pagina: 1
Acties:
  • 154 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik heb een script gemaakt die een ball over het scherm heen zou moeten laten stuiteren. Ik heb dit script gemaakt op een Mac, maar wanneer ik hem bekijk op een PC dan stuitert de bal niet.
De tweede vraag is dat ik graag wil er meerdere ballen stuiteren; ik moet het script hierdoor object georienteerd maken, zover ben ik wel; but I don't have a clue how? ...
Zou iemand mij willen helpen? Het script heb ik hieronder gepost.

<html>
<head>
<script language="javascript">

var speed_x=10;
var speed_y=10;
var ball_width=104;
var ball_height=103;
var ball_X=0;
var ball_Y=0;

function move_sprite() {
if (ball_Y + ball_height>=window.innerHeight) {
speed_y=-speed_x;
}
if (ball_Y <= 0 ) {
speed_y=speed_y;
}
if (ball_X + ball_width>=window.innerWidth) {
speed_x=-speed_x;
}
if (ball_X<=0 ) {
speed_x=speed_x;
}
ball_Y+=speed_y;
ball_X+=speed_x;
if (document.getElementById) {
document.getElementById("sprite").style.top = ball_Y;
document.getElementById("sprite").style.left = ball_X;
}
else {
document.sprite.top = ball_Y;
document.sprite.left = ball_X;
}
setTimeout("move_sprite()", 10);
}
</script>
<body onload="move_sprite()">

<div id="sprite" style="position:absolute">
[img]"balla.gif"> </div> </body> </html[/img]

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

snotverkut! zit ik een hoerenlange reply te tikken wordt het topic gesloten :(

nou, nog een keertje maar dan.

Objecten in javascript maak je door zgn. prototyping.

Je maakt een klassebeschrijving door een functie, die in zichzelf ook constructor is.
code:
1
2
3
4
function StuiterBal ( hoogte, breedte )
{
  
}

Deze klassebeschrijving moet natuurlijk properties en methods bevatten. Deze geef je op de volgende manier aan:
code:
1
2
3
4
5
6
7
8
9
10
11
12
function StuiterBal ( hoogte, breedte )
{
   this.h = hoogte;   // h en b zijn nu properties van StuiterBal
   this.b = breedte;
   
   this.start = start; // maak de functie start een method van StuiterBal

   function start ()   // de functionbody van start ()
   {
    // code
   }
}

Maak dan instanties van dit object aan op de volgende manier:
code:
1
s = new StuiterBal ( 103, 104 );

en roep methods aan op de volgende manier:
code:
1
s.start ();

etcetera. hth

edit:
gebruik btw. [ code] en [ /code] tags om je codelayout te behouden

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

topictitel aangepast:
"stuiteren" >> "[JS] Object Oriented: stuiterbal"

volgende keer mag je best een wat duidelijke topictitel nemen trouwens :)

Hier gaan mensen echt de raarste dingen van denken ;)

  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 22-06 13:51

Clay

cookie erbij?

Deze klassebeschrijving moet natuurlijk properties en methods bevatten. Deze geef je op de volgende manier aan: <code>
Da's op zich wel goed, maar ik functies toch met prototyping aan een object verbinden, als je object methodes namelijk in de object functie zelf zet wordt die toewijzing voor elke instantie van je object uitgevoerd, en wordt de functie zelf ook binnen ieder object opgeslagen, wat dus een grotere belasting is voor je browser.
Met kleine hoeveelheden relatief eenvoudige objecten zal je het verschil echter niet zo merken.

code wordt er maar een beetje anders van:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
function StuiterBal ( hoogte, breedte )
{
   this.h = hoogte;
   this.b = breedte;
}

StuiterBal.prototype.start = start;
   
   function start ()   
   {
    // code
    // this.h en this.b beschikbaar  
   }

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


  • OzBoz
  • Registratie: Maart 2000
  • Laatst online: 09-09 19:36

OzBoz

.:.H.:.I.:.P.:.

1 is genoeg

My Fizion | My 3D prints | LinkedIn


Dit topic is gesloten.