Übergeben einer Variablen zwischen frames mit actionscript 3
Ich bin neu in actionscript 3.0 und ich bin Schwierigkeiten versucht, übergeben Sie eine variable, die erstellt wird, und setzen Sie in frame 1 auf ein dynamisches Textfeld, das Hinzugefügt wird, auf die Bühne in Bild 4.
auf Bild 1 die variable ist gesetzt, von Informationen durch den Benutzer eingegeben werden:
var input_dia = "";
input_dia = pdia_input.text;
und angezeigt werden soll, in ein dynamisches Textfeld in frame 4:
dia_alert.text=input_dia;
Ich erhalte die folgende Fehlermeldung:
1120: Access of undefined property input_dia.
- Ich weiß, meine Antwort scheint beängstigend, aber einfach Fragen und ich werde sagen, mehr...
- Ich bin froh, dass es geholfen hat =D
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie sich vorstellen - die verschiedenen Szenen sind viel wie einzelne Filme und flash hat Probleme beim Austausch zwischen Ihnen.
Den richtigen Weg, es zu tun - ist zu verwenden beginnen, die OOP (Objekt orientierte Programmierung) von AS3.
Sie erstellen müssen, sowas nennt man eine Dokumenten-Klasse. Dies ist effektiv-code, der da lebt von Ewigkeit hinter die kulissen (kein Wortspiel beabsichtigt). Sie können die store-Sachen in dieser Klasse und lese Sie später, Wann immer du willst.
Es ist einfacher als es klingt, und einmal eingerichtet - es wird Ihnen erlauben, zu beginnen, verschieben Sie den code aus Ihrer timeline.
Zunächst erstellen Sie eine Datei namens "DocumentClass.wie" Das kann wirklich aufgerufen werden nichts, aber anrufen, das ist eine sehr gute Praxis.
Speichern Sie diese Datei an der gleichen Stelle wie die FLA, mit dem Sie arbeiten - der demselben Ordner.
In CS3 - In der Eigenschaften-Leiste am unteren Rand des Bildschirms - wenn Sie auf die Bühne müssen, ausgewählt wird es eine kleine box ermöglicht es Ihnen, geben Sie den Namen der Dokument-Klasse hinein. Geben Sie den Namen der Datei, die Sie gerade gemacht haben 'DocumentClass' *ohne die '.als " Erweiterung - klicken Sie auf den link, wenn Sie sich nicht sicher sind, wo es ist, müssen Sie geben.
http://curtismorley.com/wp-content/uploads/2007/07/documentclasspath_bad.JPG
Bitte beachten Sie die capitlization - dies ist eine gute Praxis
Öffnen Sie diese Datei in Flash, und schreiben Sie den folgenden code. Genau so, wie ich es schreiben
Sie für "DocumentClass".als
Können Sie sehen, in all die guff ich für Sie schreiben, ich habe eine variable MeinName - Sie können schaffen, was Sie wollen - myAge... textToBeInAllScenes... girlfriendsWeightToday... Rufen Sie dann nichts.
Weitere Explination
Einer Klasse ist ein block von code, der erstellt dann im Speicher, wenn nötig. Ein "DocumentClass" ist, sondern lebt den ganzen Weg durch das Leben Ihre Anwendung.
Einen Paket - ist nur Phantasie as3-sprechen für 'legen Sie dieses Zeug in-a-box' - es kann weiter Fortgeschritten, aber das ist die jist.
Klasse DocumentClass extends MovieClip - sagst Du " flash "in meiner Klasse heißt DocumentClass" - diese erstreckt sowas nennt man einen MovieClip.
Den MovieClip ist Klasse, genau wie bei dir, aber für Sie gemacht und lebt in flash. Diese enthält jede Menge code, um Animationen zu arbeiten. Ihre Flash-Szene selbst ist nur eine sichtbare version dieses MovieClip-Sache.
müssen Sie erweitern diese Klasse, weil Sie ziemlich viel wollen [in einer gefälschten Weise] kopieren einfügen alle fertigen code und verwenden Sie es in Ihrem "DocumentClass". Du bist jetzt erweitern MovieClip und so, Ihr code ist obendrauf schon vorhandenen Sachen.
öffentlichen Funktion für "DocumentClass" () - ja, das ist eine Funktion. Aber seine genannt ein 'Konstrukt'. Es ist ein besonderer Typ der Funktion, der lebt in einer Klasse. Erstens, es hat den gleichen Namen. Dies ermöglicht Flash zu finden ist es wirklich leicht. Seine Besondere Aufgabe wird sofort ausgeführt seinen code automatisch, wenn diese Klasse gemacht und gesehen in flash. Alle automatisch sehen...
Wichtigen Teil für Sie ist die
public var
ich hinzu. Dies ist ein Eimer können Sie Ihre Daten speichern in.Den öffentlichen Teil sagt, flash, alles es sehen können, wenn Sie möchten, Szenen, die anderen Klassen... die Menschen auf der Straße - Nichts!
Den :string nach deiner variable (oder Eimer) name, erzählen Sie flash, welche Art von Informationen gespeichert werden, innerhalb der var. Dies ist nicht app-breaking wichtig - aber für gute OOP-code - tun Sie es. (google AS3 variable Gießen)
Gibt es viele var-Typen String, Anzahl, int, Boolean und so... in etwa 7 basic.
Ich denke, das ist Antwort genug für StackOverflow - es wird funktionieren -
gewarnt werden die Meisten Fehler sind deine Rechtschreibfehler... Flash mag keine Rechtschreibfehler.
Genießen!
frame scripting ist, meiner Meinung nach, ghetto und sollte vermieden werden.
dass gesagt wird, Sie problem konnte gelöst werden, ein paar Möglichkeiten. Sie erstellen zunächst ein "Aktionen" - Schicht, die zugänglich ist, um alle frames, die mit der Dehnung der Schicht so lange, wie Sie Ihre timeline, sondern auch alle Ihre actionscript auf dem ersten Bild. zweitens, indem Sie Ihre text-Feld auf einer separaten Ebene, zugänglich im Rahmen eines aber erst sichtbar, in frame 4 (vorausgesetzt, dass Sie nicht wollen, es zu erscheinen, bis Bild 4).
jedoch, OOP und eine Abfahrt design-Muster wie Glyzerin schlägt ist definitiv der Weg zu gehen, vor allem, wenn Sie neu sind, und planen weitere Investitionen in der flash-Plattform.
einige Buch-Vorschläge: Colin Moock ' s Essential ActionScript 3.0, Die ActionScript 3.0 Quick Reference Guide, Kieth Peter ' s Foundation Actionscript 3.0 Animation: Making Things Move! und AdvancED ActionScript 3.0 Animation. diese Bücher werden sicherlich geben Sie etwas festen Boden in die richtige Entwicklung für die flash-Plattform. wenn Sie Sie Lesen Sie nicht bereuen.
Beide Antworten sind gut, (ich von Ihnen positiv bewertet werden, die auf Ihnen), aber ausgehend von deinem code sieht es aus wie erstellen Sie ein einfaches Formular und vielleicht keine Lust, zu viel Zeit investieren atm. Die Schnellste Lösung ist immer noch code auf der Zeitleiste, sondern legen alles auf den ersten frame. Statt zu verschiedenen Bildern, die Sie werden ändern die visible-Eigenschaft ein-und ausblenden, verschiedene Videoclips.
Damit Ihre dialog-Fehler box wird immer dort gewesen, aber versteckt auf Start, wenn der Benutzer in die Daten und ich nehme einen submit-button dann Ihre Alarm-MovieClip angezeigt werden. Denn alles ist im ersten Bild können Sie leicht ordnen Sie die Werte zu den Feldern.
Eine einfache Lösung wäre die Schaffung einer globalen variable anstatt der lokalen .
var myVar = "hi" ;
zu
this.myVar = "hi" ;
Wenn Sie beklebte in der Ebene " Action frame 1 , u kann weiter den Zugriff auf die diese.myVar in anderen frames