Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 05-01-2005, 12:46   #1 (permalink)
bim
 
Benutzerbild von at21125
 
Registriert seit: Sep 2004
Ort: Wien
Beiträge: 21
Unhappy totale Verzweiflung - alle mcs stoppen und starten

Ich programmiere jetzt seit Tagen an folgendem Problem.

Es gibt einen Hauptfilm, der die Steuerung übernimmt mit einem Start/Stop Button und einer Fortschrittsanzeige.

In diesen Hauptfilm lade ich eine beliebige swf-Datei, die x mcs haben kann in x Verschachtelungsebenen.

Wenn ich im Hauptfilm auf Start klicke, läuft die swf Datei los. Bei Stop bleibt sie stehen und beim nächsten Start gehts an Ort und Stelle weiter.

Mein Script durchläuft alle Ebenen von mcs, stopt sie und schreibt dabei in ein Array den Namen des jeweiligen mcs und in ein zweites die aktuelle framenr weg.

Beim Starten wird dieses Array ausgelesen und die mcs sollteneben genau dort weiterlaufen. (Haut auch noch nicht ganz hin, aber fast)

Das Problem:
Einige der MCs stehen zum Zeitpunkt des Klicks auf Stop auf einem Frame, der ein stop(); im script hat. Die sollen erst dann weiterlaufen, wenn in diesem frame plazierte mc abgelaufen ist (der hat dann jeweils ein_parent.nextFrame(); im letzten Frame).
Wenn ich nun die gestoppten mcs aus dem Array auslese und mit gotoAndPlay(framenummer); starte, dann wird das stop(); in diesem Frame ignoriert.
Das bringt den Ablauf komplett durcheinander!

Ich hab null idee, wie ich das abfangen kann, bzw. wie ich feststelle, welche die "untersten" mcs sind, um nur die zu starten.

Irgendwie kommt mir die Lösung unheimlich kompliziert vor-geht das nicht einfacher? Gibt's nicht sowas wie ein mc._pause?



Birgit
Angehängte Dateien
Dateityp: zip swf laden.zip (12,8 KB, 4x aufgerufen)
at21125 ist offline   Mit Zitat antworten
Alt 05-01-2005, 12:50   #2 (permalink)
Steffen G.
 
Benutzerbild von Tschdaeff
 
Registriert seit: Aug 2001
Ort: Ba-Wü
Beiträge: 4.123
hmm ich bin nicht so der crack aber du könntest ja nen prototype schreiben der pause heißt und jedem mc den du erstellst diese methode dann erben


dann kannst du per klick ne globale variable setzen auf die die pause methode von jedem mc angesprochen wird und dann sollte es gehen...

ich weiß nicht ob die erklärung irgendwas bringt oder ob sie denn korrekt ist aber ich würde es so versuchen


cu mfg
Tschdaeff
__________________
mod@
www.flashbattle.de
www.steffen-guse.de
------------------------------------

Tschdaeff ist offline   Mit Zitat antworten
Alt 05-01-2005, 13:19   #3 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
ActionScript:
  1. remPos = [];
  2.  
  3. function stopAll(mc){
  4.            if(mc == _root) {mc.stop(); remPos.push([_root, _root._currentframe]);
  5.             for(var i in mc){
  6.                  if(typeof(mc[i]) == 'movieclip){
  7.                     mc[i].stop();
  8.                     remPos.push([mc[i], mc[i]._currentframe]);
  9.                     stopAll(mc[i]);
  10.                  }
  11.              }
  12. }
  13. function startAll(){
  14.             for(var i=0; i< remPos.length; i++){
  15.                  var mc = remPos[i][0];
  16.                  var fr = remPos[i][1];
  17.                  mc.gotoAndPlay(fr+1);
  18.             }
  19.              return remPos = [];
  20. }
  21. stopAll(this);


stopt und startet alle mc´s in einem film - und zwar an der stelle, woe sie angehalten wurden.
(mal so aus m holen bauch raus...)


greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 07-01-2005, 13:52   #4 (permalink)
bim
 
Benutzerbild von at21125
 
Registriert seit: Sep 2004
Ort: Wien
Beiträge: 21
also über prototypen hab ich mich mal schlau gemacht, waren mir bis jetzt noch nicht bekannt. So wie ich das verstanden hab, müsste ich den prototyp dann jeweils in jedem mc anlegen, den ich später in den hauptfilm lade.
Ich möchte aber gerne jeden beliebigen film in den hauptfilm laden können und die steuerung sollte trotzdem funktionieren.

Danke, kelor, für das script. Sowas ähnliches hast du auch schon im August 2004 hier gepostet. das hab ich mir auch als vorbild genommen. ich bin nur auf das selbe problem wie damals seblll gestossen.

wenn nämlich der mc beim anhalten am currentframe ein stop(); hat, weil dort ein untergeordneter mc zuerst fertig laufen soll, dann wird mit deinem script beim starten das stop ignoriert, der mc läuft weiter und der untergeordnete mc wird übersprungen. auch wenn ich im currentframe starte und nicht erst im nächsten.

du hast damals als letzten hinweis gemeint, man müsste jeden mc schon beim starten in ein array pushen und nicht erst beim stoppen. da hab ich drüber nachgedacht, kann aber keinen unterschied finden.

kann ich irgendwie feststellen, ob ein mc im aktuelle frame mit stop angehalten wurde (ohne das separat in eine variable/array zu schreiben)? dann könnte ich nur die beim stoppen mitschreiben, die wirklich laufen?

lg
Birgit
at21125 ist offline   Mit Zitat antworten
Alt 07-01-2005, 17:33   #5 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
hmmm..lass mal überlegen...
du könntest bei allen mc´s bei einem bild, dass einen stop hat noch ne var auf tue setzen.

also mc1 läuft bis bild 15...dort ist ein stop();, dann:
ActionScript:
  1. this.isStopped=true;

und in bild 16, wo kein stop mehr ist, dann:
ActionScript:
  1. this.isStopped = false;


nun könntest du bei allen mc´s in der schleife immer erst abfragen, ob mc[i].isStopped == false´; ist, wenn ja, soll er stoppen und ins array pushen...
wenn nein, dann nicht...


greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 10-01-2005, 11:09   #6 (permalink)
bim
 
Benutzerbild von at21125
 
Registriert seit: Sep 2004
Ort: Wien
Beiträge: 21
Danke

Ist zwar nicht ganz das was ich wollte, aber iIch denke so kann ich das Problem umschiffen. Danke für die Hilfe!
at21125 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 07:25 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele