Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 09-03-2004, 10:11   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2004
Beiträge: 30
innerhalb von with-Statement weiterleiten?

Hallo ihrs!

Also, ich habe hier ein Statement der Form:
ActionScript:
  1. Speller.onEnterFrame = function() {
  2.   with (Speller) {
  3.        if (Key.isDown(Key.RIGHT)){
  4.           // Anweisungen
  5.           switch (variable){
  6.              case "A":     // hier Variablentausch
  7.              case "AB":   // hier Variablentausch
  8.              case "ABC": // hier dann Weiterleitung
  9.            }
  10.        }
  11.    }
  12. }

Das with-Statement würde ich eigentlich nicht gerne Auflösen wollen, weil ich da schon sehr umfangreichen Code geschrieben habe.
Ich habe jetzt mit gotoAndStop() versucht (das will sich nur innerhalb von on-Statement aufrufen lassen), oder mit nextFrame() (das tut gar nix).

Dann habe ich mal mit _parent.nextFrame() versucht. Da leitete er tatsächlich weiter, aber gleichzeitig bekomme ich auf der trace-Konsole eine Fehlermeldung:

Zitat:
Fehler: Eine 'with'-Aktion schlug fehl, da das angegebene Objekt nicht vorhanden ist.
Hmm.... Habt ihr eine schlaue Idee?
Habs jetzt schon mit einer unsichtbaren Schaltfläche versucht, die ein on (keyPress "<Right>") Statement hat, nur da bekomme ich Probleme mit der Nebenläufigkeit (die Schaltfläche führt er vor dem Bildskript aus, sollte umgekehrt aber sein).

Aber das ist ja auch nur Rumgebastel, keine richtige Lösung. Hat jemand ne Idee?
ssxp ist offline   Mit Zitat antworten
Alt 09-03-2004, 10:32   #2 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Laut deinem Skript müsste es in dem Objekt "Speller" ein weiteres geben, welches genau so heißt... is aber nicht der Fall.

Es müsste heißen: with(this) {...}

Aber ob du das überhaupt brauchst, das ganze...? Du willst ja nur die Tastatur abfragen und eine Variable gegenchecken oder wie oder was...?
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 09-03-2004, 10:34   #3 (permalink)
querfeldein
 
Benutzerbild von benemie
 
Registriert seit: Jul 2002
Ort: im Süden
Beiträge: 205
hi, also ich habe deine frage nicht ganz verstanden, was genau willst du erreichen?

ps, wozu brachst du bei Speller.onEnterFrame... ein "with" Aktion, das geht doch auch mit "this.".

zwei möglichkeiten sind, falls ich dich richtig verstanden habe:

ActionScript:
  1. //so (mit listener)
  2. /*meinKeyListener=new Object();
  3. meinKeyListener.onKeyDown=function(){
  4.     if (Key.isDown(Key.RIGHT)){
  5.         speller.nextFrame();
  6.     }
  7. }
  8. Key.addListener(meinKeyListener);*/
  9. //oder so
  10. speller.onEnterFrame = function() {
  11.     if (Key.isDown(Key.RIGHT)) {
  12.         Variable="ABC"
  13.         switch (Variable) {
  14.         case "A" :
  15.             // hier Variablentausch
  16.         case "AB" :
  17.             // hier Variablentausch
  18.         case "ABC" :
  19.             // hier dann Weiterleitung
  20.             // Anweisungen
  21.         this.nextFrame();
  22.         }
  23.     }
  24. };

Edit: na, mal wieder zu langsam gewesen
__________________
mfg b

angst vor palmen !!!

Geändert von benemie (09-03-2004 um 10:35 Uhr)
benemie ist offline   Mit Zitat antworten
Alt 09-03-2004, 11:00   #4 (permalink)
Neuer User
 
Registriert seit: Jan 2004
Beiträge: 30
Also zur Erklärung.

Ich hab das aus dem Tastatursteuerungsbeispiel von Flash in der Hilfe aufgebaut. (Das mit dem Auto )

Und da benutzt er halt with, damit er nicht immer wenn er auf _x oder _y zugreifen muss den Movieclip davorhängen muss.

Weiterhin brauche ich das, weil ich meinen MC "Speller" in der Gegend rumbewegen will, immer abhängig von diversen Variablen usw.
Deswegen schon jetzt viel Code.

Nur irgendwann will ich die Eingabe abschließen (wenn das richtige Wort rausgekommen ist) und weiterleiten.

Das ist mein Problem.

Zu den Problemlösungen: this.nextFrame() klappt nicht, keine Reaktion.

Und ohne with-müsste ich einiges hier umschreiben...
da bewegt er mein ganzes Bild statt nur meinen Speller.

Wenn ihr mir sagt, das es aber nur so geht, würd ichs machen...

Dann sollte es aber auch klappen...

Meine Frage ist auch eher grundsätzlich:
Geht das überhaupt, hier nextFrame() aufzurufen?
Kann ich vielleicht gotoAndStop() einsetzen (das wäre mir eh viel lieber, denn es sollte nicht zwingend der nächste Frame sein)?
Und wie muss ich die dann jeweilig adressieren?

Stefan
ssxp ist offline   Mit Zitat antworten
Alt 09-03-2004, 11:02   #5 (permalink)
Neuer User
 
Registriert seit: Jan 2004
Beiträge: 30
Ach und...
Die Listenergeschichte. Da hätte ich wieder Nebenläufigkeit, also das Bildskript und den Listener. Das will ich eigentlich auch vermeiden.

Stefan
ssxp ist offline   Mit Zitat antworten
Alt 09-03-2004, 11:13   #6 (permalink)
querfeldein
 
Benutzerbild von benemie
 
Registriert seit: Jul 2002
Ort: im Süden
Beiträge: 205
vielleicht wäre es sinnvoll wenn du mal deine .fla hier reinstellst, dann kann man die sich anschauen und versteht dein problem besser.

ps. bei mir funktioniert this.nextFrame();
vorrausgesetzt, speller hat mehrere frames.
__________________
mfg b

angst vor palmen !!!
benemie ist offline   Mit Zitat antworten
Alt 09-03-2004, 11:24   #7 (permalink)
Neuer User
 
Registriert seit: Jan 2004
Beiträge: 30
Ha, das isses. <g>

Der MC hat ein Frame.

Denkfehler von mir. Ich will natürlich nicht ein Frame weiter, sondern ein Bild.

Denn der MC ist für mich nur Container, um das Ganze Ding ansprechen zu können.

Ich häng jetzt mal ne abgerüste Variante an, die nur das Problem enthält. Auch die Schriften sind etwas krude, aber meine Schriften hier werdet ihr eh nicht haben.
Bisher hab ich die Worterkennung nur für Wort "Jena" fertig.

Schaut euch das mal an.

Stefan
Angehängte Dateien
Dateityp: zip test-forforum.zip (6,6 KB, 5x aufgerufen)
ssxp ist offline   Mit Zitat antworten
Alt 09-03-2004, 11:40   #8 (permalink)
querfeldein
 
Benutzerbild von benemie
 
Registriert seit: Jul 2002
Ort: im Süden
Beiträge: 205
"unbekanntes dateiformat"?

is das ne flash mx 2004 file?
oder mac?
__________________
mfg b

angst vor palmen !!!
benemie ist offline   Mit Zitat antworten
Alt 09-03-2004, 11:46   #9 (permalink)
Neuer User
 
Registriert seit: Jan 2004
Beiträge: 30
Flash-MX-2004-Dokument.

Hab jetzt mal als Flash-MX-Dokument gespeichert.
Angehängte Dateien
Dateityp: zip test-forforum.zip (7,1 KB, 2x aufgerufen)
ssxp ist offline   Mit Zitat antworten
Alt 09-03-2004, 12:07   #10 (permalink)
querfeldein
 
Benutzerbild von benemie
 
Registriert seit: Jul 2002
Ort: im Süden
Beiträge: 205
ok,

du willst auf der hauptzeitleiste (bühne) einen frame weiter, wenn man "jena" zusammengefummelt hat.
das heisst, nicht "this.nextFrame()" sonder _root oder _parent.nextFrame();

die with-aktion schlägt dann aber fehl weil zwar die onEnterFrame aktion von speller noch wirkt, du aber in frame 2 keinen speller mehr auf der bühne hast.

ausserdem würde ich die onKeyDown sache in eine onKeyUp sache umwandeln, weil sonst dein speller solange fährt wie man die taste gedrückt hät.
__________________
mfg b

angst vor palmen !!!
benemie ist offline   Mit Zitat antworten
Alt 09-03-2004, 13:02   #11 (permalink)
Neuer User
 
Registriert seit: Jan 2004
Beiträge: 30
OK, ich sehe, das wird kompliziert.

Also, in den nächsten Frame könnte ich also springen, müsste nur ein MC "Speller" irgendwo da haben...

Mit einem Bildskript könnte ich dann mit ner if-Anweisung im nächsten Bild sonstwohin weiterleiten.

Das ist aber nur ne Notlösung.
Irgendwie sollte das doch eleganzer gehen...

Nebenbei:
Selbst wenn ich jetzt die with-Anweisung auskommentiere, komme ich freilich nicht weiter.

Hmmm...

Stefan
ssxp ist offline   Mit Zitat antworten
Alt 09-03-2004, 13:32   #12 (permalink)
querfeldein
 
Benutzerbild von benemie
 
Registriert seit: Jul 2002
Ort: im Süden
Beiträge: 205
möglich ist es den ganzen onEnterFrame-Käse auf den Speller zu legen in einen onClipEvent.



das hier ausm ersten frame raus und auf den Speller Mc legen.
ActionScript:
  1. onClipEvent (enterFrame) {
  2.  
  3.     with (this) {
  4.         if (Key.isDown(Key.RIGHT)) {
  5.             if (_x<80) {
  6.                 _root.visibleTextVar = _root.visibleTextVar+_root.spellerCharStringArray[_root.position];
  7.                 // trace("*" + visibleTextVar + "#");
  8.                 switch (_root.visibleTextVar) {
  9.                 case "J" :
  10.                     _root.actSpellerCharString = "AEHIOUÄÖÜ";
  11.                     break;
  12.                 case "JE" :
  13.                     _root.actSpellerCharString = "BCDEGHLMNRSTVX";
  14.                     break;
  15.                 case "JEN" :
  16.                     _root.actSpellerCharString = "AFGHKNS";
  17.                     break;
  18.                 case "JENA" :
  19.                     _root.actSpellerCharString = " ";
  20.                     _parent.nextFrame();
  21.                     break;
  22.                 default :
  23.                     _root.actSpellerCharString = _root.spellerCharString;
  24.                     break;
  25.                 }
  26.                 if ((_root.actSpellerCharString.length%2) == 1) {
  27.                     _root.position = _root.actSpellerCharString.length/2+0.5;
  28.                 } else {
  29.                     _root.position = _root.actSpellerCharString.length/2;
  30.                 }
  31.                 // trace(actSpellerCharString);
  32.                 _root.spellerCharStringArray = _root.actSpellerCharString.split("");
  33.                 _x = _x+10;
  34.                 _root.setSpeller(_root.spellerCharStringArray, _root.position);
  35.                 // if (visibleTextVar == "JENA"){
  36.                 // trace("JENA");
  37.                 // gotoAndStop("cityList");
  38.                 // }
  39.             }
  40.         }
  41.         if (Key.isDown(Key.LEFT)) {
  42.             if (_x>30) {
  43.                 // eventuell DEL-Button in Buchstabenliste:
  44.                 _root.visibleTextVar = _root.visibleTextVar.substr(0, _root.visibleTextVar.length-1);
  45.                 _x = _x-10;
  46.             }
  47.         }
  48.         if (Key.isDown(Key.UP)) {
  49.             if (_root.position>0) {
  50.                 _root.position--;
  51.                 _root.setSpeller(_root.spellerCharStringArray, _root.position);
  52.             }
  53.         }
  54.         if (Key.isDown(Key.DOWN)) {
  55.             if (_root.position<_root.spellerCharStringArray.length-1) {
  56.                 _root.position++;
  57.                 _root.setSpeller(_root.spellerCharStringArray, _root.position);
  58.             }
  59.         }
  60.     }
  61. }


Übrigens, als variable den namen "position" zu nehmen is nich gut, da er schon von flash verwendet wird.
__________________
mfg b

angst vor palmen !!!

Geändert von benemie (09-03-2004 um 13:37 Uhr)
benemie ist offline   Mit Zitat antworten
Alt 09-03-2004, 13:42   #13 (permalink)
Neuer User
 
Registriert seit: Jan 2004
Beiträge: 30
Tut. Schlicht und einfach.

Danke.
ssxp 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 16:32 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele