Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 13-10-2005, 12:40   #1 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Ort: Stuttgart
Beiträge: 7
Exclamation Hilfe!! MX auf Flash5 Downgrade bei onMouseDown

Hallo Profiflasher,
Habe ein dringendes Problem und würde mich über schnelle Hilde freuen. Im Stress kann ich keine gute Alternative finden.
Zum Problem: In einem Online Game besteht ein Spielpart aus Buchstaben, die zu einem Lösungswort zusammengesetzt werden soll. Die gesammelten Buchstaben sollen in der richtigen Reihenfolge per Drag and Drop auf das Lösungsfeld gezogen werden. Das Game wurde in FlashMX geschrieben und soll aber nun auf Flash5 umgesetzt werden !? ;(
Die Buchstaben des Lösungswortes nehm ich aus einem Array und füge für jeden Array-Eintrag, sprich Buchstabe per attachMovie einen MC ein, der eine onMouseDown Funktion bekommt (fürs Drag n Drop). Hier ein Schnipsel des Scripts:
ActionScript:
  1. //------------------------------------------------
  2. /* The collected Letters */
  3. //------------------------------------------------
  4. // attach an mc with Drag function
  5. for(i=0;i<_root.solution_all.length;i++)
  6.     {
  7.     // create a clip and attach lettervalue
  8.     _root.attachMovie("sol.letter","slice"+(i+1),100-i,{_x:280+(i*50),_y:340+(60*(i%2))} );
  9.     _root["slice"+(i+1)].letter = _root.solution_all[i];
  10.     // interaction
  11.     _root["slice"+(i+1)].onMouseDown = function ()
  12.         {
  13.         if (this.hitTest(_root._xmouse, _root._ymouse, true))
  14.             {
  15.             this.Xpos = this._x;
  16.             this.Ypos = this._y;
  17.             this.startDrag();
  18.             }
  19.         };
  20.        
  21.     _root["slice"+(i+1)].onMouseUp = function()
  22.         {
  23.         this.StopDrag();
  24.         if(_root.hitsExisting(this) == true )
  25.             {
  26.             this._x = this.Xpos;
  27.             this._y = this.Ypos;
  28.             break;
  29.             }
  30.        
  31.         else
  32.             {
  33.             // drop on the solutionbox
  34.             if (this.hittest(_root["solbox1"]) && this.letter == "C") {
  35.                 this._x = _root.solbox1._x;
  36.                 this._y = _root.solbox1._y;
  37.                 _root.solutiontest[0] = this.letter;
  38.                 }
  39.             else if (this.hittest(_root["solbox2"]) && this.letter == "O") {
  40.                 this._x = _root.solbox2._x;
  41.                 this._y = _root.solbox2._y;
  42.                 _root.solutiontest[1] = this.letter;
  43.                 }
  44.             else if (this.hittest(_root["solbox3"]) && this.letter == "M" ) {
  45.                 this._x = _root.solbox3._x;
  46.                 this._y = _root.solbox3._y;
  47.                 _root.solutiontest[2] = this.letter;
  48.                 }
  49.             else if (this.hittest(_root["solbox4"]) && this.letter == "P") {
  50.                 this._x = _root.solbox4._x;
  51.                 this._y = _root.solbox4._y;
  52.                 _root.solutiontest[3] = this.letter;
  53.                 }
  54.             else if (this.hittest(_root["solbox5"]) && this.letter == "L") {
  55.                 this._x = _root.solbox5._x;
  56.                 this._y = _root.solbox5._y;
  57.                 _root.solutiontest[4] = this.letter;
  58.                 }
  59.             else if (this.hittest(_root["solbox6"]) && this.letter == "I") {
  60.                 this._x = _root.solbox6._x;
  61.                 this._y = _root.solbox6._y;
  62.                 _root.solutiontest[5] = this.letter;
  63.                 }
  64.             else if (this.hittest(_root["solbox7"]) && this.letter == "A") {
  65.                 this._x = _root.solbox7._x;
  66.                 this._y = _root.solbox7._y;
  67.                 _root.solutiontest[6] = this.letter;
  68.                 }
  69.             else if (this.hittest(_root["solbox8"]) && this.letter == "N") {
  70.                 this._x = _root.solbox8._x;
  71.                 this._y = _root.solbox8._y;
  72.                 _root.solutiontest[7] = this.letter;
  73.                 }
  74.             else if (this.hittest(_root["solbox9"]) && this.letter == "C") {
  75.                 this._x = _root.solbox9._x;
  76.                 this._y = _root.solbox9._y;
  77.                 _root.solutiontest[8] = this.letter;
  78.                 }
  79.             else if (this.hittest(_root["solbox10"]) && this.letter == "E") {
  80.                 this._x = _root.solbox10._x;
  81.                 this._y = _root.solbox10._y;
  82.                 _root.solutiontest[9] = this.letter;
  83.                 }
  84.             else if (this._x > 260 && this._x < 850 && this._y > 300 && this._y < 440 ) {
  85.                 // letters can be dropped in this range // noop
  86.                 }
  87.             else{
  88.                 this._x = this.Xpos;
  89.                 this._y = this.Ypos;
  90.                 }   
  91.             }   // end if !hitsExisting
  92.             _root.CompareSolution();
  93.         };
  94.     }
Flash5 hat aber leider kein "onMouseDown"!! Wie geht man da jetzt ran? hat jemand ne Idee? Wäre für schnelle Ratschläge sehr dankbar !! Falls noch Fragen sind bitte hier posten, bin online...
arcade ist offline   Mit Zitat antworten
Alt 13-10-2005, 12:44   #2 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hi!
Falsh5 hat aber z.B.
ActionScript:
  1. onClipEvent(mouseDown)
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 13-10-2005, 13:12   #3 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Ort: Stuttgart
Beiträge: 7
ActionScript:
  1. // interaction
  2.     _root["slice"+(i+1)].onClipEvent(mouseDown)
  3.         {
  4.         if (this.hitTest(_root._xmouse, _root._ymouse, true))
  5.             {
  6.             this.Xpos = this._x;
  7.             this.Ypos = this._y;
  8.             this.startDrag();
  9.             }
  10.         };

**Fehler** Szene=Szene 1, Ebene=BOX, Bild=3:Zeile 20: Nach '.'-Operator wurde ein Feld erwartet.
_root["slice"+(i+1)].onClipEvent(mouseDown)


Feld??
In diesem Fall: wie kann ich denn dem entsprechenden MC den onClipEvent mitgeben? sollte ich da mit einer with Anweisung arbeiten?
ActionScript:
  1. // interaction
  2. with(_root["slice"+(i+1)])
  3. {
  4. onClipEvent(mouseDown)
  5.  {
  6.  if (this.hitTest(_root._xmouse, _root._ymouse, true))
  7.     {
  8.     this.Xpos = this._x;
  9.     this.Ypos = this._y;
  10.     this.startDrag();
  11.     }
  12.  }
  13. };

Geändert von arcade (13-10-2005 um 13:16 Uhr)
arcade ist offline   Mit Zitat antworten
Alt 13-10-2005, 13:23   #4 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
...nur mal als Info: onMouseDown wird sowieso auf den ganzen Film ausgewertet. Das heißt, ein onMouseDown bzw. onClipEvent(mouseDown) reicht.
Sieht übrigens eher aus, als ob Press und Release deine Freunde wären.
Da die Filme eh aus der Bibliothek attached werden, schreib da halt direkt die on(release) un on(press) Geschichte drauf. Quasi alles was jetzt in der Schleife steht, auf den MC, der attached wird.
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 13-10-2005, 13:41   #5 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Ort: Stuttgart
Beiträge: 7
Sorry, das versteh ich nicht?
1) Innerhalb der Schleife wird der Movie mit attached und benannt
2) on(press) und Freund sind nur bei Schaltflächen möglich und innerhlab der Lib kann ich auch kein onClieEvent hinterlegen.
Vielleicht bin ich auch gerade etwas auf dem Schlauch und du könntest mir mit einem erläuternden Kommntar weiterhelfen. danke.
arcade ist offline   Mit Zitat antworten
Alt 13-10-2005, 13:49   #6 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hi!
Mal ein Beispiel... Habe aber von Flash 5 nicht so den Plan...
Angehängte Dateien
Dateityp: rar bsp.rar (3,5 KB, 1x aufgerufen)
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 13-10-2005, 14:14   #7 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Ort: Stuttgart
Beiträge: 7
Der Ansatz ist gut, das Probelm jedoch liegt in der Zuordnung innerhalb der Schleife.

Bei diesem globalen mouseDown und Drag werden alle Instanzen irgendwie angesprochen und es lässt sich nicht mehr bestimmen wo der Buchstqbe (hier das Quadrat) abgeworfen wird.

Komme so nicht weiter. Vielleicht gehört da noch ein .hittest dazwischen,
aber zudem fehlt auch noch die automatische positionierung des attachten MCs (was in MX leicht über iniObject-Parameter möglich ist. wie aber in Flash 5?)
Angehängte Dateien
Dateityp: rar bsp_loop.rar (4,8 KB, 1x aufgerufen)

Geändert von arcade (13-10-2005 um 14:15 Uhr)
arcade ist offline   Mit Zitat antworten
Alt 13-10-2005, 14:47   #8 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Ort: Stuttgart
Beiträge: 7
Thumbs up

OK, habe innerhalb des onClipEvent(mouseDown) noch weiteres eingebaut
1) Eine Positionierung über eine Hilfsvariable (Speichern letzte Position des Clips ++
2) Ein hittest, dass die genauen Positionierungsdaten des MC abfragt
3) StartDrag nach Hittest
und natürlich das StopDrag() bei mouseUp
Und klasse!!. Es geht und aus meiner anfänglichen Verzweiflung enstand Ferude, Erleichterung und mehr KnowHow.
Vielen Dank.
arcade 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:03 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele