Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 24-05-2005, 16:52   #1 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Beiträge: 8
Tastenabfrage und Richtungsberechnung???

Hi,
ich habe gleich zwei Probleme bei einem game das ich am erstellen bin,
ersten:


In folgendem Code soll im MovieClip ein Bild weitergegangen werden, dadurch jedoch das die Taste auf "enterFrame" geprüft wird, also 12 mal in der Sekunde, muss man ziemlich aufpassen das man nicht direkt mehrere Bilder weiter ist. Ich wollte es so das man erst wenn man wieder von der Taste runter geht und dann wieder draufklickt eins weiter kommt, wie kann ich das machen?

onClipEvent(enterFrame)
{
if( Key.isDown(Key.PGUP))
{
...........





Problem 2:

Ich habe in meinem Spiel, das in der Vogelperspektive ist, einen Gegner, denn will ich jetzt ausrechnen lassen welchen Kurs er nehmen muss um meinen Spieler zu treffen. Ich habe also 2 X,Y Positionen und will nun den Kurs von einer Position zur andern, oder kann man das ganz anders lösen?
Blackbird ist offline   Mit Zitat antworten
Alt 24-05-2005, 17:00   #2 (permalink)
The Man Who Wasn't There
 
Benutzerbild von fraggle two
 
Registriert seit: Jul 2003
Ort: BÄRLIN
Beiträge: 1.156
hi,

zum ersten teil:

ActionScript:
  1. _root.first_touch=false;
  2.  
  3.  
  4. onClipEvent(enterFrame)
  5. {
  6. if( Key.isDown(Key.PGUP) && !_root.first_touch)
  7. {
  8. _root.first_touch=true;
  9. ....

dann funzt die abfrage nur 1x

und zu 2.:

zu wenig infos...

vielleicht ein bsp. anfügen...

gruß
mike
__________________
Dot-Realities
Mike Broders
Berlin

ICQ:105925103

Dot-Realities v4.0 under construction!
fraggle two ist offline   Mit Zitat antworten
Alt 24-05-2005, 19:23   #3 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Beiträge: 8
OK, danke aber bei deiner antwort zu eins kann man ja echt nur einmal die Tasten nutzen ich will sie aber immer wieder benutzen nur halt, so das man immer wieder die Taste loslassen muss.

zu 2:

Ich habe eine Spieler den ic haus der Topview bewege per Pfeiltasten, und habe einen Gegner, der steht irgendwo dumm rum und der soll jetzt berechnene welchen weg er einschlagen muss um zum Spieler zu gelangen und sich dann in diese richtung bewegen.
Blackbird ist offline   Mit Zitat antworten
Alt 24-05-2005, 20:50   #4 (permalink)
Freizeitflasher
 
Benutzerbild von Alphanimal
 
Registriert seit: Jun 2004
Ort: Niederösterreich
Beiträge: 615
also zu erstens: dein Tasenproblem

Du kannst entweder einen Key-Listener verwenden (onKeyDown)
oder einfach abfragen ob die Taste schon wieder los gelassen wurde:

PHP-Code:
this.onEnterFrame = function(){
 if(
Key.isDown(Key.SPACE)){
  if(!
keydown){
   
trace("Leertaste gedrückt!");
  }
  
keydown true;
 }else{
  
keydown false;
 }

der Listener wäre aber trotzdem eine schöndere lösung:
die kürzerste Schreibweise:
PHP-Code:
Key.addListener(klist={onKeyDown:function(){
 if(
Key.getCode()==Key.SPACE){
  
trace("Leertaste gedrückt!");
 }
 if(
Key.getCode()==Key.UP){
  
trace("Pfeiltaste Oben gedrückt!")
 }
 
// ...
}}; 
__________________
Some Flash Worx
Alphanimal ist offline   Mit Zitat antworten
Alt 24-05-2005, 20:58   #5 (permalink)
Freizeitflasher
 
Benutzerbild von Alphanimal
 
Registriert seit: Jun 2004
Ort: Niederösterreich
Beiträge: 615
Zu deiner Gegner "KI":

Es gibt tausende möglichkeiten nach der du deinen Gegner bewegen kannst.

Mein Vorschlag: Eine "logische" wäre, dass er mit konstanter Geschwindigkeit imm in deine Richtung geht.

also z.b. immer 2 Pixel pro Frame in richtung Spieler.

dazu musst du den abstand auf 2px normalisieren.

hier mal mein Code:
hab mal als spieler den Mauszeiger angenommen...
PHP-Code:
speed 2//2px pro Frame geschwindigkeit
this.onEnterFrame = function(){
 
spieler_x _xmouse//Positoin des Spielers
 
spieler_y _ymouse;
 
//Abstand Gegner -> Spieler ...
 
dx spieler_x enemy._x// ... in X
 
dy spieler_y enemy._y// ... in Y
 
da Math.sqrt(dx*dx+dy*dy); // ... "Luftlinie"
 //Position normalisieren
 
dx dx/da*speed;
 
dy dy/da*speed;
 
//Gegner bewegen:
 
enemy._x += dx;
 
enemy._y += dy;

mfg!
__________________
Some Flash Worx
Alphanimal ist offline   Mit Zitat antworten
Alt 24-05-2005, 21:29   #6 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Beiträge: 8
Ah, vielen Dank erstmal an Alphanimal und fraggle two, ich werde das alles direkt ausprobieren. Aber wenn ich mir das alles ansehe, sieht das sehr gut aus und das letzt mit der sog. KI, das ist genau die Formel drinne die ich suchte!

Nochmals Danke!

MfG Constantin
Blackbird ist offline   Mit Zitat antworten
Alt 24-05-2005, 21:36   #7 (permalink)
Freizeitflasher
 
Benutzerbild von Alphanimal
 
Registriert seit: Jun 2004
Ort: Niederösterreich
Beiträge: 615
KI soll nur künstliche Inteligenz bedeuten
in Anführungszeichen weil es ja nicht wirklich intelligent ist!
__________________
Some Flash Worx
Alphanimal ist offline   Mit Zitat antworten
Alt 24-05-2005, 22:31   #8 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Beiträge: 8
Schon klar was KI ist!

Also die ""KI"" klappt prima aber das anderen geht nicht wirklich, ich send mal den code mit:

ActionScript:
  1. onClipEvent(load)
  2. {
  3.     keydown=false;
  4. }
  5.  
  6.  
  7. onClipEvent(enterFrame)
  8. {
  9.     if(_root.player.attackPower == 10)
  10.     {
  11.         _root.weapon.gotoAndPlay(1);
  12.        
  13.         if(Key.isDown(Key.PGUP))
  14.         {
  15.           if(!keydown)
  16.             {
  17.                 _root.player.attackPower = 1;
  18.             }
  19.            
  20.             keydown = true;
  21.            
  22.         }else{
  23.            
  24.             keydown = false;
  25.         }
  26.    
  27.  
  28.         if(Key.isDown(Key.PGDN))
  29.         {
  30.           if(!keydown)
  31.             {
  32.                 _root.player.attackPower = 20;
  33.             }
  34.            
  35.             keydown = true;
  36.            
  37.         }else{
  38.            
  39.             keydown = false;
  40.         }
  41.        
  42.     }
  43.    
  44.    
  45.    
  46.    
  47.     else if(_root.player.attackPower == 20)
  48.     {
  49.         _root.weapon.gotoAndPlay(5);
  50.        
  51.         if(Key.isDown(Key.PGUP))
  52.         {
  53.           if(!keydown)
  54.             {
  55.                 _root.player.attackPower = 10;
  56.             }
  57.            
  58.             keydown = true;
  59.            
  60.         }else{
  61.            
  62.             keydown = false;
  63.         }
  64.        
  65.        
  66.         if(Key.isDown(Key.PGDN))
  67.         {
  68.           if(!keydown)
  69.             {
  70.                 _root.player.attackPower = 1;
  71.             }
  72.            
  73.             keydown = true;
  74.            
  75.         }else{
  76.            
  77.             keydown = false;
  78.         }
  79.        
  80.     }
  81.    
  82.    
  83.    
  84.    
  85.     else if(_root.player.attackPower == 1)
  86.     {
  87.         _root.weapon.gotoAndPlay(10);
  88.        
  89.         if(Key.isDown(Key.PGUP))
  90.         {
  91.           if(!keydown)
  92.             {
  93.                 _root.player.attackPower = 20;
  94.             }
  95.            
  96.             keydown = true;
  97.            
  98.         }else{
  99.            
  100.             keydown = false;
  101.         }
  102.        
  103.         if(Key.isDown(Key.PGDN))
  104.         {
  105.           if(!keydown)
  106.             {
  107.                 _root.player.attackPower = 10;
  108.             }
  109.            
  110.             keydown = true;
  111.            
  112.         }else{
  113.            
  114.             keydown = false;
  115.         }
  116.        
  117.     }
  118.    
  119. }
Blackbird ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 09:45 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele