Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 21-04-2005, 20:57   #1 (permalink)
Neuer User
 
Benutzerbild von greyTux
 
Registriert seit: Apr 2005
Ort: Bern
Beiträge: 12
onMouseDown auf dynamisch erstellten MC

Hi alle!

mein problem: ich erstelle für ein puzzle dynamisch 64 MCs, in die dann ein jpg geladen wird, und verteile sie auf der spielfläche.
soweit funktioniert noch alles prima.
allerdings möchte ich dann jedem puzzleteil einen onMouseDown-listener hinzufügen, der startDrag ausführt, hier reagiert leider nichts mehr.

ich bin noch nich so bewandert in AS, verzeiht mir also anfängerfehler

hier mein bisheriger code:

ActionScript:
  1. var i = 0;
  2.     for (y=0; y<pieces; y++) {
  3.         for (x=0; x<pieces; x++) {
  4.             _root.createEmptyMovieClip("teil"+i, i);
  5.             _root["teil"+i].onMouseDown=function(){
  6.                     trace("maus wurde gedrückt");
  7.                  }
  8.             teil[i] = eval("_root.teil"+i);
  9.             teil[i]._x = width*x;
  10.             teil[i]._y = height*y;
  11.             if (i<9) {
  12.                 var teilNummer = "0"+(i+1);
  13.             } else {
  14.                 var teilNummer = (i+1);
  15.             }
  16.             teil[i].loadMovie("teil_"+teilNummer+".jpg");
  17.             i++;
  18.         }
  19.     }
greyTux ist offline   Mit Zitat antworten
Alt 21-04-2005, 21:28   #2 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Hy.

Nimm doch onPress statt onMouseDown.
Würde ich einfach mal so spontan sagen.
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 21-04-2005, 21:32   #3 (permalink)
Neuer User
 
Benutzerbild von greyTux
 
Registriert seit: Apr 2005
Ort: Bern
Beiträge: 12
da tut sich leider auch nichts

ich nehme eher an, dass ich schon beim MC instanzieren oder beim drauf zugreifen etwas falsch mache... aber was!?
greyTux ist offline   Mit Zitat antworten
Alt 21-04-2005, 21:42   #4 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Na nach näherem Hinsehen,
sieht der Code auch etwas merkwürdig aus.

Was ist teil[i]?
was ist width?

warum nicht _root["teil"+i]....?
warum nicht _width?

Ist piecies bekannt?
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 21-04-2005, 21:51   #5 (permalink)
Neuer User
 
Benutzerbild von greyTux
 
Registriert seit: Apr 2005
Ort: Bern
Beiträge: 12
ok, sorry, habe der einfachheit halber nicht den ganzen code gepostet.

hier also alle benötigten teile:

ActionScript:
  1. var teil = new Array();
  2.  
  3. function init(width, height, pieces) {
  4.     var i = 0;
  5.     for (y=0; y<pieces; y++) {
  6.         for (x=0; x<pieces; x++) {
  7.             _root.createEmptyMovieClip("teil"+i, i);
  8.             _root["teil"+i].onPress=function(){
  9.                     trace("maus wurde gedrückt");
  10.          }
  11.             teil[i] = eval("_root.teil"+i);
  12.             teil[i]._x = width*x;
  13.             teil[i]._y = height*y;
  14.             if (i<9) {
  15.                 var teilNummer = "0"+(i+1);
  16.             } else {
  17.                 var teilNummer = (i+1);
  18.             }
  19.             teil[i].loadMovie("teil_"+teilNummer+".jpg");
  20.             i++;
  21.         }
  22.     }
  23. }
greyTux ist offline   Mit Zitat antworten
Alt 25-04-2005, 08:34   #6 (permalink)
Neuer User
 
Benutzerbild von greyTux
 
Registriert seit: Apr 2005
Ort: Bern
Beiträge: 12
kann mir hier niemand helfen?
ich denke, dass dies sicher ein funktion ist, welche oft gebraucht wird...

nochmals ganz kurz mein problem: ein movieclip muss dynamisch erstellt werden, und anklickbar sein.
wenn ich aktionen DIREKT in den MC schreibe (z.B. onClipEvent(mouseDown) ... ), gibt es den fehler, dass diese aktion nur bei instanzierten MCs erlaubt ist. Wenn ich, wie oben gepostet, die aktionen direkt beim instanzieren zuweise, funktioniert es auch nicht (ohne Fehlermeldung)
greyTux ist offline   Mit Zitat antworten
Alt 25-04-2005, 08:39   #7 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
PHP-Code:
 _root["teil"+i].onRelease=function(){
                                
trace("maus wurde gedrückt");
                        } 
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 25-04-2005, 08:57   #8 (permalink)
...
 
Benutzerbild von flash bier
 
Registriert seit: Nov 2001
Beiträge: 1.227
wenn Du per loadMovie etwas in einen MovieClip reinlädst, verlierst du hierdurch sämtliche Event-Handler und sonstigen Code/Variablen, die diesem MovieClip zugewiesen sind.
Dein teil[i] ist sozusagen völlig leer und besteht dann nurnoch aus dem Bild, welches du da reinlädst.

Um dieses Problem zu lösen könntest du einfach in teil[i] nochmals einen MovieClip erstellen (createEmptyMovieClip) und in diesen lädst du das Bild rein.
So bleiben alle Variablen und Handler auf teil[i] erhalten und Dein Bild ist trotzdem in teil[i] enthalten.

ActionScript:
  1. var teil = new Array();
  2.  
  3. function init(width, height, pieces) {
  4.         var i = 0;
  5.         for (y=0; y<pieces; y++) {
  6.                 for (x=0; x<pieces; x++) {
  7.                         _root.createEmptyMovieClip("teil"+i, i);
  8.                         _root["teil"+i].onPress=function(){
  9.                                 trace("maus wurde gedrückt");
  10.                         }
  11.                        teil[i] = eval("_root.teil"+i);
  12.                        teil[i]._x = width*x;
  13.                        teil[i]._y = height*y;
  14.                         if (i<9) {
  15.                                 var teilNummer = "0"+(i+1);
  16.                         } else {
  17.                                 var teilNummer = (i+1);
  18.                         }
  19.                         teil[i].createEmptyMovieClip("image",1);// Hier noch einen MC erstellt
  20.                         teil[i].image.loadMovie("teil_"+teilNummer+".jpg");// der das Bild aufnimmt
  21.                         i++;
  22.                 }
  23.         }
  24. }

MfG flash bier
__________________
Schweig oder sprich Worte, die besser sind als Schweigen !
flash bier ist offline   Mit Zitat antworten
Alt 25-04-2005, 08:59   #9 (permalink)
Neuer User
 
Benutzerbild von greyTux
 
Registriert seit: Apr 2005
Ort: Bern
Beiträge: 12
danke für die antwort. leider schaff ichs nicht

hier mal meine dateien:download

das ansatz ist ja: die MCs werden erstellt und mit einem teilbild gefüllt. jeden MC sollte man dann mit der Maus verschieben können.

...sry, war wohl zu langsam... werds gleich mal probieren
__________________
Kinder, lernt nicht, sonst müßt ihr später arbeiten.
greyTux ist offline   Mit Zitat antworten
Alt 25-04-2005, 09:11   #10 (permalink)
Neuer User
 
Benutzerbild von greyTux
 
Registriert seit: Apr 2005
Ort: Bern
Beiträge: 12
okay, soweit geht das! danke flash bier

leider komme ich wieder nicht weiter: der MC sollte mit der maus gezogen werden. also habe folgenden code eingefügt:

ActionScript:
  1. _root["teil"+i].onMouseDown=function(){
  2.     _root["teil"+i].startDrag();
  3. }
  4. _root["teil"+i].onMouseUp=function(){
  5.     stopDrag();
  6. }

da tut sich leider nichts greife ich hier falsch auf den MC _root["teil"+i] zu? könnte ich das ganze nich auch weiter unten mit

ActionScript:
  1. teil[i].onMouseDown=function(){
  2.   teil[i].startDrag();
  3. }
  4. teil[i].onMouseUp=function(){
  5.   stopDrag();
  6. }

...oder so ähnlich machen?
__________________
Kinder, lernt nicht, sonst müßt ihr später arbeiten.

Geändert von greyTux (25-04-2005 um 09:17 Uhr)
greyTux ist offline   Mit Zitat antworten
Alt 25-04-2005, 19:54   #11 (permalink)
...
 
Benutzerbild von flash bier
 
Registriert seit: Nov 2001
Beiträge: 1.227
mit "this" bezieht sich der Code in onPress auf das Objekt selbst.
startDrag hast du auch noch falsch gecoded:

ActionScript:
  1. _root["teil"+i].onPress=function(){
  2.         this.startDrag(true);
  3. }
  4. _root["teil"+i].onRelease=function(){
  5.         this.stopDrag();
  6. }

MfG flash bier
__________________
Schweig oder sprich Worte, die besser sind als Schweigen !
flash bier ist offline   Mit Zitat antworten
Alt 26-04-2005, 09:11   #12 (permalink)
Neuer User
 
Benutzerbild von greyTux
 
Registriert seit: Apr 2005
Ort: Bern
Beiträge: 12
alles ok. Danke für die Hilfe!!!
vielleicht muss ich mich später wieder melden...
__________________
Kinder, lernt nicht, sonst müßt ihr später arbeiten.
greyTux 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 23:52 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele