Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-04-2004, 22:12   #1 (permalink)
Neuer User
 
Benutzerbild von danielo
 
Registriert seit: Jan 2002
Ort: ROSTOCK
Beiträge: 14
Variablen und if then- was ist falsch

Hallo
Wie ihr seht ist das meine erste Frage ich bin als noch Newbie.

am anfang der ersten scene setze ich eine variabel ein
AS(bild):var X;

Ich habe fünf knöpfe die eine variable einstellen

AS(knopf):
on (release) {
play ();
x = "a";
}

auf dem letzten bild der szene liegt auf einem bild die abfrage die den besucher in die richtige szene schicken soll

as(bild):
if (x==a) {
gotoAndPlay ("aktuell", 1);
}
if (x==K) {
gotoAndPlay ("konzept", 1);
}
if (x==f) {
gotoAndPlay ("finanzierung", 1);
}
if (x==v) {
gotoAndPlay ("verein", 1);
}
if (x==a) {
gotoAndPlay ("anmeldung", 1);
}
if (x==t) {
gotoAndPlay ("kontakt", 1);
}
if (x==s) {
gotoAndPlay ("schule", 1);
}

nur funktionieren tut gar nichts!--was ist falsch

Nun ja ich hab bisher nur qubasic programiert und das letzte mal vor 5 jahren. wer schön wenn ihr mir den einstieg in die action script sprache vereinfacht .
vielen dank daniel
danielo ist offline   Mit Zitat antworten
Alt 07-04-2004, 22:32   #2 (permalink)
Neuer User
 
Registriert seit: Mar 2002
Ort: D'dorf
Beiträge: 765
N'abend daniel,

kann dir zwar auf die Schnelle kein AS-Einführung geben, aber da du der Variablen x eine String zuweist, musst du auch in deinen if-Bedingungen gegen eine String prüfen.

Außerdem wäre es besser, mit einer if-else-Verzweigung zu arbeiten, damit nicht alle if-Bedingungen überprüft werden müssen:
ActionScript:
  1. if (x=="a") {
  2. gotoAndPlay ("aktuell", 1);
  3. }else if (x=="K)" {
  4. gotoAndPlay ("konzept", 1);
  5. }else if (x=="f)" {
  6. gotoAndPlay ("finanzierung", 1);
  7. }else if (x=="v") {
  8. gotoAndPlay ("verein", 1);
  9. }else if (x=="a") {
  10. gotoAndPlay ("anmeldung", 1);
  11. }else if (x=="t") {
  12. gotoAndPlay ("kontakt", 1);
  13. }else if (x=="s") {
  14. gotoAndPlay ("schule", 1);
  15. }
Und vergiss am besten schnell wieder, dass es in Flash so was wie Szenen gibt! Arbeite lieber mit Frame-Labels/Bildbezeichnungen.

gruß,
roman
romän ist offline   Mit Zitat antworten
Alt 08-04-2004, 09:28   #3 (permalink)
Klugscheisser
 
Registriert seit: Jun 2001
Ort: Düsseldorf
Beiträge: 1.354
Vielleich wäre es noch einen Tick eleganter, eine Funktion und ein Array zu schreiben...

ActionScript:
  1. checker=function(schaltwert){
  2. for(i=0;i<switches.length;i++){
  3. if(schaltwert==switches[i][0]){
  4. gotoAndPlay(switches[i][1],1);break;
  5. }}}
  6.  
  7.  
  8. //folgendes Array entsprechend erweitern
  9. switches=new Array();
  10. switches[0]=new Array("A","aktuell");
  11. switches[1]=new Array("k","konzept");
  12. switches[2]=new Array("f","finanzierung");
  13. switches[3]=new Array("v","verein");
  14. switches[4]=new Array("a","anmeldung");
  15. switches[5]=new Array("t","kontakt");
  16. switches[6]=new Array("s","schule");

...und diese dann aufzurufen:

ActionScript:
  1. x="k";
  2. checker(x);
  3.  
  4. //oder auch gleich
  5.  
  6. checker("k");

dann könnte man ggf. nachträglich einfach das Array verändern und müsste sich nicht jedesmal durch die if-Verzweigungen schlagen

Edit: und wie roman schon sagte... vergiss die Szenen, es sei denn, Du machst einen komplett linearen Film ohne ActionScript

Geändert von T.Decay (08-04-2004 um 09:32 Uhr)
T.Decay ist offline   Mit Zitat antworten
Alt 08-04-2004, 11:29   #4 (permalink)
Neuer User
 
Benutzerbild von danielo
 
Registriert seit: Jan 2002
Ort: ROSTOCK
Beiträge: 14
Smile

Danke erst einmal.

Ui uiii ui ich glaub ich muss mir da doch ersteinmal ein Anfänger AS-Buch kaufen um einen Einstieg zu finden. (habt ihr einen tip welches ?)
bisher kam ich gut mit den einfachen Sachen zurecht.

zum Problem:
Ich habe die else if Anweisung eingebaut. Leider ist das Problem unverändert.
Warscheinlich ist es ein blöder anfänger schreibfehler.
hab die Vereinfachung der fla mal drangehangen.(fash5)

es währe super wenn da einer mal kurz draufgucken könnte.

@ T.Decay Das mit dem Array versteh ich zwar halb :-)
doch wo bau ich die AS genau ein (bild/button/Mc?)

mit szenen arbeiten ist doch so schön übersichtlich. was sind die Nachteile?

danke noch einmal-- daniel
Angehängte Dateien
Dateityp: zip variablen abfrage.zip (21,1 KB, 0x aufgerufen)
__________________
MV tut gut!
danielo ist offline   Mit Zitat antworten
Alt 08-04-2004, 12:30   #5 (permalink)
Klugscheisser
 
Registriert seit: Jun 2001
Ort: Düsseldorf
Beiträge: 1.354
Normalerweise alles irgendwo in die Hauptzeitleiste, also da, wo Du bisher var x definiert hast.

In deinem speziellen Fall Würde ich den ersten Teil ins erste Bild schreiben. Also die Definition von Funktion und Array.

am Knopf dann x als

_root.x="irgendwas";

definieren, mit _root liegt die Variable dann nämlich auch auf dem Hauptfilm. Und im letzten Bild kannst Du dann wieder checker(x); schreiben.

P.S.:Falls Du checker(); als Objektaktion ausführen willst, schreib _root.checker(x); damit die Funktion im Hauptfilm gefunden und ausgeführt wird.

P.S.2: var brauchst Du eigentlich nur, wenn Du eine Variable explizit lokal anlegen willst. Ansonsten macht AS das automatisch, sobald Du eine Variable zum ersten Mal verwendest, wird sie angelegt.

Geändert von T.Decay (08-04-2004 um 12:40 Uhr)
T.Decay ist offline   Mit Zitat antworten
Alt 08-04-2004, 12:35   #6 (permalink)
Klugscheisser
 
Registriert seit: Jun 2001
Ort: Düsseldorf
Beiträge: 1.354
Ein Nachteil bei Szenen ist z.B., dass Bildnummern zwischen mehreren Szenen nicht gefunden werden.
T.Decay ist offline   Mit Zitat antworten
Alt 08-04-2004, 13:13   #7 (permalink)
Neuer User
 
Benutzerbild von danielo
 
Registriert seit: Jan 2002
Ort: ROSTOCK
Beiträge: 14
hey danke für deine mühe

sorry aber ich krieg das nicht nachgebaut.
1. Ich find den punkt checker nicht im aktionsfenster
2. ich kann das AS nicht reinkopieren
- fehlermeldung: Zwischenablage-Aktionen: Line 4: Szenenname muss eine Zeichenfolge in Anführungszeichen sein
gotoAndPlay("switches"[i][1],1);break;

das switches hab ich schon in " " gesetzt-gleiches ergebniss.

kann bitte mal jemand meine fla checken?
(oben in der zip)

danke sagt daniel
__________________
MV tut gut!
danielo ist offline   Mit Zitat antworten
Alt 08-04-2004, 13:30   #8 (permalink)
Klugscheisser
 
Registriert seit: Jun 2001
Ort: Düsseldorf
Beiträge: 1.354
Ups, ja richtig... eigene Funktionen bauen geht im Bastelmodus natürlich nicht
...geh mal oben rechts im Aktionsfenster auf das kleine Dreieck und stell auf "Expertenmodus". Klingt gefährlich, bewirkt aber nur, dass Du selber schreiben kannst. Ist meiner Ansicht nach auch zum Lernen besser, ich hab den Amateurmodus eigentlich nie benutzt.

...naja und dann einfach Copy&Paste

Geändert von T.Decay (08-04-2004 um 13:33 Uhr)
T.Decay ist offline   Mit Zitat antworten
Alt 08-04-2004, 14:04   #9 (permalink)
Neuer User
 
Benutzerbild von danielo
 
Registriert seit: Jan 2002
Ort: ROSTOCK
Beiträge: 14
noch einmal fla mit script von T Decay

Ich habe jetzt das script von T Decay wie beschrieben eingesetzt.
im experten modus :-)

trotzdem klappt es nicht darum nocheinmal kann sich jemand mal die fla angucken?
ist besimmt nur ein syntax.
vielen dank daniel
Angehängte Dateien
Dateityp: zip variablen abfragev2.zip (7,8 KB, 1x aufgerufen)
__________________
MV tut gut!
danielo ist offline   Mit Zitat antworten
Alt 08-04-2004, 14:24   #10 (permalink)
Klugscheisser
 
Registriert seit: Jun 2001
Ort: Düsseldorf
Beiträge: 1.354
also bei gotoAndPlay(switches[i][1],1);

keine Anführungszeichen, es funktioniert ohne, was die beknackte Fehlermeldung da soll, weiss ich nicht, Flashbug halt, aber nach dem Veröffentlichen fällt die ja eh weg. Ansonsten ist es tatsächlich ein Syntaxfehler, wenn Du z.B. die Zeichenkette "k" an checker(); übergeben willst, ohne sie vorher in x zu stecken, musst Du "k" in Anführungszeichen setzen.

also entweder

ActionScript:
  1. x="k";//x ist Zeichenkette k
  2. _root.checker(x);//benutz den Inhalt von x
  3.  

...Oder...

ActionScript:
  1. _root.checker("k");//benutz Zeichenkette k
  2.  

Geändert von T.Decay (08-04-2004 um 14:29 Uhr)
T.Decay ist offline   Mit Zitat antworten
Alt 08-04-2004, 14:38   #11 (permalink)
Klugscheisser
 
Registriert seit: Jun 2001
Ort: Düsseldorf
Beiträge: 1.354
Oha!...alles zurück!!!


Geht doch nicht... gotoAndPlay(); erwartet anscheinend tatsächlich eine feststehende Zeichenkette. Sowas Bescheuertes! D.h. wohl für Dich, Du musst doch die if Abfragen von roman benutzen. Sorry, mein Fehler!
T.Decay ist offline   Mit Zitat antworten
Alt 08-04-2004, 15:02   #12 (permalink)
Klugscheisser
 
Registriert seit: Jun 2001
Ort: Düsseldorf
Beiträge: 1.354
So, wie Du´s vorher gemacht hattest, funktionierte es übrigens schon, Du musst nur _root.x anstatt x nehmen
T.Decay ist offline   Mit Zitat antworten
Alt 08-04-2004, 15:08   #13 (permalink)
Neuer User
 
Registriert seit: Mar 2002
Ort: D'dorf
Beiträge: 765
hi zusammen,

na da hamm wir doch schon mal ein schönes Beispiel warum man keine Szenen benutzen sollte...
Wenn du mit Bildbezeichnungen arbeitest kannst du die Funktion von Decay aber trotzdem benutzen.
Geb einfach dem jeweils ersten Bild in deinen Szenen ein Bezeichnung.
Anstatt der Szenennamen schreibst du die Bildbezeichnung in das switches-Array, z.B:
ActionScript:
  1. switches[0]=new Array("A","bild1inSzeneAktuell");
...und änderst deinen gotoAndPlay-Aufruf:
ActionScript:
  1. gotoAndPlay(switches[i][1]);
Ich hätte aber noch ne Alternative zu T.Decay's Funktion anzubieten, um die for-Schleifen loszuwerden:
ActionScript:
  1. checker=function(schaltwert){
  2.                         gotoAndPlay(switches[schaltwert]);
  3.                 }
  4. //ein Objekt statt einem Array
  5. switches=new Object();
  6. switches["A"] = "bildAktuell";
  7. switches["k"] = "bildKonzept";
  8. switches["f"] = "bildFinanzierung";
  9. switches["v"] = "bildVerein";
  10. switches["a"] = "bildAnmeldung";
  11. switches["t"] = "bildKontakt";
  12. switches["s"] = "bildSchule";
Anwendung genauso wie bei Decay's Funktion.
nur mal so...

gruß,
roman
romän ist offline   Mit Zitat antworten
Alt 08-04-2004, 15:41   #14 (permalink)
Neuer User
 
Benutzerbild von danielo
 
Registriert seit: Jan 2002
Ort: ROSTOCK
Beiträge: 14
ok ich habe jetzt:

auf dem button
AS:
------------------------------
on (release) {
set (_root.x, o);
play ();
}
------------------------------
auf dem Filmabschnittsende im bild:
AS:
------------------------------
if (_root.x==k) {
gotoAndPlay ("konzept");
} else if (_root.x==a) {
gotoAndPlay ("aktuell");
} else if (_root.x==f) {
gotoAndPlay ("finanzierung");
} else if (_root.x==v) {
gotoAndPlay ("verein");
} else if (_root.x==n) {
gotoAndPlay ("anmeldung");
} else if (_root.x==o) {
gotoAndPlay ("kontakt");
}
-------------------------------

das alles auf einer szene(arbeitet sich wirklich besser)
aber
immer noch falsch !

erbarm sich doch mal einer meiner fla und richte sie mir.
-rettet meinen tag.

@ romän
Kannst du mir noch kurz an die AS vermerke machen wo ich die einsetzen soll?
danke euch beiden!
Angehängte Dateien
Dateityp: zip variablen abfrage.zip (9,8 KB, 3x aufgerufen)
__________________
MV tut gut!
danielo ist offline   Mit Zitat antworten
Alt 08-04-2004, 15:58   #15 (permalink)
Neuer User
 
Registriert seit: Mar 2002
Ort: D'dorf
Beiträge: 765
hi,

also auf die Buttons muss:
ActionScript:
  1. set(_root.x, "o"); // Anführungsstriche!!! Checkbox 'Ausdruck' [B]nicht[/B] auswählen
  2.  
In deinen if-else-Abfragen fehlen die Anführungsstriche auch wieder (s.o).

Die Funktion von Decay oder mir schreibst du in das aller erste Bild.
Anstatt der if-else-Abfrage (also genau in den gleichen Bildern) schreibst du dann einfach:
ActionScript:
  1. checker(x);
gruß,
roman
romän 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 10:51 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele