Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 29-02-2004, 08:30   #1 (permalink)
smr
Neuer User
 
Registriert seit: Jun 2001
Beiträge: 18
Question Schaltfläche abfragen

Hallo, bin neu hier und bin auf der Suche nach Hilfe ueber so viele tolle Beitrage gestossen, aber leider habe ich zu meinem Problem nichts gefunden. Vielleicht koennt ihr mir helfen.

Also ich habe mehrere mcs, in denen kleine Filme ablaufen. In diesen Filmen sind unsichtbare Buttons die bestimmte Infos anzeigen. Wenn der Nutzer sich alle Filme angeguckt hat, kommt er zum Quiz. Hier will ich abfragen, ob er alle Infos gefunden hat. Wenn ja, darf er mit dem Quiz beginnen, wenn nicht, will ich ihm sagen, dass er die und die Info nicht erhalten hat und noch einmal im mc.xxx nachschauen muss. Ich hoffe, dass das einigermassen verstaendlich war. Mein Problem ist jedenfalls, wie ich speichern kann, dass der btn_1 angeklicht wurde und zweitens wie ich das dann spaeter im Quiz abrufen kann.

Ware too, wenn mir jemand helfen koennte

smr
__________________
smr
smr ist offline   Mit Zitat antworten
Alt 29-02-2004, 11:33   #2 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
kurz nachdenk... so vielleicht:
alle buttonszahlen, angenommen 10, in ein array pushen:

wenn du nun idealerweise alle deine buttons folgendermaßen benennst 'button1, button2,...button10, dann kann man in einer schleife schön die funktionalität/methoden erstellen, like:
ActionScript:
  1. var anzahl=10;
  2. var my_arr=[];
  3.  
  4.  
  5. for(var i=1;i<=anzahl;i++){
  6.       // jetzt werden die zahlen 1,2,3,....10 in einem array gespeichert.
  7.       my_arr.push(i);
  8.  
  9.       // jetzt die methoden der buttons
  10.       this['button'+i].id=i;
  11.       this['button'+i].onPress=function(){
  12.      
  13.             //löscht den eintrag der zum button passt aus dem array
  14.             // wenn button = button1 wird 1 aus dem array gelöscht und mit 'null' gefüllt
  15.             // this.id-1 weil array-index bei 0 beginnt
  16.              _root.my_arr.splice((this.id-1),1,null);
  17.  
  18.  
  19.              // hier nun dein anderer code den du ausführen willst bei onPress
  20.       }
  21. }

später kannst du dann folgendermaßen abfragen welche buttons noch nicht gedrückt wurden...
ActionScript:
  1. for(var j=0;j<my_arr.length;j++){
  2.       if(my_arr[j] != null){
  3.              trace('_root.button'+my_arr[j]+' muß noch gedrückt werden');
  4.       }
  5.    }

zum bsp über einen weiteren button, der 'mc' heißt:
ActionScript:
  1. mc.onPress=function(){
  2.    for(var j=0;j<my_arr.length;j++){
  3.       if(my_arr[j] != null){
  4.              trace('_root.button'+my_arr[j]+' muß noch gedrückt werden');
  5.       }
  6.    }
  7. }





hope this helps a bit...

greetz

kelor

Geändert von kelor (29-02-2004 um 11:36 Uhr)
kelor ist offline   Mit Zitat antworten
Alt 29-02-2004, 12:43   #3 (permalink)
smr
Neuer User
 
Registriert seit: Jun 2001
Beiträge: 18
hi,

erst einmal 1000 Dank, werde das Script ausprobieren und dabei auch hoffentlich verstehen. Melde mich wenns klappt (wenn nicht vermutlich auch)

so long
smr
__________________
smr
smr ist offline   Mit Zitat antworten
Alt 29-02-2004, 14:35   #4 (permalink)
smr
Neuer User
 
Registriert seit: Jun 2001
Beiträge: 18
super,

es hat geklappt, bin ganz gluecklich. Habe aber bei der Lösung noch ein Problem. Die buttons befinden sich in unterschiedlichen mcs (z.B mc_initiation und mc_termination). Wenn der Nutzer nun auf den Quiz button drueckt, und ihm gesagt wird, dass er Button 1 und 2 noch nicht gedrückt hat, nützt ihm das leider nicht viel, weil er die dann vermutlich nicht findet. Deshalb dachte ich, dass die Buttons unterschiedliche Namen bekommen, z.B Initiation_info_1 oder termination_info_2 (der Nutzer bekommt über die Buttons nur zusätzliche Infos über eine Animation, die er sich angucken darf). Dann kan er zum entsprechenden Film zurueckgehen und nach den Infos suchen. Wenn ich das so haben will, kann ich dann trotzdem über ein array gehen, oder muss ich das dann fuer jeden Button einzeln machen? War wieder maechtig kompliziert erklärt, vielleicht hast du es trotzdem
verstanden

so long
smr
__________________
smr
smr ist offline   Mit Zitat antworten
Alt 29-02-2004, 15:14   #5 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
anstelle in der for-schleife den namen via 'button'+i anzusprechen, kannst du das natürlich auch via array lösen...

bsp.:
ActionScript:
  1. my_mcArray=[initation.button1,termination.button3,_root.mc.obermutation.button4]

sehe dann ungefähr so aus:


ActionScript:
  1. my_mcArray=[initation.button1,termination.button3,_root.mc.obermutation.button4]
  2. var anzahl=my_mcArr.length;
  3.  
  4.  
  5.  
  6. for(var i=0;i<anzahl;i++){
  7.         //buttons ermitteln
  8.         var mc= my_mcArray[i];
  9.         // jetzt die methoden der buttons
  10.         mc.id=i;
  11.         mc.onPress=function(){
  12.                
  13.                 //löscht den eintrag der zum button passt aus dem array
  14.                 // wenn button = button1 wird 1 aus dem array gelöscht und mit 'null' gefüllt
  15.                 _root.my_mcArray.splice(this.id),1,null);
  16.                
  17.                
  18.                 // hier nun dein anderer code den du ausführen willst bei onPress
  19.         }
  20. }

und die überprüfung:
ActionScript:
  1. for(var j=0;j<my_mcArray.length;j++){
  2.         if(my_mcArray[j] != null){
  3.                 trace(my_mcArray[j]+' muß noch gedrückt werden');
  4.         }
  5. }


jetzt sind - im vergleich zur ersten variante - die mc´s direkt im array gespeichert und somit auch direkt referenzierbar via:
Arrayname[index]

siehe das trace, dass gibt dir nun nicht nur den namen des mc´s, sondern gleich den korrekten pfad dazu mit aus...
also ein :
my_mcArray[1] ergibt dann ein:
_level0.termination.button3



meintest du doch, oder?


greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 29-02-2004, 17:19   #6 (permalink)
smr
Neuer User
 
Registriert seit: Jun 2001
Beiträge: 18
Hi,

das ist genau was ich will (an der Obermutation merkt man natuerlich gleich den Fachmann).

Aber leider klappt es nicht. Ich habe die Buttons entsprechend umgenannt und folgendes Skript geschrieben:

my_mcArray = [initation.button1, termination.button3, obermutation.button4];
//habe alle buttons erst einmal im Hauptfilm
var anzahl = my_mcArray.length;
for (var i = 0; i<anzahl; i++) {
var mc = my_mcArray[i];
mc.id = i;
mc.onPress = function() {
_root.my_mcArray.splice((this.id), 1, null);
}
}
mc.onPress = function() {
for (var j = 0; j<my_mcArray.length; j++) {
if (my_mcArray[j] != null) {
trace(my_mcArray[j]+' muß noch gefunden werden');
}
}
}

aber leider klappt es nicht, also er gibt kein trace aus. Was habe ich falsch gemacht? Kannst du was sehen?

so long
smr
__________________
smr
smr ist offline   Mit Zitat antworten
Alt 01-03-2004, 03:23   #7 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
da fehlt nur ne kleinigkeit...einfach den pfad noch angeben, dann klappt´s auch mit der if-abfrage...

also diese zeile:
ActionScript:
  1. if(my_mcArray[j] != null){

in

ActionScript:
  1. if(_root.my_mcArray[j] != null){

ändern, dann klappt´s auch mit dem trace....



greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 01-03-2004, 11:15   #8 (permalink)
smr
Neuer User
 
Registriert seit: Jun 2001
Beiträge: 18
hi,

hab´ich gemacht, klappt aber leider trotzdem nicht, Hilfe?!

so long
Sabine
__________________
smr
smr ist offline   Mit Zitat antworten
Alt 01-03-2004, 13:16   #9 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
arrgghh...du darfst natürlich den letzten movieclip, der auf onPress überprüfen soll, ob es noch nicht gewählte fragen gibt, NICHT 'mc' nennen, da in der for-schleife bereits 'mc' als var benutzt wird...

benenne den mal um in 'checker' oder so...

ändere noch im script den aufruf für den movieclip von :

ActionScript:
  1. mc.onPress=function(){
  2.    for (var j = 0; j<my_mcArray.length; j++) {
  3.          if (my_mcArray[j] != null) {
  4.              trace(my_mcArray[j]+' muß noch gefunden werden');
  5.          }
  6.    }
  7. }

in :
ActionScript:
  1. checker.onPress = fucntion(){
  2.     ...
  3. }

dann sollte es aber definitiv klappen...


greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 01-03-2004, 16:23   #10 (permalink)
smr
Neuer User
 
Registriert seit: Jun 2001
Beiträge: 18
hi,

hat erst auch nicht geklappt, habe dann aber mal die Buttons richtig benannt, sprich den Punkt weggelassen.

Jetzt klappt es. Bei der Ausgabe steht dann zwar z. B." _level0.initation muß noch gefunden werden", was ich nicht so toll finde, aber Hauptsache ist, dass es klappt!!!


also noch einmal 1000 Dank fuer die Muehe, die Ausdauer und die Geduld mit mir


So long
smr
__________________
smr
smr ist offline   Mit Zitat antworten
Alt 01-03-2004, 16:56   #11 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
Zitat:
Bei der Ausgabe steht dann zwar z. B." _level0.initation muß noch gefunden werden", was ich nicht so toll finde, aber Hauptsache ist, dass es klappt!!!

ja, dass ist ja das, was ich dir sagte...da kommt der ganze pfad raus...
du kannst ja, wenn du das für den user 'schicker' haben möchtest, einen anderen dialog vorne raus stellen, der dir dann dennoch den korekten pfad 'backstage' aufruft...

könntest ja noch ein weiteres array anlegen, dass nen passenden text zu den einzelnen buttons hat...
und dass dem user anzeigen...und auf nen button den korrekten link legen...

greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 01-03-2004, 20:12   #12 (permalink)
smr
Neuer User
 
Registriert seit: Jun 2001
Beiträge: 18
Hi,

ja, da muss ich mir noch was nettes ueberlegen. Aber tatsaechlich ist ja der Sinn, dass er die Buttons auch findet und dafuer braucht er ja den Pfad. Sonst sucht er sich ja zu tode.

Also, noch einmal herzlichen Dank, haette ich alleine nie hinbekommen, frage mich aeh, wie man wirklich lernt zu programmieren, bin wirklich willens aber tue mich leider richtig schwer.

so long
Smr
__________________
smr
smr ist offline   Mit Zitat antworten
Alt 02-03-2004, 02:55   #13 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
gerne geschehen...

Zitat:
frage mich aeh, wie man wirklich lernt zu programmieren,
indem man aufhört menschlich zu denken...und das wort logik beginnt zu verstehen...

iss doch logisch oder net?!


greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 05-03-2004, 10:55   #14 (permalink)
smr
Neuer User
 
Registriert seit: Jun 2001
Beiträge: 18
So, jetzt habe ich zwei Tag versucht deinen Rat zu befolgen, habe (nahezu) alles menschliche aus meinem Gehirn rausgeworfen und versucht die Logik zu finden.

Fazit...meine Freunde halten mich fuer verrueckt aber meine Probleme habe ich immer noch nicht geloest.

Ich habe die Buttons nun in die entsprechenden 4 mc (die kann man ueber Schaltflaechen vom Hauptfilm aus erreichen) gelegt.
Wenn ich das Script auf das erste Bild im Hauptfilm lege passiert nichts. Wenn ich das Script aber 4 mal praktisch bei jedem moviecplip neu setze, kann ich die Buttons abfragen.
Aber natuerlich startet er dann jedesmal wenn ich auf ein mc gehe neu. Das will ich ja auch nicht.
Mein Problem ist also, dass ich es nicht schaffe vom Hauptfilm aus, jeweils die Buttons in den entsprechenden movieclips anzusprechen.
DEshalb habe ich die Buttons im Array entsprechend benannt, z. B. my_mcArray = [_root.init.initiation_1, _root.init.initiation_2]

Was mache ich da falsch? Meine Logik versagt mal wieder vollstaendig

so long
smr
__________________
smr
smr ist offline   Mit Zitat antworten
Alt 05-03-2004, 16:14   #15 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
ich melde mich nachher bei dir...

habe immo webig zeit, da einen kunden...denke, dass ich so um 19.oo - 19.3o uhr zeit habe...

greetz

kelor
kelor 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 04:05 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele