vinTagesworld Flash forum

Stel zelf een vraag in het flash forum!


kogel afschieten
blokje door W0utah op 05-01-07 om 12:11
Ik probeer nu vanuit een kannon een kogel te laten afschieten, de kogel komt wel op de juiste plaats terecht, maar hij maakt geen beweging, hij springt er gewoon naartoe

Verder wou ik ook vragen of mijn code correct was, of die onRelease binnen de onEnterFrame moet?

actionscript code

stop();
Mouse.hide();
startDrag(mc_crosshair, true);
this.onEnterFrame = function() {
  var yLengte:Number = mc_crosshair._y-mc_kannon.kannon_loop._y;
  var xLengte:Number = mc_crosshair._x-mc_kannon.kannon_loop._x;
  // de hoek van de muis zoeken
  var hoek = Math.atan2(yLengte, xLengte);
  var hoek = hoek*(180/Math.PI);
  mc_kannon.kannon_loop._rotation = hoek;
  function shoot() {
    var kogel = attachMovie("mc_bullet", "mc_bullet", this.getNextHighestDepth);
    kogel._x = xLengte;
    kogel._y = yLengte;
  }
  mc_crosshair.onRelease = function() {
    shoot();
  };
};
 



 


<< [1] [2] >>
Reply
blokje door vinTage op 05-01-07 om 12:18
Je kogel is gelijk op het eindpunt omdat je dat ook aangeeft in je AS
actionscript code

kogel._x = xLengte;
kogel._y = yLengte;
 


Je zal het moeten oplossen door aan de mc_bullet in een onClipEvent(load) de start en eind positie in te geven en in een enterFrame van start naar eind te laten gaan (en de clip daar te removen).

En die onRelease moet gewoon buiten die onEnterFrame.

 
Reply
blokje door W0utah op 05-01-07 om 12:22
bedankt, ik ga het direct proberen, maar als ik die onRelease buiten die onEnterFrame zet, dan werkt het helemaal niet meer

 
Reply
blokje door vinTage op 05-01-07 om 12:30
Die function shoot moet ook buiten de onEnterFrame.

die onRelease en die function hoeven toch niet continue aangemaakt te worden

volgens mij moet je code er zo uitzien:
actionscript code

stop();
Mouse.hide();
startDrag(mc_crosshair, true);
onEnterFrame = function() {
  var yLengte:Number = mc_crosshair._y-mc_kannon.kannon_loop._y;
  var xLengte:Number = mc_crosshair._x-mc_kannon.kannon_loop._x;
  // de hoek van de muis zoeken
  var hoek = Math.atan2(yLengte, xLengte);
  var hoek = hoek*(180/Math.PI);
  mc_kannon.kannon_loop._rotation = hoek;
};

function shoot() {
  var kogel = attachMovie("mc_bullet", "mc_bullet", this.getNextHighestDepth);
  kogel._x = xLengte;
  kogel._y = yLengte;
}
mc_crosshair.onRelease = function() {
  shoot();
};
 


En als je strict wilt scripten, dan moet je het wel goed doen, en niet hier wel en daar niet.
var yLengte:Number <=daar wel
var hoek <=daar niet
var kogel <=daar ook niet





 
Reply
blokje door W0utah op 05-01-07 om 12:35
zo had ik mijn code eerst ook, maar het probleem is dan dat hij de kogel niet meer op de juiste plaats zet

en wat je wilt zeggen met dat laatste snap ik niet
quote vinTage :

En als je strict wilt scripten, dan moet je het wel goed doen, en niet hier wel en daar niet.
var yLengte:Number <=daar wel
var hoek <=daar niet
var kogel <=daar ook niet



 
Reply
blokje door vinTage op 05-01-07 om 12:47
ah, wss moet je gewoon overal die var zooi weghalen.
als je een var aanmaakt is die alleen IN desbetreffende functie.

strict scripten
var getal:Number <=strict
var getal <= niet strict

actionscript code

stop();
Mouse.hide();
startDrag(mc_crosshair, true);
onEnterFrame = function () {
  yLengte = mc_crosshair._y-mc_kannon.kannon_loop._y;
  xLengte = mc_crosshair._x-mc_kannon.kannon_loop._x;
  // de hoek van de muis zoeken
  hoek = Math.atan2(yLengte, xLengte);
  hoek = hoek*(180/Math.PI);
  mc_kannon.kannon_loop._rotation = hoek;
};
function shoot() {
  kogel = attachMovie("mc_bullet", "mc_bullet", this.getNextHighestDepth);
  kogel._x = xLengte;
  kogel._y = yLengte;
}
mc_crosshair.onRelease = function() {
  shoot();
};

 


laatst ge-edit op: 05-01-07 om 12:50
Reply
blokje door W0utah op 05-01-07 om 13:01
thx, dat werkt al, nu zal ik wel zoeken hoe het moet met de kogel

alvast bedankt

edit:
ik zit nu al wat verder, maar zit met een probleem, zodra ik klik en de kogel wegschiet, nog niet in de juiste richting.
Dan kan je de loop van het kannon niet meer draaien, en de fout zie ik niet.
actionscript code

Mouse.hide();
startDrag(mc_crosshair, true);
level = 0;
txt_level.text = level;
this.onEnterFrame = function() {
  yLengte = mc_crosshair._y-mc_kannon.kannon_loop._y;
  xLengte = mc_crosshair._x-mc_kannon.kannon_loop._x;
  // de hoek van de muis zoeken
  hoek = Math.atan2(yLengte, xLengte);
  hoek = hoek*(180/Math.PI);
  mc_kannon.kannon_loop._rotation = hoek;
};
function shoot() {
  bullet++;
  kogel = attachMovie("mc_bullet", "mc_bullet"+bullet, this.getNextHighestDepth);
  kogel._x = mc_kannon.kannon_loop._x;
  kogel._y = mc_kannon.kannon_loop._y;
  shooting = true;
  speed = 5;
  if (shooting == true) {
    this.onEnterFrame = function() {
      kogel._x += speed;
      kogel._y += speed;
    };
  }
  if (kogel._x>xLengte) {
    shooting = false;
  }
}
mc_crosshair.onRelease = function() {
  shoot();
};
stop();

 


laatst ge-edit op: 05-01-07 om 15:12
Reply
blokje door vinTage op 05-01-07 om 15:18
Mjah, wat kan ik zeggen, upload eens een fla :)

 
Reply
blokje door W0utah op 05-01-07 om 15:22
laat maar, heb het al gevonden
het moest dit zijn:
actionscript code

kogel.onEnterFrame = function() {
 


maar toch bedankt voor de snelle reactie

edit:
de kogel schiet nu wel weg, maar nooit naar de goede richting, ik zou niet weten hoe dat moet
actionscript code

Mouse.hide();
startDrag(mc_crosshair, true);
level = 0;
txt_level.text = level;
this.onEnterFrame = function() {
  yLengte = mc_crosshair._y-mc_kannon.kannon_loop._y;
  xLengte = mc_crosshair._x-mc_kannon.kannon_loop._x;
  // de hoek van de muis zoeken
  hoek = Math.atan2(yLengte, xLengte);
  hoek = hoek*(180/Math.PI);
  mc_kannon.kannon_loop._rotation = hoek;
};
function shoot() {
  bullet++;
  kogel = attachMovie("mc_bullet", "mc_bullet"+bullet, this.getNextHighestDepth);
  kogel._x = mc_kannon.kannon_loop._x;
  kogel._y = mc_kannon.kannon_loop._y;
  shooting = true;
  speed = 10;
  if (shooting == true) {
    kogel.onEnterFrame = function() {
      if (xLengte>mc_kannon._x) {
        kogel._x += speed;
      } else if (xLengte<mc_kannon._x) {
        kogel._x -= speed;
      }
      if (yLengte>mc_kannon._y) {
        kogel._y += speed;
      } else if (yLengte<mc_kannon._y) {
        kogel._y -= speed;
      }
    };
  }
}
mc_crosshair.onRelease = function() {
  shoot();
};
stop();

 


laatst ge-edit op: 05-01-07 om 16:33
Reply
blokje door vinTage op 05-01-07 om 16:43
jamaar ik had toch voorgesteld om de richting etc via de bullit zelf te bepalen etc.
Nu overschrijf je bij elke movement de waardes.
(Daarergens zal de fout zitten imo)

 
Reply
blokje door W0utah op 05-01-07 om 17:02
hoe zou ik dan moeten beginnen met de richting van die bullet te bepalen?

want als er geen bullets is kan je ook geen richting bepalen

 
<< [1] [2] >>
Dit topic is gesloten.