Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 12-07-2007, 09:48   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2007
Beiträge: 28
createEmptyMovieClip zufall

hallo zusammen

ich habe erst seit kurzem mit flash und actionscript angefangen zu arbeiten und stosse auf ein kleines problem in meinem script.

ich habe mit createEmptyMovieClip zehn leere clips erstellt (A1, A2, A3...B1, B2...C1, C2 usw.(Wie eine Landkarte)) nun habe ich zehn mc's (mc_k1 - mc_k2 alles animationen) die zufällig in diese abgefüllt werden sollen. Wie ich einen einzelnen MC in einen bestimmten leeren clip kriege ist mir klar aber es sind zehn verschiedene die mit hilfe von einem zufallsgenerator in zehn leere clips abgefüllt werden müssen. Die Idee ist das man am schluss die zehn clips einzeln ansteuern kann.

Das ganze soll ein memoryspiel werden, dass via php (user gibt z.B. A1, C4 ein) steuerbar ist.

kann mir jemand helfen?

Geändert von noras (12-07-2007 um 10:28 Uhr) Grund: Verständlicher
noras ist offline   Mit Zitat antworten
Alt 12-07-2007, 11:54   #2 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hallo und willkommen im Forum!

Um aus der Bibliothek etwas "abzufüllen" (geiles Wort übrigens) brauchst du keine leeren MCs.
Da reicht einfach attachMovie(). Zum Thema Zufall einfach mal die Suche anschmeißen.
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 12-07-2007, 12:30   #3 (permalink)
Neuer User
 
Registriert seit: Jul 2007
Beiträge: 28
Danke erstmals für die schnelle Antwort.

Wenn ich aber keine leeren MC's erstelle, wie kann ich im Mermory anschliesend die Felder definieren? Das ganze kann ja nicht via Maus angewählt werden da sich das Spiel auf einem TV-Screen befindet und die Leute ein Eingabeformular brauchen um die gewünschten koordinaten (A1-A5, B1-B5, C1-C5, D1-D5, E1-E5, F1-F5, G1-G5 und H1-H5) anzuwählen.
noras ist offline   Mit Zitat antworten
Alt 12-07-2007, 12:50   #4 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Verstehe ich nicht ganz. Was hat das Eine mit dem Anderen zutun?

Die MCs würde ich durchnummerieren. So halt

A 1(1),2(2),3(3),4(4),5(5)
B 1(6),2(7),3(8),4(9),5(10)
C 1(11),2(12),3(13),4(14),5(15)

wobei das in den Klammern die Nummer des MCs wäre und die andere Zahl plus Buchstabe das, was der Spieler eingeben kann.
Dann kannst du einfach die Eingabe zuerpflücken und gucken, welcher Nummer z.B. "C4" entspricht:

PHP-Code:
var auswahl1 "A2";
var 
auswahl2 "C4";
trace("Erste Auswahl: Feld "+((auswahl1.charCodeAt(0)-65)*5+Number(auswahl1.substr(-1))));
trace("Zweite Auswahl: Feld "+((auswahl2.charCodeAt(0)-65)*5+Number(auswahl2.substr(-1)))); 
Funktioniert natürlich auch andersrum. Also dass beim Attachen direkt ein MC-Name wie z.B. "A3" vergeben wird.
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 12-07-2007, 13:33   #5 (permalink)
Neuer User
 
Registriert seit: Jul 2007
Beiträge: 28
Bin mir jetzt nicht sicher ob Du mich richtig verstanden hast oder ob ich so extrem auf dem Schlauch stehe. Ich nehme jetzt mal an es liegt an mir. Ich hoffe Du hast für noch einen Versuch Geduld mit mir.

Ich habe bereits ein Memory (mit Hilfe) gebastelt. Das Problem ist aber das diese Version nur mit der Maus steuerbar ist. Es müsste aber via externem PHP Formular gehen.

Wie Die PHP-Geschichte für die Steuerung aussehen muss weiss ich. Wie ich mehrere Bilder per Zufall in einem MC "abfülle" ist mir klar aber ich brauche ja irgend einen Wert den ich ansprechen kann um die einzelnen Felder (siehe Bild) zu steuern. Da das bei dieser Version nicht möglich ist habe ich angenommen ich muss die einzelnen Felder zuerst mit fixen Koordinaten definieren.

PHP-Code:
function memory() {
          
this.createEmptyMovieClip("box"1);
          
box._x 143;
          
box._y 128;
          
box.tiefe 0;
          
box.anzahl 20;
          
box.zeilen 5;
          
box.spalten = (box.anzahl*2)/box.zeilen;
          
box.warten false;
          
box.karte1 "";
          
box.aTempNums = [];
          for (var 
1i<=box.anzahli++) {
                    for (var 
1j<=2j++) {
                              
box.aTempNums.push(i);
                    }
          }
          
box.aKarten = [];
          while (
box.aTempNums.length>0) {
                    var 
zufall Math.floor(Math.random()*box.aTempNums.length);
                    
box.aKarten.push(box.aTempNums[zufall]);
                    
box.aTempNums.splice(zufall1);
          }
          for (var 
0i<box.zeileni++) {
                    for (var 
0j<box.spaltenj++) {
box.attachMovie("mc_k"+box.aKarten[box.tiefe], "k"+box.tiefe+"_"+box.aKarten[box.tiefe], box.tiefe);
                              var 
obj box["k"+box.tiefe+"_"+box.aKarten[box.tiefe]];
                              
obj.onPress = function() {
                                        if (!
box.warten) {
                                                  
box.umdrehen(this);
                                        }
                              };
                              
obj.stop();
                              
obj._x j*(obj._width+2);
                              
obj._y i*(obj._height+2);
                              
box.tiefe++;
                    }
          }
          
box.umdrehen = function(welche) {
                    if (
box.karte1 == welche) {
                              return;
                    }
                    
welche.play();
                    
welche.onEnterFrame = function() {
                              if (
this._currentframe>=this._totalframes) {
                                        
this.stop();
                                        
delete this.onEnterFrame;
                              }
                    };
                    if (
box.karte1 == "") {
                              
box.karte1 welche;
                    } else {
                              
box.warten true;
                              
pauseInterv setInterval(box.pruefen1000welche);
                    }
          };
          
box.pruefen = function(wen) {
                    var 
eins String(box.karte1).lastIndexOf("_");
                    var 
zwei String(wen).lastIndexOf("_");
                    if (
String(wen).substring(zwei+1) == String(box.karte1).substring(eins+1)) {
                              
box.warten false;
                              
box.karte1.removeMovieClip();
                              
wen.removeMovieClip();
                              
box.karte1 "";
                    } else {
                              
box.karte1.onEnterFrame = function() {
                                        if (
this._currentframe>1) {
                                                  
this.gotoAndStop(this._currentframe-1);
                                        } else {
                                                  
box.warten false;
                                                  
this.stop();
                                                  
box.karte1 "";
                                                  
delete this.onEnterFrame;
                                        }
                              };
                              
wen.onEnterFrame = function() {
                                        if (
this._currentframe>1) {
                                                  
this.gotoAndStop(this._currentframe-1);
                                        } else {
                                                  
this.stop();
                                                  
delete this.onEnterFrame;
                                        }
                              };
                    }
                    
clearInterval(pauseInterv);
          };
}
memory(); 
oder gibt es eine andere Möglichkeit Möglichkeit?
Angehängte Grafiken
Dateityp: jpg 1.jpg (14,3 KB, 7x aufgerufen)

Geändert von noras (12-07-2007 um 13:34 Uhr)
noras ist offline   Mit Zitat antworten
Alt 12-07-2007, 13:42   #6 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Wenn ich das Script richtig blicke, dann könnte das so klappen:
PHP-Code:
var auswahl "A2"//wäre das, was über PHP ankommt
aKarten[(auswahl.charCodeAt(0)-65)*5+Number(auswahl.substr(-1))-1].onPress(); 
edit: ...musste noch -1 rein (Array fängt ja bei 0 an)
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++

Geändert von Der Frager (12-07-2007 um 14:04 Uhr)
Der Frager ist offline   Mit Zitat antworten
Alt 12-07-2007, 14:22   #7 (permalink)
Neuer User
 
Registriert seit: Jul 2007
Beiträge: 28
werde das heute abend oder morgen ausprobieren. muss jetzt leider noch einer anderen arbeit nachgehen. danke erstmals für deine super hilfe und deine geduld.

geb auf jeden fall noch bescheid ob es funktioniert hat. aber so wie ich mich kenne werde ich deine hilfe eh nochmal brauchen.
noras ist offline   Mit Zitat antworten
Alt 13-07-2007, 15:15   #8 (permalink)
Neuer User
 
Registriert seit: Jul 2007
Beiträge: 28
Wie erwartet melde ich mich wieder. Jetzt kommt noch ein weiteres Problem hinzu. Ein Freund hat mir erklährt wie ich Informationen über PHP nach Flash bekommen. So funktioniert es aber nicht. Die einzige Lösung ist das ganze über eine XML Datei zu löse. Ich weiss zwar wie ich die Daten von PHP in die XML kriege aber nicht Wie Flash diese Datei auslesen kann. Ich habe heute den halben Tag damit verbracht nach solchen Beispielen zu suchen, so dass ich zumindest eine beispiel xml hätte mit zwei Koordinaten um testen zu können ob diese Felder sich in Flash dann auch wirklich öffnen. Hat aber nicht wirklich funktioniert.

Da ich aber auch nicht genau weiss ob ich im AS alles richtig gemacht habe stecke ich einwenig in der Klemme. Ich weiss es ist viel verlangt von mir aber vielleicht könntest Du dir das Projekt mal ansehen? Ich weiss echt nicht weiter.

projekt
noras 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 01:50 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele