Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 24-01-2008, 09:33   #1 (permalink)
Rock'n'Bass
 
Benutzerbild von <sVkVmVit>
 
Registriert seit: Feb 2006
Ort: Hamburg
Beiträge: 202
Question Lebensbalken verändert sich kontinuierlich.. WIESO??

Hi, ich mal wieder!

Habe in kürzester Zeit ein kleines Fungame zusammengescriptet, in dem man mit einem Gewehr auf Krähen schießt, die einen aus der Luft angreifen, also immer näher auf einen zufliegen.
Jetzt wollte ich einen Lebens-/Energie-Balken hinzufügen, der jedesmal, wenn eine der Krähen den Spieler erreicht hat (also wenn die Krähe eine bestimmte Größe erreicht hat), um 10 Prozent verringert wird. Sobald dies geschehen ist, wird die Krähe wieder kleiner gemacht (und an eine zufällige Stelle gesetzt), um einen neuen Angriff zu starten.

WAS DABEI FUNKTIONIERT:
- Punkt 1:
Die Krähen kommen ordnungsgemäß näher und lassen sich abschießen.
- Punkt 2:
Erreicht eine Krähe ihre maximale Größe (bzw. hat sie den Spieler erreicht), wird sie wieder verkleinert, um einen neuen Angriff zu starten.

WAS NICHT FUNKTIONIERT:
- Wenn Punkt 2 eintritt, sollte der Lebensbalken um 10 ?rozent reduziert werden, aber natürlich nur einmal. Was stattdessen passiert, ist, dass die Balkenlänge schon bei Start des Flashfilms kontinuierlich (!) verringert wird. D.h., startet man den Film, "rast" der Balken quasi sofort weg..

WIESO?? Die Anweisung für den Balken befindet sich doch an genau derselben Stelle im Code wie die Anweisungen, die die Krähe wieder zurücksetzen.. Oo


Hier der relevante Teil AS-Code (liegt auf Bild1 von _root):

Code:
stop();

// ( ... ) 

// Die Krähen werden zu Beginn auf weniger als 50 Prozent ihrer Originalgröße verkleinert! 

// ( ... )

this.onEnterFrame = function(){

for (i=0; i<=3; i++){
         this["kraehe"+i]._xscale *= 1.02;
         this["kraehe"+i]._yscale *= 1.02;
         //trace(this["kraehe"+i]._xscale);
         if (this["kraehe"+i]._xscale >= 100){       // (Liegt hier der Fehler?)
                trace(this["kraehe"+i]._xscale);
                this.interf_leben.lebensbalken._yscale -= 10;       // Diese Zeile wird kontinuierlich ausgeführt von Anfang an! Aber WIESO?? 
                        // Die nächsten vier Zeilen werden ja ordnungsgemäß zum gewollten Zeitpunkt einmal (!) ausgeführt. 
                this["kraehe"+i]._xscale = startgr;
                this["kraehe"+i]._yscale = startgr;
                this["kraehe"+i]._x = Math.random()*200;
                this["kraehe"+i]._y = Math.random()*50;
                }
          }

}

Ich versteh das einfach nicht. Wär cool, wenn ihr den Fehler sehen würdet..
__________________
==>remix.nin.com<==
//
Life Is Too Short For Boring Music!
Fantasie ist die einzige Waffe gegen die Wirklichkeit.

Geändert von <sVkVmVit> (24-01-2008 um 09:38 Uhr)
<sVkVmVit> ist offline   Mit Zitat antworten
Alt 24-01-2008, 10:12   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.138
Da du bei jedem gefeuerten enterFrame Event in x-Richtung mit einem Faktor von 1.02 multiplizierst ist
ActionScript:
  1. if (this["kraehe"+i]._xscale >= 100){
  2.   // irgendwas
  3. }
immer wahr. Darum wird auch immer wieder Math.random ausgeführt.
Omega Psi ist offline   Mit Zitat antworten
Alt 24-01-2008, 10:20   #3 (permalink)
Rock'n'Bass
 
Benutzerbild von <sVkVmVit>
 
Registriert seit: Feb 2006
Ort: Hamburg
Beiträge: 202
Ich weiß, was du damit sagen willst. Nur ist es folgendermaßen:

1. Jede Krähe wird zu Anfang des Films per attachMovie geladen und auf weniger als 50 Prozent ihrer Größe gesetzt. (Das heißt, Flash weiß ja dann, dass jede von ihnen kleiner als 100 prozent ist. )

2. Wie ich im Code kommentiert hab, werden die anderen vier Zeilen innerhalb dieser if-Abfrage so wie gewollt nur einmal ausgeführt. Daher frage ich mich natürlich, wieso das bei der einen Zeile davor nicht der Fall ist (die ja ebenfalls in der if-abfrage liegt).
__________________
==>remix.nin.com<==
//
Life Is Too Short For Boring Music!
Fantasie ist die einzige Waffe gegen die Wirklichkeit.

Geändert von <sVkVmVit> (24-01-2008 um 10:23 Uhr)
<sVkVmVit> ist offline   Mit Zitat antworten
Alt 24-01-2008, 10:39   #4 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.138
Sorry, hatte den ersten Teil des Scripts überlesen.

Lass dir mal die x- undy-Skalierung ausgeben:
ActionScript:
  1. for (i=0; i<=3; i++){
  2.     this["kraehe"+i]._xscale *= 1.02;
  3.     this["kraehe"+i]._yscale *= 1.02;
  4.     trace(i+": " +
  5.             this["kraehe"+i]._xscale + ", " +
  6.             this["kraehe"+i]._yscale);
Omega Psi 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 19:23 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele