login  Naam:   Wachtwoord: 
Registreer je!
 Forum

AS2 random beweging naar AS3. (Opgelost)

Offline lolll - 31/01/2010 12:27 (laatste wijziging 31/01/2010 17:21)
Avatar van lolllLid Hallo,
Ik had aan svm, die de tutorial bewegingen met actionscript heeft gemaakt, een vraag gestuurd of hij wist hoe ik die code in AS3 kon zetten. Helaas, kon hij alleen zeer goed programmeren in AS2. Hij zei dat ik het dan maar op het forum moest plaatsen. Hieronder staat de code die ik heb proberen aan te passen van de oude code ( helemaal onderaan in AS2.) Ik krijg geen foutmeldingen, maar de ballen bewegen niet. Kijk maar eens :
  1. import flash.display.*;
  2. this.bal1.addEventListener(Event.COMPLETE, snelheidmaken);
  3. this.bal1.addEventListener(Event.ENTER_FRAME, restmaken);
  4. this.bal2.addEventListener(Event.COMPLETE, snelheidmaken);
  5. this.bal2.addEventListener(Event.ENTER_FRAME, restmaken);
  6. function snelheidmaken (Event):void{
  7. var snelheid:int = 3; //de maximale snelheid -3
  8.  
  9. // een variable snelheid aanmaken voor x en y appart
  10. var snelheidx:int = Math.random() * snelheid + 3;
  11. var snelheidy:int = Math.random() * snelheid + 3;
  12. if(snelheidx > 12){
  13. snelheidx = 12;
  14. }
  15. // de positie bepalen, wat telkens herhaald wordt
  16. }
  17. function restmaken (Event):void{
  18. var snelheid:int = 3;
  19. this.x = this.x + snelheidx;
  20. this.y = this.y + snelheidy;
  21. var xlinks = this.x + (this.width);
  22. var xrechts = this.x - (this.width);
  23. var yonder = this.y + (this.height);
  24. var yboven = this.y - (this.height);
  25. // de positie is nu dus al bepaalt, nu alleen nog "binnen de muren" houden
  26. if(xlinks > 550){
  27. var snelheidx = - Math.random() * snelheid;
  28. }
  29. if(xrechts < 0){
  30. snelheidx = + Math.random() * snelheid;
  31. }
  32. if(yonder > 400){
  33. var snelheidy = - Math.random() * snelheid;
  34. }
  35. if(yboven < 0){
  36. snelheidy = + Math.random() * snelheid;
  37. }
  38. }

AS2 bij het symbool bal1 en bal2.
  1. onClipEvent(load){
  2. snelheid = 5; //de maximale snelheid
  3.  
  4. // een variable snelheid aanmaken voor x en y appart
  5. snelheidx = Math.random() * snelheid + 3;
  6. snelheidy = Math.random() * snelheid + 3;
  7. if(snelheidx > 14){
  8. snelheidx = 14;
  9. }
  10. }
  11.  
  12. // de positie bepalen, wat telkens herhaald wordt
  13. onClipEvent(enterFrame){
  14. this._x = this._x + snelheidx;
  15. this._y = this._y + snelheidy;
  16. var xlinks = this._x + (this._width);
  17. var xrechts = this._x - (this._width);
  18. var yonder = this._y + (this._height);
  19. var yboven = this._y - (this._height);
  20. // de positie is nu dus al bepaalt, nu alleen nog "binnen de muren" houden
  21. if(xlinks > 550){
  22. snelheidx = - Math.random() * snelheid;
  23. }
  24. if(xrechts < 0){
  25. snelheidx = + Math.random() * snelheid;
  26. }
  27. if(yonder > 400){
  28. snelheidy = - Math.random() * snelheid;
  29. }
  30. if(yboven < 0){
  31. snelheidy = + Math.random() * snelheid;
  32. }
  33. }


Waarschijnlijk heb ik een domme fout gemaakt, ik ben dan ook een beginner, maar ik heb toch heel het internet afgezocht om te voorkomen dat er compilatiefouten inzaten. Helaas werkt het nu nog niet. Weet iemand hoe ik de code zou kunnen aanpassen ?

EDIT :

Heb al gevonden, hoe de bal random beweegt, alleen kan ik hem niet binnen het scherm houden. Dit is de code, misschien kan nu iemand het aanpassen zodat het werkt ?

  1. import flash.events.*;
  2. var snelheid = 3;
  3. var snelheidx = Math.random() * snelheid + 3;
  4. var snelheidy = Math.random() * snelheid + 3;
  5. bal.addEventListener(Event.ENTER_FRAME, enterframefunction);
  6. function enterframefunction (e:Event):void{
  7. bal.x = bal.x + snelheidx;
  8. bal.y = bal.y + snelheidy;
  9. // de positie is nu dus al bepaalt, nu alleen nog "binnen de muren" houden
  10. if(bal.x + (bal.width) > 550){
  11. var snelheidx = - Math.random() * snelheid;
  12. }
  13. if(bal.x - (bal.width) < 0){
  14. snelheidx = + Math.random() * snelheid;
  15. }
  16. if(bal.y + (bal.height) > 400){
  17. var snelheidy = - Math.random() * snelheid;
  18. }
  19. if(bal.y - (bal.height) < 0){
  20. snelheidy = + Math.random() * snelheid;
  21. }
  22. }

4 antwoorden

Gesponsorde links
Offline vinTage - 31/01/2010 21:16
Avatar van vinTage Nieuw lid gewoon het woordje "var" weghalen in de ifjes van je enterframefunction
Offline lolll - 01/02/2010 18:18
Avatar van lolll Lid ok, het werkt nu met 1 bal.
Maar in mijn oorspronkelijke applicatie, moeten 2 ballen random bewegen. Hier is mijn code :
  1. import flash.events.*;
  2. var snelheid = 3;
  3. var snelheidx1 = Math.random() * snelheid + 3;
  4. var snelheidy1 = Math.random() * snelheid + 3;
  5. var snelheidx2 = Math.random() * snelheid + 3;
  6. var snelheidy2 = Math.random() * snelheid + 3;
  7. this.bal1.addEventListener(Event.ENTER_FRAME, enterframefunction);
  8. this.bal2.addEventListener(Event.ENTER_FRAME, enterframefunction);
  9. function enterframefunction (e:Event):void{
  10. bal1.x = bal1.x + snelheidx1;
  11. bal1.y = bal1.y + snelheidy1;
  12. bal2.x = bal2.x + snelheidx2;
  13. bal2.x = bal2.x + snelheidy2;
  14. // de positie is nu dus al bepaalt, nu alleen nog "binnen de muren" houden
  15. if(bal1.x + (bal1.width) > 550){
  16. snelheidx1 = - Math.random() * snelheid;
  17. }
  18. if(bal1.x - (bal1.width) < 0){
  19. snelheidx1 = + Math.random() * snelheid;
  20. }
  21. if(bal1.y + (bal1.height) > 400){
  22. snelheidy1 = - Math.random() * snelheid;
  23. }
  24. if(bal1.y - (bal1.height) < 0){
  25. snelheidy1 = + Math.random() * snelheid;
  26. }
  27. if(bal2.x + (bal2.width) > 550){
  28. snelheidx2 = - Math.random() * snelheid;
  29. }
  30. if(bal2.x - (bal2.width) < 0){
  31. snelheidx2 = + Math.random() * snelheid;
  32. }
  33. if(bal2.y + (bal2.height) > 400){
  34. snelheidy2 = - Math.random() * snelheid;
  35. }
  36. if(bal2.y - (bal2.height) < 0){
  37. snelheidy2 = + Math.random() * snelheid;
  38. }
  39. }

Alles werkt bij bal1, alleen bal2 wil niet luisteren, en vliegt buiten " de muren". Dat snap ik eigenlijk niet goed , de code is juist hetzelfde als bal1 alleen is er nu snelheidy2 en snelheidx2, voor de rest is niets verschillend, en toch werkt het niet ? Voor de rest heb je me heel goed geholpen ! bedankt.
Alleen dit zou nog opgelost moeten worden, en daarna kan ik eindelijk goed beginnen !
Offline vinTage - 01/02/2010 18:43
Avatar van vinTage Nieuw lid De hele functie kan anders, voor elke bal hoef je nu alleen nog een eventlistener te plaatsen en een random snelheidx en y.
  1. var snelheid = 3;
  2.  
  3. bal1.addEventListener (Event.ENTER_FRAME, enterframefunction);
  4. bal1.snelheidx = Math.random() * snelheid + 3;
  5. bal1.snelheidy = Math.random() * snelheid + 3;
  6.  
  7. bal2.addEventListener (Event.ENTER_FRAME, enterframefunction);
  8. bal2.snelheidx = Math.random() * snelheid + 3;
  9. bal2.snelheidy = Math.random() * snelheid + 3;
  10.  
  11. function enterframefunction (e:Event):void
  12. {
  13. e.currentTarget.x = e.currentTarget.x + e.currentTarget.snelheidx;
  14. e.currentTarget.y = e.currentTarget.y + e.currentTarget.snelheidy;
  15.  
  16. if (e.currentTarget.x + (e.currentTarget.width) > 550)
  17. {
  18. e.currentTarget.snelheidx = - Math.random() * snelheid;
  19. }
  20. if (e.currentTarget.x - (e.currentTarget.width) < 0)
  21. {
  22. e.currentTarget.snelheidx = + Math.random() * snelheid;
  23. }
  24. if (e.currentTarget.y + (e.currentTarget.height) > 400)
  25. {
  26. e.currentTarget.snelheidy = - Math.random() * snelheid;
  27. }
  28. if (e.currentTarget.y - (e.currentTarget.height) < 0)
  29. {
  30. e.currentTarget.snelheidy = + Math.random() * snelheid;
  31. }
  32. }
Bedankt door: lolll
Offline lolll - 01/02/2010 20:02
Avatar van lolll Lid Oke ! het werkt, héél hard bedankt, nu kan ik eindelijk verder!
Alleen snap ik die e.currentTarget niet echt zo goed. Maar ik ben al blij dat het werkt !
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.186s