Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 28-07-2004, 22:20   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2004
Beiträge: 92
Problem: Instanz Variabel hochrechnen von einer anderen Instanz aus...

Also mein Problem:
Ich mach gerade ein kleines Weltraumshottergame in Flash und die Schüsse die abgefeuert werden sollen bei Kollision mit einem Raumschiff dessen Variabel um 50 erhöhen. Es werden automatisch neue Schiffe erzeugt, die jedesmal "Enemy1"+zahl (zahl wird jedesmal um 1 erhöht, also die Anzahl der bereits erstellten Schiffe) heißen, nun hier mein Script im Schuss:

_root.Enemy1Zahl = Gesamtanzahl der Schiffe
_root.Enemy1 = 1. Instanz der Gegnerschiffe (die, die immer kopiert wird)
ShipDamage = spezieller Schiffsschaden (bei jedem Schiff einzeln)

for (var i=0; i<=_root.Enemy1Zahl; ++i) {
var SchiffHit=0;
SchiffHit = String(_root.Enemy1) + String(i);
if (this.hitTest(SchiffHit)) {
SchiffHit.ShipDamage += 50;
this.removeMovieClip();
}
}


Der Script tut soweit, nur das SchiffHit.ShipDamage += 50 nicht passiert... heißt das Schiff, mit dem Kollidiert wird bekommt keinen Schaden... kann mir wer helfen?
Rouby ist offline   Mit Zitat antworten
Alt 28-07-2004, 23:15   #2 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Also die for-i Schleife läuft einmal
durch und das wird hitTest() nie
mehr abgefragt.
Das müsste in einer Schleife abgefragt werden.
entweder onEnterFrame oder setInterval.
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 29-07-2004, 14:21   #3 (permalink)
Neuer User
 
Registriert seit: Jul 2004
Beiträge: 92
mh? soweit ich weiß wird eine for schleife solange ausgeführt bis (hier in meinem fall) "i" größer als "_root.Enemy1Zahl" ist...
btw. da liegt das Problem ja garnicht... die Instanz, die diesen Script aufruft, wird ja auch gelöscht wie es dort steht wenn sie Kollidiert... nur es wird halt nicht die Variabel in der Instanz mit der Kollidiert wird hochgerechnet
Rouby ist offline   Mit Zitat antworten
Alt 29-07-2004, 14:52   #4 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Ja aber wenn Du das Schiff löschst, dann löschst
Du die Variable gleich mit. Die existiert doch nur
auf der Zeitleiste der Instanz.
Du müsstest eine _globale Variable hochrechnen,
damit der Wert erhalten bleibt.
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 29-07-2004, 20:53   #5 (permalink)
Neuer User
 
Registriert seit: Jul 2004
Beiträge: 92
oh vllt habsch mich nich klar genug ausgedrückt... sorry mein fehler...
also die Schuss-Instanz führt die for schleife aus und "SchiffHit = String(_root.Enemy1) + String(i);" ist halt das gegnerschiff... das wird ja garnicht gelöscht sondern die Schuss-Instanz
Rouby ist offline   Mit Zitat antworten
Alt 29-07-2004, 21:24   #6 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Ich würde sagen dein Skript ist ein völliges Gewurschtel

PHP-Code:
 for (var i=0i<=_root.Enemy1Zahl; ++i) { 
var 
SchiffHit=0// die Variable wird ständig auf 0 gesetzt mit jedem for-i
SchiffHit String(_root.Enemy1) + String(i);
if (
this.hitTest(SchiffHit)) { 
SchiffHit.ShipDamage += 50;
this.removeMovieClip(); // this bezieht sich auf den Schuss der dann weg ist


__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 29-07-2004, 21:56   #7 (permalink)
Neuer User
 
Registriert seit: Jul 2004
Beiträge: 92
ich mach eigentlich nie Kommentare in meine Scripte... da das bei Flash irgendwie kompliziert ist ;-) und zu lange dauert, da mann jede funktion ja entweder komplet selber reichschreiben muss oder suchen muss in der liste... und da ich bei C sonst immer alles selber schreib (und da auch Kommentare rein schreib) geht das bei flash nich so schnell wegen dem ständigen Evaluate einfügen aus der liste und nicht einfach Enter drücken für zeilenumbruch oder so...
@unübersichtlich: Deine Kommentare sind meiner meinung aber irgndwie nicht sehr sinnvoll... nur halt für leute die nichts davon verstehen... aaber die wollen bzw. bekommen den script eh nie zugesicht (meiner meinung nach)
das this sich auf den aufrufer des scripts bezeiht sollte klar sein wenn man sich etwas mit actionscript auskennt... und das "= 0" bedeutet das etwas auf 0 gesetzt wird auch...
Rouby ist offline   Mit Zitat antworten
Alt 29-07-2004, 22:26   #8 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Sorry, wenn meine Kommentare schlecht waren.
Versuche mal mit trace() herauszufinden, wo was funktioniert
und welcher Werte entstehen.
Wenn Du das ganze Ding hochladen könntest, dann wäre der Fehler
sicherlich einfacher zu finden.
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz 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 04:56 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele