Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22-09-2003, 14:22   #1 (permalink)
That's bat country!
 
Benutzerbild von Kind
 
Registriert seit: May 2003
Ort: Berlin
Beiträge: 198
dynamisch vergebener Funktionsaufruf

Hallo,
ich habe ein Flash Film mit sehr vielen MC, ca. 400. Es handelt sich dabei um Grafschaften, die auf einer Karte angeordnet sind. Fährt man nun mit der Maus über eine Grafschaft, so wird aus einer XML Datei ein erläuternder Text geladen. In der XML Datei ist als ID der gleiche Name vergeben wie für den MC. Um den Aufruf nicht 100 mal neu zu schreiben habe ich das ganz einfach über eie For-Schleife gelöst:
ActionScript:
  1. function zaehleGraf(grafjahr) {
  2.     for (var j = 1; j<100; j++) {
  3.         grafs = ["j1"+grafjahr+"jd"+j+"_mc"];
  4.         putGrafschaft(grafs);
  5.     }

Das ganze wird dann an eine Funktion übergeben, die die Zuordnung übernimmt:
ActionScript:
  1. function putGrafschaft(grafs) {
  2.     _root.kartenani.mitteld[_root.grafs].onRelease = function() {
  3.         var myText = grafXML[this._name].childNodes[0].childNodes;
  4.         //Aufruf der Funktion "Text erstellen" und übergeben der Parameter
  5.         createText("ueberk_txt", 1, 550, 100, 210, 20, myText);
  6.         var myText = grafXML[this._name].childNodes[1].childNodes;
  7.         //Aufruf der Funktion "Text erstellen" und übergeben der Parameter
  8.         createText("kurz_txt", 2, 550, 140, 210, 365, myText);
  9.     };
  10.     _root.kartenani.mitteld[_root.grafs].onRollOver = function() {
  11.         this.swapDepths(1048575);
  12.         this._width = this._width*1.4;
  13.         this._height = this._height*1.4;
  14.         this._alpha = 100;
  15.     };
  16.     _root.kartenani.mitteld[_root.grafs].onRollOut = function() {
  17.         this._width = this._width/1.4;
  18.         this._height = this._height/1.4;
  19.         this._alpha = 70;
  20.     };
  21. }

Ist mit sicherheit nicht der optimale Weg, funktioniert aber, wenn es sich um ein am Anfang geladenes File handelt. Allerdings soll das ganze für verschiedene Jahre funktionieren. Da heißt, das immer wieder andere Grafschaften MC geladen werden sollen. Beim Wechsel der Zeitebene ändert sich daher "grafjahr".
Diese Abfrage übernimmt eine Switch Anweisung:
ActionScript:
  1. switch (signal) {
  2.         case "ZeitButton0" :
  3.             zielframegra = 1;
  4.             zaehleGraf(0);
  5.             break;
  6.         case "ZeitButton1" :
  7.             zielframegra = 2;
  8.             zaehleGraf(1);
  9.             break;
  10.         case "ZeitButton2" :
  11.             zielframegra = 3;
  12.             zaehleGraf(2);
  13.             break;
  14. ...

Komischerweise geht es dann nicht mehr, wenn ich einen der Zeit-Button allerdings 2 oder mehrmal drücke funktioniert es. Kann mir eventuell einer sagen woran das liegt? Ich weiß, ist ziemlich lang und verworren, wäre aber super, wenn sich das dennoch einer ansehen könnte.

Vielen Dank
Jan
__________________
"""""""""""""""""""""""""""""""""""""""
Hier können wir nicht halten, dass ist Fledermausland!
Kind ist offline   Mit Zitat antworten
Alt 23-09-2003, 10:32   #2 (permalink)
That's bat country!
 
Benutzerbild von Kind
 
Registriert seit: May 2003
Ort: Berlin
Beiträge: 198
Hi,
wie es aussieht, scheint meinen Quelltext ja keiner Verstanden zu haben Aber ich hab auch schon einen Workaround gefunden.
Allerdings kämpfe ich jetzt mit einem anderen Problem der im gleichen Zusammenhang steht.
Wechsel ich wie oben beschrieben ein Jahrhundert, so bleibt der letzte aktive MC einfach auf der Stage liegen, ohne, dass er in der Ebene eigentlich exitiert. Gibt es eine Möglichkeit ihm zu sagen:
Letzter aktiver MC, delete, oder so?

Bin für jeden Tip dankbar, da ich hier einfach nicht weiterkomme.


Vielen Dank
Jan
__________________
"""""""""""""""""""""""""""""""""""""""
Hier können wir nicht halten, dass ist Fledermausland!
Kind ist offline   Mit Zitat antworten
Alt 23-09-2003, 12:36   #3 (permalink)
Revived @ Sunday
 
Benutzerbild von MacEvil
 
Registriert seit: Apr 2003
Ort: Nowhereland
Beiträge: 3.244
Hi,
den aktuellen mc in nem array speichern :
ActionScript:
  1. mc.onRelease = function () {
  2. _root.array[0] = (this._name);
  3. }
  4. if (jahrhundertwechsel == true) {
  5. removeMovieClip(_root.array[0]);
  6. }
MacEvil ist offline   Mit Zitat antworten
Alt 23-09-2003, 12:43   #4 (permalink)
That's bat country!
 
Benutzerbild von Kind
 
Registriert seit: May 2003
Ort: Berlin
Beiträge: 198
Hi,
ich hab noch nie mit Arrays gearbeitet, bist Du sicher, dass der das so ins Array schreibt?
Wenn ich trace (_root.array[0]);
mache sagt er undifined.


Danke Jan
__________________
"""""""""""""""""""""""""""""""""""""""
Hier können wir nicht halten, dass ist Fledermausland!
Kind ist offline   Mit Zitat antworten
Alt 23-09-2003, 12:46   #5 (permalink)
Revived @ Sunday
 
Benutzerbild von MacEvil
 
Registriert seit: Apr 2003
Ort: Nowhereland
Beiträge: 3.244
ActionScript:
  1. _root.mc.onRelease = function () {
  2. _root.array.push(this._name);
  3. _root.i++;
  4. }
  5. trace(_root.array[_root.i]);
MacEvil ist offline   Mit Zitat antworten
Alt 23-09-2003, 13:55   #6 (permalink)
That's bat country!
 
Benutzerbild von Kind
 
Registriert seit: May 2003
Ort: Berlin
Beiträge: 198
Danke, ich hatte es jetzt schon mit dem speichern in einer Variable geschafft, oder bringt ein Array hier irgendwelche Vorteile?

Auf jeden Fall super Denkanstoß, machmal sitzt man davor und kommt einfach nicht drauf.


fettes Merci
__________________
"""""""""""""""""""""""""""""""""""""""
Hier können wir nicht halten, dass ist Fledermausland!
Kind ist offline   Mit Zitat antworten
Alt 23-09-2003, 15:33   #7 (permalink)
Revived @ Sunday
 
Benutzerbild von MacEvil
 
Registriert seit: Apr 2003
Ort: Nowhereland
Beiträge: 3.244
Hi
Ich finde Array cooler, weil man mehr als einen Wert speichern kann.
D.h. du könntest auch noch der vorletzt geklickte mc abfragen :
ActionScript:
  1. trace(_root.array[_root.i-1]);
MacEvil 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 08:15 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele