Zurück   Flashforum > Flash > Flash Einsteiger

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 03-01-2012, 16:48   #1 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 21
Movieclips synchronisieren oder mit Transparenzen lösen?

Hallo liebe Flash-Experten,

ich bin Einsteiger in Sachen Flash und plane ein etwas verschachteltes Projekt, bei dem ich im Moment logisch nicht weiterkomme. Ich habe zwar schon einen relativ guten Überblick über das Programm, nur in Sachen Actionscript muss ich mich noch reinbeissen.

Also, ich habe folgendes Vorhaben:

Ich habe ein Movieclip in dem bestimmte Sachen passieren. Klick ich nun auf den MC soll ein etwas anderer Movieclip (mit ähnlichem Inhalt wo nur ein bisschen was anderes passiert) starten und das andere aufhören. Das ist soweit klar und ich krieg das ganz gut mit stop und gotoplay über die Hauptzeitleiste hin.

Nun zu meinem Problem. Der zweite MC soll an genau der stelle weiter laufen (beide MCs sind genau gleich lang) wo der andere aufgehört hat und am besten sollen sie sich ineinanderblenden. Wie könnte ich denn sowas realisieren? Gibt es irgendein if click bei Frame x spring zum gleichen Frame in einem anderen MC oder so ähnlich?

Ich hab auch schon an Grafiken gedacht, da diese ja synchron zur Zeitleiste laufen, nur hier kann man es ja von der Hauptzeitleiste aus nicht steuern, da ja dann alle hintereinander laufen müssten. Auch Actionschript ist ja hier problematisch. Oder müsste man sie alle gleichzeitig starten und dann die Transparenzen je nach Klick auf ein Grafiksymbol ein- und ausschalten?

So nach dem Motto: Wenn ich auf diesen MC klicke, blendet der sich MC 2 ein und MC 1 aus.

Komm hier echt nicht weiter. Wie würdet Ihr das umsetzen?

Wichtig ist nur, dass die unterschiedlichen MCs synchron bleiben, da es sonst nicht aneinander passt.

Danke für eure Hilfe.

Smeitos

Geändert von smeitos (03-01-2012 um 16:49 Uhr)
smeitos ist offline   Mit Zitat antworten
Alt 03-01-2012, 16:56   #2 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.164
AS1/2
ActionScript:
  1. mcA.stop();
  2. mcA._visible = false;
  3.  
  4. mcB.gotoAndPlay(mcA._currentframe);
  5. mcB._visible = true;
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (03-01-2012 um 21:07 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 03-01-2012, 16:59   #3 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 21
Super! Vielen Dank, werd das nachher gleich ausprobieren und Feedback geben.

Danke erstmal :-)
smeitos ist offline   Mit Zitat antworten
Alt 03-01-2012, 21:02   #4 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 21
Hi Martin,

hab mir das jetzt mal angeschaut und hätte nochmal zwei Fragen: Einmal zum Verständnis:

Leg ich jetzt sozusagen alle MCs in ein Schlüsselbild in der Hauptleiste und trag das Actionscript dann in die jeweiligen MCs? Oder muss ich das Actionscript dann irgendwie von der Hauptzeitleiste aus starten? Sorry für die Anfängerfrage.

Und kann ich den Code auch für Actionscript 3 verwenden? Das wäre nämlcih wichtig.

Danke nochmals und viele Grüße

Smeitos
smeitos ist offline   Mit Zitat antworten
Alt 03-01-2012, 21:11   #5 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.164
Zitat:
Zitat von smeitos Beitrag anzeigen
Leg ich jetzt sozusagen alle MCs in ein Schlüsselbild in der Hauptleiste und trag das Actionscript dann in die jeweiligen MCs? Oder muss ich das Actionscript dann irgendwie von der Hauptzeitleiste aus starten? Sorry für die Anfängerfrage.
Letzteres. Das Script gehört auf die Zeitleiste und den Frame in dem die beiden (mit den entsprechenden Instanznamen versehenen) MovieClips liegen.

Zitat:
Zitat von smeitos Beitrag anzeigen
Und kann ich den Code auch für Actionscript 3 verwenden?
Nein. In AS3 sähe das so aus:
ActionScript:
  1. mcA.stop();
  2. mcA.visible = false;
  3.  
  4. mcB.gotoAndPlay(mcA.currentFrame);
  5. mcB.visible = true;
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!
Martin Kraft ist offline   Mit Zitat antworten
Alt 03-01-2012, 21:17   #6 (permalink)
+ Zimt & Zucker
 
Registriert seit: Mar 2006
Ort: hinterm Mond gleich links
Beiträge: 2.042
Zitat:
Zitat von smeitos Beitrag anzeigen
So nach dem Motto: Wenn ich auf diesen MC klicke, blendet der sich MC 2 ein und MC 1 aus.
Zitat:
Zitat von smeitos Beitrag anzeigen
Leg ich jetzt sozusagen alle MCs in ein Schlüsselbild in der Hauptleiste und trag das Actionscript dann in die jeweiligen MCs? Oder muss ich das Actionscript dann irgendwie von der Hauptzeitleiste aus starten?
Martins Code übernimmt den fett gedruckten Teil.

Zitat:
Zitat von smeitos Beitrag anzeigen
Und kann ich den Code auch für Actionscript 3 verwenden? Das wäre nämlich wichtig.
Unterstriche weg und das "f" von currentframe gehört groß.

Edit: *schnarch* 2012 ist voll lahm
__________________
anbei Grüße vom milchreis: Viva la [Silb]

[Von null auf Flash in einem Klick.] <<< klick
milchreis ist offline   Mit Zitat antworten
Alt 03-01-2012, 21:47   #7 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 21
Super, das haut schon mal hin. Nur, jetzt zeigt er mir einfach nur mcB an. Das wäre ja schon mal nicht schlecht, da man am Anfang ja nur eins sehen möchte.

Ich möchte nun aber gerne, wenn ich mal auf mcB klicke, dass dann eben mcA eingeblendet wird. Dann muss ich es doch in ein MouseClick Ereignis legen, oder?

Und wie läuft es, wenn ich nun mehr als A und B habe, sondern noch C, D, E, F, G etc. Es soll immer nur eins eingeblendet sein und wenn ich auf einen MC klicke, soll ein von mir bestimmter eingeblendet werden und alle anderen aus.

Ich hoffe, die Fragen werden jetzt nicht zu anstrengend ;-)
Danke Euch
smeitos ist offline   Mit Zitat antworten
Alt 03-01-2012, 21:59   #8 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 21
Ok, hab noch ei nbisschen rumprobiert und jetzt das hier gemacht:

Code:
rechteckinstanz.addEventListener(MouseEvent.CLICK, fl_ClickToGoToAndStopAtFrame);

function fl_ClickToGoToAndStopAtFrame(event:MouseEvent):void
{
	rechteckinstanz.stop();
    rechteckinstanz.visible = false;
     
   kreisinstanz.gotoAndPlay(rechteckinstanz.currentFrame);
   kreisinstanz.visible = true; 
}
Erst werden beide angezeigt und sobald ich auf das Rechteck klicke, wird das Rechteck ausgeblendet. Soweit richtig?

Dann müsste ich doch jetzt beliebig viele anlegen können. Ist die Funktion denn richtig? Oder muss ich was anderes nehmen?

Danke
smeitos ist offline   Mit Zitat antworten
Alt 03-01-2012, 22:29   #9 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 21
Hier nun mein Code:

Code:
	kreisinstanz.stop();
   kreisinstanz.visible = false;
   rechteckinstanz.visible = true; 
   
/* Klicken, um zum Bild zu gehen und zu stoppen
Durch Klicken auf die angegebene Symbolinstanz wird der Abspielkopf auf das angegebene Bild in der Zeitleiste verschoben und hält den Film an.
Kann in der Hauptzeitleiste oder in Movieclip-Zeitleisten verwendet werden.

Anweisungen:
1. Ersetzen Sie die Nummer 5 im Code unten durch die Nummer des Bildes, zu dem der Abspielkopf verschoben werden soll, wenn auf die Symbolinstanz geklickt wird.
*/

rechteckinstanz.addEventListener(MouseEvent.CLICK, fl_ClickToGoToAndStopAtFrame);

function fl_ClickToGoToAndStopAtFrame(event:MouseEvent):void
{
	rechteckinstanz.stop();
    rechteckinstanz.visible = false;
     
   kreisinstanz.gotoAndPlay(rechteckinstanz.currentFrame);
   kreisinstanz.visible = true; 
}

kreisinstanz.addEventListener(MouseEvent.CLICK, fl_ClickToGoToAndStopAtFrame);

function fl_ClickToGoToAndStopAtFrame_2(event:MouseEvent):void
{
	kreisinstanz.stop();
    kreisinstanz.visible = false;
     
   rechteckinstanz.gotoAndPlay(kreisinstanz.currentFrame);
   rechteckinstanz.visible = true; 
}
Der erste Klick funktioniert. Mit Klick aufs Rechteck blendet sich das Rechteck aus und der Kreis wird eingeblendet. Nur wenn ich nun auf den Kreis klicke, springt der Kreis irgendwie komisch. Eigentlich müsste doch das Rechteck wieder kommen? Hmm, irgendwas hab ich noch nicht kapiert. Wofür ist denn eigentlich das Stop? Es funktioniert so auch ohne....

Danke Euch
smeitos ist offline   Mit Zitat antworten
Alt 03-01-2012, 22:31   #10 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.164
Versuch's mal so (Achtung ungetestet):
ActionScript:
  1. import flash.display.MovieClip;
  2. import flash.events.Event;
  3. import flash.events.MouseEvent;
  4.  
  5. var mcs:Array = [rechteck, kreis, stern, oval, wasDirSonstNochSoEinfaellt];
  6. var currentMc:MovieClip;
  7.  
  8. ////
  9.  
  10. for each (var mc:MovieClip in mcs) {
  11.     mc.addEventListener(MouseEvent.CLICK, showNextMC);
  12.     mc.visible = false;
  13.     mc.stop();
  14. }
  15.  
  16. showNextMC();
  17.  
  18. ////
  19.  
  20. function showNextMc(e:Event = null):void {
  21.     var i:int = mcs.indexOf(e.currentTarget) + 1;
  22.     while (i >= mcs.length) i -= mcs.length;
  23.    
  24.     var nextMc:MovieClip = mcs[ Math.max(0, i) ] as MovieClip;
  25.     if (nextMc === currentMc) return;
  26.    
  27.     if (currentMc) {
  28.         currentMc.visible = false;
  29.         currentMc.stop();
  30.     }
  31.    
  32.     if(nextMc){
  33.         nextMc.gotoAndPlay(currentMc? currentMc.currentFrame : 1);
  34.         nextMc.visible = true;
  35.     }
  36.    
  37.     currentMc = nextMc;
  38. }
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!
Martin Kraft ist offline   Mit Zitat antworten
Alt 03-01-2012, 23:44   #11 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 21
Danke Dir, aber da steig ich nicht mehr durch ;-)

Habs jetzt so gelöst:

Code:
gruenesrechteckinstanz.visible = false;
gruenerkreisinstanz.visible = false;

rechteckinstanz.addEventListener(MouseEvent.CLICK, rechteck);

function rechteck(event:MouseEvent):void
{
    rechteckinstanz.visible = false;
    gruenesrechteckinstanz.gotoAndPlay(rechteckinstanz.currentFrame);
    gruenesrechteckinstanz.visible = true; 
}

gruenesrechteckinstanz.addEventListener(MouseEvent.CLICK, gruenesrechteck);

function gruenesrechteck(event:MouseEvent):void
{
	gruenesrechteckinstanz.visible = false;
    rechteckinstanz.gotoAndPlay(gruenesrechteckinstanz.currentFrame);
    rechteckinstanz.visible = true; 
}

kreisinstanz.addEventListener(MouseEvent.CLICK, kreis);

function kreis(event:MouseEvent):void
{
    kreisinstanz.visible = false;
    gruenerkreisinstanz.gotoAndPlay(kreisinstanz.currentFrame);
    gruenerkreisinstanz.visible = true; 
}

gruenerkreisinstanz.addEventListener(MouseEvent.CLICK, gruenerkreis);

function gruenerkreis(event:MouseEvent):void
{
	gruenerkreisinstanz.visible = false;
    kreisinstanz.gotoAndPlay(gruenerkreisinstanz.currentFrame);
    kreisinstanz.visible = true; 
}
Das funktioniert soweit ich es bis jetzt einschätzen kann super. Kannst Du da einen Fehler erkennen?

Danke und viele Grüße
smeitos ist offline   Mit Zitat antworten
Alt 05-01-2012, 11:00   #12 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 21
Hi, ich nochmal,

weiß jemand wie ich den Sound der jeweiligen MCs ebenfalls ein- und ausblenden kann?

Mit setVolume haut es irgendwie nicht hin, da sagt flash immer:

setVolume is not a function

Danke Euch und viele Grüße
smeitos ist offline   Mit Zitat antworten
Alt 05-01-2012, 12:21   #13 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.164
Zitat:
Zitat von smeitos Beitrag anzeigen
Mit setVolume haut es irgendwie nicht hin, da sagt flash immer:

setVolume is not a function
Das könnte daran liege, dass setVolume ...
  1. ... eine AS2 Methode ist, die es in AS3 so nicht mehr gibt ...
  2. ... und diese Methode zudem auch in AS2 zur Klasse Sound und nicht zu MovieClip gehört.
Man muss übrigens nicht erraten, welche Methoden und Eigenschaften es wo gibt. Die stehen alle in der AS3-Referenz. Und vernünftige Entwicklungsumgebungen (also sowas wie FlashDevelop, FDT oder ItelliJ und die neusten Versionen von Flash Pro) bieten sie auch in über die AutoVervollständigung an.
Zitat:
Zitat von smeitos Beitrag anzeigen
weiß jemand wie ich den Sound der jeweiligen MCs ebenfalls ein- und ausblenden kann?
In AS3 kann man die Sounds in MovieClips und Sprites über die Eigenschaft soundTransform und die zugehörige Klasse SoundTransform steuern:
ActionScript:
  1. import flash.media.SoundTransform;
  2. mc.soundTransform = new SoundTransform(0, 0);
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (05-01-2012 um 12:24 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 05-01-2012, 15:10   #14 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 21
Hi Martin,

nett, dass Du mir immer wieder hilfst.

Danke auch für die Links. Aber ich finde das für EInsteiger echt schwer zu verstehen, da immer sehr komplexe Beispiele genannt werden.

Ich habe hier sogar ein AS3 Videotutorial und zig Seiten gecheckt, doch das ist so viel Code, dass man als Einsteiger nicht durchsteigt.

Ich habe das ausprobiert was DU geschrieben hast und es klappt auch. Zumindest für die erste Ansicht. Wenn ich nun auf das Rechteck oder den Kreis klicke, soll der SOund ja dann aufhören und der andere beginnen. Wie kann ich das anstellen? Wenn ich das in die Mouse-Over-Funktion setze, spielt er am Ende den gleichen SOund zweimal ab.

Ich möchte doch nur an- und ausstellen ;-) ALso ich hab ihn ja dann im Grunde einmal mit NEW gesetzt und dann muss ich nru noch an- oder ausschalten (also laut und leise, der Sound soll ja weiterspielen und synchron bleiben). Sorry, aber vielleicht hast DU noch einen Tipp...

VG

Geändert von smeitos (05-01-2012 um 15:18 Uhr)
smeitos ist offline   Mit Zitat antworten
Alt 05-01-2012, 15:27   #15 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.164
Ich hab's Dir hier mal in meinen Code von oben eingefügt:
ActionScript:
  1. import flash.display.MovieClip;
  2. import flash.events.Event;
  3. import flash.events.MouseEvent;
  4. import flash.media.SoundTransform;
  5.  
  6. // Die MovieCLips die bei Click durcheinander ausgetausch werden sollen
  7. var mcs:Array = [rechteck, kreis, stern, oval, wasDirSonstNochSoEinfaellt];
  8. var currentMc:MovieClip;
  9.  
  10. ////
  11.  
  12. for each (var mc:MovieClip in mcs) {
  13.     mc.addEventListener(MouseEvent.CLICK, showNextMC);
  14.     mc.visible = false;
  15.     mc.stop();
  16. }
  17.  
  18. showNextMC();
  19.  
  20. ////
  21.  
  22. function showNextMc(e:Event = null):void {
  23.     var i:int = mcs.indexOf(e.currentTarget) + 1;
  24.     while (i >= mcs.length) i -= mcs.length;
  25.    
  26.     var nextMc:MovieClip = mcs[ Math.max(0, i) ] as MovieClip;
  27.     if (nextMc === currentMc) return;
  28.    
  29.     if (currentMc) {
  30.         currentMc.visible = false;
  31.         currentMc.stop();
  32.         currentMc.soundTransform = new SoundTransform(0, 0);
  33.     }
  34.    
  35.     if(nextMc){
  36.         nextMc.gotoAndPlay(currentMc? currentMc.currentFrame : 1);
  37.         nextMc.visible = true;
  38.         currentMc.soundTransform = new SoundTransform(1, 0);
  39.     }
  40.    
  41.     currentMc = nextMc;
  42. }
Und ich würde Dir auch empfehlen mit diesem Code zu arbeiten (lies ihn Dir einfach mal in Ruhe durch - der ist gar nicht so kompliziert). Mit dem Code aus Deinem letzten Post wirst Du früher oder später verzweifeln, weil er mit jedem Weieren MC länger wird und Du bei jeder Änderung in der Abfolge oder im Wechsel zigfach geändert werden muss.

Außerdem hast Du dort vergessen, den alten MC zu stoppen (womit sich wahrscheinlich auch das Soundproblem erledigt hätte).

Zitat:
Zitat von smeitos Beitrag anzeigen
Danke auch für die Links. Aber ich finde das für EInsteiger echt schwer zu verstehen, da immer sehr komplexe Beispiele genannt werden.
Ja, stimmt. Die Beispiele in der Referenz sind manchmal so ausführlich, dass das eigentliche fast untergeht. Trotzdem ist die Referenz essentiell. Sie ist das Nachschlagewerk für alle Klassen, Methoden und Eigenschaften der FlashPlayer-API!

Weitere Hilfe findest Du über die Links in meiner Signatur!
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (05-01-2012 um 15:31 Uhr)
Martin Kraft 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
setIntervall und onPress oder anderst lösen? DerRobert ActionScript 2 2 16-01-2008 06:34
Schaltflächen oder MovieClips als Buttons? utman6 Flash MX 10 25-11-2005 07:04
Klassen oder MovieClips?? vodka Softwarearchitektur und Entwurfsmuster 16 13-11-2005 16:53
Movieclips oder swf? dotvo007 Flash MX 1 04-02-2005 09:33
Vor- und Nachteile von _level oder Movieclips albi Flash 4 und Flash 5 1 24-11-2002 12:41


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:59 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele