Flash-Werbemittel

MorphexX85

Grünschnabel
Guten Tag zusammen. aktuell habe ich ein kleines Problem, denn ich soll eine Art Beispiel-Werbemittel entwickeln.

Es ist nur leider so, dass ich in Sachen Flash gerade einsteige und ich dieses Zeitleisten-Prinzip noch nicht wirklich verstehe.
Es sind da so einzelne Sachen, die mir keinen Sinn ergeben, aber ich weiß bei manchen Fragen einfach nicht, wie ich sie formulieren und so gezielt im Web suchen soll.

ICh hoffe, dass vllt von euch jemand Zeit und Know-How hat um mir einige Kleinigkeiten zu erklären.

Anbei habe ich mal mein aktuelles Werk geuploaded: http://uploaded.to/?id=c1id7c

Es ist nun so, dass ich mir zum Ziel gesetzt habe, dass eine Landschaft einblendet mit einem Schneemann. Ob ich den Schneemann da wirklich haben mag, dass möchte mir gerne offen halten, daher ist der ein einzelnes Bild.

Wichtig war mir jedenfalls der Schneefall, welchen ich mir in Form eines Tutorials einigermaßen verinnerlichen und umsetzen konnte.

Ich verstehe aber nicht, warum die Funktion für die Landschaft und dem Schneemann durch ein onEnterFrame eingeleitet werden (Fand ich ebenfalls im Tut) und warum die Schneeflogen einfach so fallen.

Viel wichtiger aber noch dir Frage: Wenn ich nun in der Zeitleiste ein drittes Bild anlege, in welchem ich Schrift einblenden lasse, läuft dann der Schnee weiter?
Kann ich den Schneefall auch wieder stoppen? Ich kenne das eigentlich von PHP so, dass ich da erstmal eine Klasse oder eine Funktion schreibe, die dann bei belieben aufgeruft wird. Da ich mich aber mit ActionScript nicht auskenne, verwirrt mich das alles ungemein.

Ich hätte es gerne so, dass der Schnee ununterbrochen immer fällt, es sei denn, ich unterbreche ihn von Hand. Theoretisch stelle ich mir das so vor:

Ich habe die Funktion play(), welche den Schneefall verursacht und eine Funktion stop() womit ich alles wieder stoppe. Also zum Beispiel onEnterFrame = mc_Schneefall.play();

Ich weiß, dass ich da echt unerfahren und blöd rüberkomme, aber es bedeutet mir sehr viel, dass ich den Job bekomme und ich wälze hier schon ein Buch von 'Franzis Professional Series' namens 'Flash 8', aber das ist irgendwie eher für Fortgeschrittene... :(

Ich wäre echt dankbar für Hilfe, denn ich muss diese Art Einstellungsarbeit am kommenden Montag abgeben und bin Dankbar für alle Hilfe an Erklärung, Anstuppser oder anderweitige Hilfe.
Ich möchte aber keinesfalls die Arbeit abgenommen bekommen. Ich erhoffe mir hier nur etwas Hilfe, wie eine Art Crash-Kurs. Nebenbei lese ich noch 'Flash in 21 Tagen' - Aber immer wenn ich etwas überspringe, habe ich das Gefühl, dass mir bei der nächsten Aufgabe wieder etwas wichtiges an Wissen fehlt...

Vielen Dank schonmal für Mühe und Zeit und Liebe Grüße...
 
Hey,
willkommen im Forum. Direkt sei dir versichert, dass wir hier gerne helfen und deine Einstellung zu diesem Forum ist die am liebsten gesehene :)

Zur Zeitleiste kann ich dir mein Tutorial zum Tweening nahe legen, da wird die eigentlcih recht gut erklärt. Zum Grundlagen-Lernen sei auch das Tutorial für das Weltraum-Spiel gut geeignet, welches in der Flashpaper-Tutorials Abteilung liegt.

onEnterFrame wird bei jedem Frame ausgelöst. Von C++ magst du das als "Hauptschleife" kennen (vor allem bei der Spieleprogrammierung), von PHP glaub ich garnicht. Bin da aber nicht so bewandert. Die Funktion wird also 24 Mal pro Sekunde ausgelöst, oder halt so oft wie die Framerate es zulässt. So kann man alles Mögliche ganz einfach realisieren... einfache Bewegungen, Ausfaden, usw.

Das mit dem neuen Bild: eigentlich schon. Du musst nur sehen, dass das Schlüsselbild, in dem der Schnee erzeugt wird usw. nicht durch ein neues überschrieben wird - in dieser zeitleistenebene also auf das Schnee-Schlüsselbild ein normales Bild folgt, oder wenn du ein neues Schlüsselbild einfügst, dass in diesem der Schnee auch wieder drin ist.

Klingt kompliziert und ist wahrscheinlich auch so geschrieben, aber eigentlich ganz einfach. Den Schneefall stoppen kannst du, indem du in der onEnterFrame, wo der Schnee bewegt wird, eine Bedingungsvariable einfügst. Wenn du diese z.B. auf false setzt, wird der Schneefall angehalten. Alternativ kannst du den Schnee einfach per meinSchnee._visible = false/true; einfach ein- und ausblenden.

/edit: Oh sorry. Der Schnee wird nicht durch die onEnterFrame bewegt, sondern durch die Funktion go() erzeugt und dann per Tween animiert. Dann wirst du wohl alle erzeugten Schneeflocken-MCs per meinMC.stop() stoppen müssen. Eleganter wäre aber vielleicht, der Funktion go() eine Bedinungsvariable zu geben - dann müsste der vorhandene Schnee fallen aber kein neuer nachkommen.


Gruß
jens
 
Zuletzt bearbeitet:
Danke schön :) Das ist doch mal eine megaschnelle Antwort :)

Also, ich lese mir dann mal '[Anfänger] Tweening' durch und schaue was ich da so finde :)
Könntest du mir auch bitte einen Link zu dem Weltraum-Spiel schreiben? Ich kann das Tut leider nicht finden :(
Ich danke dir schon jetzt vielmals.

Wie wäre denn die Idee, dass ich eine Variable deklariere names 'schneefall'. Diese wird dann einmalig auf true gesetzt und dann später auf false.

Dazu dann noch diese Abfrage:

// ANSTELLE VON
inter=setInterval(go,100);
// KOMMT DANN
if (schneefall == true) {
inter=setInterval(go,100);
}

Die Frage ist nur: Wo stelle ich die Variable einmalig auf true? Wenn ich sie unter
var anzahlflocken = 200;
var flockengleich = 10;
schreibe, wird sie ja jedes Mal durchlaufen... oder?
 
Doch, dort kannst du die Variable zu schreiben - dieser Code wird nur dann noch einmal ausgelöst, wenn du von der Zeitleiste aus gesehen auf dieses Schlüsselbild kommst, nicht wenn ein Frame (also die von den fps) kommt. Es ist schwer das zu Erklären weils beides ziemlich gleich heißt :)

setInterval() startet einen unabhängigen onEnterFrame wenn man so will. Dieser wird nur einmal gestartet und deswegen wäre die Bedinung dort sinnlos. Besser wäre es in der go()-Funktion.

Somit unterbindest du dann, dass die Schneeflockentweens neu gestartet werden. Ist ein Intervall einmal gestartet, kann man ihn nurnoch durch clearInterval() wieder stoppen. Dies wäre also ein zweiter Ansatz - statt der Bedingungsvariable löschst du den Intervall bzw. erstellst ihn neu:

Code:
meinAnButton.onRelease = function() {
_root.jens = setInterval(go,100);
}
meinAusButton.onRelease = function() {
clearInterval(_root.jens);
}

Den Tutorial findest du unter http://www.tutorials.de/forum/flash...-spieles-sieger-tutorials-contest-2004-a.html

Gruß
jens
 
>Geil ! Dankeschön :) Jetzt hab ich es verstanden :) So langsam kapier ich des Flash-Zeugs ^^

Dann lese ich mich mal durch die beiden Tuts und wünsche schonmal einen schönen Abend und melde mich bei Problemen nochmal am Sonntag :)
Sollte es keine Probleme mehr geben, schreibe ich das Ergebnis meines Einstellungstests und ob sie mich nehmen ;)

Schönene Abend und bis bald
 
Wenn das für den Einstellungstest ist, solltest du bei der Lektüre der Tutorials (vor allem beim Weltraumspiel) immer daran denken, dass die etwas älter sind und man somit so manchen Code nicht mehr in seine *.flas schreiben will.

Funktionieren tut es sicherlich noch, aber manche Formulierungen wurden durch neue, bessere einfach ersetzt.
 
Zurück