Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 12-10-2003, 18:59   #1 (permalink)
*warg*
 
Registriert seit: May 2002
Ort: Berlin
Beiträge: 261
startDrag& attachMovie

hmm .. hab noch so ein kleines problem ...
in HZL
ActionScript:
  1. _root.mc_ins.onPress = function() {
  2.     startDrag(_root.mc_ins);
  3. };
  4. _root.mc_ins.onRelease = function() {
  5.     stopDrag();
  6. };
und auf nem button
ActionScript:
  1. on (release) {
  2.     _root.attachMovie("mc", "mc_ins", 1);
  3.     with (_root.mc_ins) {
  4.         _x = 200;
  5.         _y = 150;
  6.     }
  7. }

funktioniert nicht ... d.h. der button funzt prima .. aber das erste AS in der HZL will nicht .. zumindest nicht mit instanzen die mit attachMovieClip enstanden sind. Wie kann ich das bewerkstelligen, dass ich den attachtend ( ja . super eingedeutschtes english ) Dragen (und nochmal :P) kann?

Gruß Tuffy
__________________
"nimm dir das leben - es gehört dir!"
"die realität versucht mich einzuholen - doch ich bin schneller !"
Tuffyfant ist offline   Mit Zitat antworten
Alt 12-10-2003, 19:12   #2 (permalink)
_______________
 
Benutzerbild von son yu
 
Registriert seit: Mar 2003
Ort: !Schnitzerland
Beiträge: 2.003
arbeite objekt orientiert

also weise deinen attachten mc einer bestehenden klasse zu,
die schon die eigenschaften besitzt

beispiel folgt gleich

schöne grüße
__________________
ey… be cool!

Mac OS-X 10.5.6, Safari Version 4 Public Beta (5528.16), on PowerBook 12" G4 1,5 GHz,
1,25 GB RAM, FlashPlayer 9 is auch noch da, wenn ich Lust habe…
son yu ist offline   Mit Zitat antworten
Alt 12-10-2003, 19:13   #3 (permalink)
*warg*
 
Registriert seit: May 2002
Ort: Berlin
Beiträge: 261
gut das ein beispiel folgt .. weil richtig OOP hab ich eigentlich noch nie gearbeitet ...
wäre nett, wenn du mir gleich dazu ein paar erklärungen schreiben könntest *ggg*

Gruß Tuffy
__________________
"nimm dir das leben - es gehört dir!"
"die realität versucht mich einzuholen - doch ich bin schneller !"
Tuffyfant ist offline   Mit Zitat antworten
Alt 12-10-2003, 19:56   #4 (permalink)
_______________
 
Benutzerbild von son yu
 
Registriert seit: Mar 2003
Ort: !Schnitzerland
Beiträge: 2.003
erstell nen mc auf der bühne nen die instanz auf der bühne dein_btn
(am besten nimmst nen viereck 25x60)

ja den nehmen wir auch gleich zurm export ins erste frame,
da nimmste ibutt

mmh und das ins erste frame in ne leere ebene
ActionScript:
  1. function mc() {
  2.     this._alpha = 70;
  3. }
  4. mc.prototype = new MovieClip();
  5. mc.prototype.setpos = function(x, y) {
  6.     this._x = x;
  7.     this._y = y;
  8. };
  9. mc.prototype.drag = function() {
  10.     this._x = _xmouse;
  11.     this._y = _ymouse;
  12. };
  13. mc.prototype.onPress = function() {
  14.     this.startDrag();
  15. };
  16. mc.prototype.onRelease = function(){
  17.     this.stopDrag();
  18. }
  19.                            
  20. Object.registerClass("ibutt", mc);
  21. //alle movieclips die als verknüpfungsname ibutt haben,
  22. //werden nun der klasse mc zugeordnet und
  23. //übernehmen die eigenschaften der klasse mc
  24. //das gilt für alle insatnzen des mc's die attached werden
  25. dein_btn.onRelease = function() {
  26.     _root.attachMovie("ibutt", "dein_mc", 1);
  27.     dein_mc.setpos(100, 200);
  28. };
  29. stop();

sorry für die knappe beschreibung,
aber ebay ist zur zeit heiße phase
__________________
ey… be cool!

Mac OS-X 10.5.6, Safari Version 4 Public Beta (5528.16), on PowerBook 12" G4 1,5 GHz,
1,25 GB RAM, FlashPlayer 9 is auch noch da, wenn ich Lust habe…
son yu ist offline   Mit Zitat antworten
Alt 12-10-2003, 20:50   #5 (permalink)
*warg*
 
Registriert seit: May 2002
Ort: Berlin
Beiträge: 261
ok danke . das script funzt super .Dickes Dankeschön !!!dann kann ich meine arbeitfortsetzten ..

und mal zum script ..
ok . du erstellst einen prototyp ..
ActionScript:
  1. mc.prototype = new MovieClip();

ActionScript:
  1. mc.prototype.setpos = function(x, y) {
  2.         this._x = x;
  3.         this._y = y;
  4. //und
  5.  
  6.  
  7. dein_mc.setpos(100, 200);
sprich _x von dein_mc wird auf 100 und _y auf 200 gesetzt ..



das ist beides auch klar ..
ActionScript:
  1. mc.prototype.onPress = function() {
  2.         this.startDrag();
  3. };
  4. mc.prototype.onRelease = function(){
  5.         this.stopDrag();
  6. }

aber mir ist die präsenz dieser zeile unklar
ActionScript:
  1. mc.prototype.drag = function() {
  2.         this._x = _xmouse;
  3.         this._y = _ymouse;
  4. };
..
schließlich wird doch die funktion drag durch die beiden oberen funktionen onRelease und onPress schon durchgeführt .. !?!
hab sie probeweiser gelöscht und es geht auch ohne .. aber würde gern deinen gedankengang dahinter wissen .. mal angenommen ich hätte mc.prototype.onPress mc.prototype.onRelease nicht gesetzt .. so könnte man doch sicher mit mc.prototype.drag die instanz draggen .. aber wie würde ich in dem fall diese drag funktion korekt aufrufen aufrufen ?
es sieht ja fast so aus als würdest du mit mc.prototype.drag startDrag(), ersetzten wollen es aber dann doch vergessen oder einfach gelassen hättest *gg*

Fruß Nachti
__________________
"nimm dir das leben - es gehört dir!"
"die realität versucht mich einzuholen - doch ich bin schneller !"
Tuffyfant ist offline   Mit Zitat antworten
Alt 12-10-2003, 22:34   #6 (permalink)
_______________
 
Benutzerbild von son yu
 
Registriert seit: Mar 2003
Ort: !Schnitzerland
Beiträge: 2.003
upsi da war ich wohl etwas abgelenkt.
das wäre für die prototype drag noch nötig...
ActionScript:
  1. mc.prototype.drag = function() {
  2.     this._x = _xmouse;
  3.     this._y = _ymouse;
  4. };
  5. mc.prototype.onPress = function() {
  6.     this.onMouseMove = this.drag;
  7. };
  8. mc.prototype.onMouseUp = function() {
  9.     this.onMouseMove = null;
  10. };
aber geht ja auch so
ActionScript:
  1. mc.prototype.onPress = function() {
  2.         this.startDrag();
  3. };
  4. mc.prototype.onRelease = function(){
  5.         this.stopDrag();
  6. }
gutes beispiel für zwei verschiedene lösungen...
der unterschied dürfte selbsterklärend sein oder?
bei fragen fragen...

schöne grüße und gut nacht
__________________
ey… be cool!

Mac OS-X 10.5.6, Safari Version 4 Public Beta (5528.16), on PowerBook 12" G4 1,5 GHz,
1,25 GB RAM, FlashPlayer 9 is auch noch da, wenn ich Lust habe…

Geändert von son yu (12-10-2003 um 22:35 Uhr)
son yu ist offline   Mit Zitat antworten
Alt 12-10-2003, 23:29   #7 (permalink)
*warg*
 
Registriert seit: May 2002
Ort: Berlin
Beiträge: 261
sorry . aber noch ne frage . ich würd sowas ähnliches gerne für einen button (dein_btn) machen, den ich öfter aufrufen werde.
meine vorstellung:
6 instanzen des Buttons sollen auf dem bildschirm positioniert erscheinen (ich denke, dies werde ich mit einer for schleife und attachMovieClip machen)
und jede instanz soll einen movie attachen
was schreibe ich dann ?
ActionScript:
  1. function mc() {}
  2.  
  3. mc.prototype = new MovieClip();
  4. mc.prototype.setpos = function(x, y) {
  5.     this._x = x;
  6.     this._y = y;
  7. };
  8.  
  9. mc.prototype.onRelease = function() {
  10.     root.attachMovie("fenster", "Fenster_ins", 1);
  11.     with (_root.Fenster_ins) {
  12.         _x = 200;
  13.         _y = 150;
  14.     };
  15. };
  16. Object.registerClass("dein_btn", mc);
  17. //alle movieclips die als verknüpfungsname ibutt haben,
  18. //werden nun der klasse mc zugeordnet und
  19. //übernehmen die eigenschaften der klasse mc
  20. //das gilt für alle insatnzen des mc's die attached werden
  21. stop();
  22.  
  23. //und rufe die buttons per
  24. for(i=0;i>6,i++) {
  25. this.attachMovieClip("dein_btn","dein_btn"+i,i+1}

1.) kann das funktionieren ?
2.) wie schaffe ich es, dass die buttons mit einem _y-abstand 20 positioniert werden ? also
["dein_btn"+1] sollte _x = 0 und _y = 0 ,
["dein_btn"+2] _x = 0 und _y = 20
["dein_btn"+3] _x = 0 und _y = 40
__________________
"nimm dir das leben - es gehört dir!"
"die realität versucht mich einzuholen - doch ich bin schneller !"
Tuffyfant ist offline   Mit Zitat antworten
Alt 13-10-2003, 05:59   #8 (permalink)
_______________
 
Benutzerbild von son yu
 
Registriert seit: Mar 2003
Ort: !Schnitzerland
Beiträge: 2.003
morgen,

ActionScript:
  1. for( var i=0; i<6, i++) {
  2.         this.attachMovieClip("dein_btn","dein_btn" + i, i+1);
  3. this["dein_btn" + i].setpos( 0, 20*i);
  4. //jetzt noch ne hilfsvariable setzen,
  5. //weil willst ja auch später den inhalt holen
  6. //der zum button gehört
  7. this["dein_btn" + i].id = i;
  8. }
wozu haben wir den sonst so ne schöne funktion namens "setpos"

so die on release können wir auch noch bissl ausschmücken
ActionScript:
  1. mc.prototype.onRelease = function() {
  2.         trace("ich bin buton nummer: " + (this.id+1));
  3. };
mit der hilfsvaraiblen kannst du nun wünderschön ein array ansteuern...
ActionScript:
  1. //das array erstellen, kommt ganz oben hin
  2. mein_array = new Array( "eins", "zwo", "drei", "vier", "fünf", "sechs");
  3. //der neue onRelease
  4. mc.prototype.onRelease = function() {
  5.         trace(mein_array[this.id]);
  6. };
  7. //oder für ein textfeld
  8. for( var i=0; i<6, i++) {
  9.         this.attachMovieClip("dein_btn","dein_btn" + i, i+1);
  10. this["dein_btn" + i].setpos( 0, 20*i);
  11. //vorraussetzung es liegt ein textfeld mit dem instanznamen
  12. // dein_txt im mc dein_btn
  13. this["dein_btn" + i].dein_txt.text = mein_array[i];
  14. this["dein_btn" + i].id = i;
  15. }

schöne grüße
__________________
ey… be cool!

Mac OS-X 10.5.6, Safari Version 4 Public Beta (5528.16), on PowerBook 12" G4 1,5 GHz,
1,25 GB RAM, FlashPlayer 9 is auch noch da, wenn ich Lust habe…
son yu ist offline   Mit Zitat antworten
Alt 13-10-2003, 11:59   #9 (permalink)
*warg*
 
Registriert seit: May 2002
Ort: Berlin
Beiträge: 261
so hab jetzt im ersten frame dieses script
ActionScript:
  1. mein_array = new Array("eins", "zwo", "drei", "vier", "fünf", "sechs");
  2.  
  3.  
  4. function mc() {
  5. }
  6. mc.prototype = new MovieClip();
  7. mc.prototype.setpos = function(x, y) {
  8.     this._x = x;
  9.     this._y = y;
  10. };
  11. mc.prototype.onRelease = function() {
  12.     trace(mein_array[this.id]);
  13. };
  14. Object.registerClass("dein_btn", mc);
  15.  
  16.  
  17. stop();
  18. for (i=0; i<6; i++) {
  19.     _root.attachMovieClip("deinb_btn", "dein_btn"+i, i+1);
  20.     _root["dein_btn"+i].setpos(0, 20*i);
  21.     _root["dein_btn"+i].id = i;
  22. }
aber irgendwie tauchen die instanzen von "dein_btn" einfach nicht auf...
__________________
"nimm dir das leben - es gehört dir!"
"die realität versucht mich einzuholen - doch ich bin schneller !"
Tuffyfant ist offline   Mit Zitat antworten
Alt 13-10-2003, 19:27   #10 (permalink)
_______________
 
Benutzerbild von son yu
 
Registriert seit: Mar 2003
Ort: !Schnitzerland
Beiträge: 2.003
Zitat:
Geschrieben von Tuffyfant
[...]
ActionScript:
  1. for (i=0; i<6; i++) {
  2.     _root.attachMovieClip("deinb_btn", "dein_btn"+i, i+1);
  3.     _root["dein_btn"+i].setpos(0, 20*i);
  4.     _root["dein_btn"+i].id = i;
  5. }
[...]
hast zwei schreibfehler drin
sorry den einen hab ich wohl heut morgen gleich mit übernommen...
also hier korigiert

ActionScript:
  1. for (i=0; i<6; i++) {
  2.     _root.attachMovie("dein_btn", "dein_btn"+i, i+1);
  3.     _root["dein_btn"+i].setpos(0, 20*i);
  4.     _root["dein_btn"+i].id = i;
  5. }

und hier nochmal ne verbesserung,
wir machen unsere for schleife dynamisch abhängig von der array länge...
ActionScript:
  1. var mein_array = new Array("eins", "zwo", "drei", "vier", "fünf", "sechs");
  2. function mc() {
  3.     this._alpha = 100;
  4. }
  5. var mc.prototype = new MovieClip();
  6. mc.prototype.setpos = function(x, y) {
  7.     this._x = x;
  8.     this._y = y;
  9. };
  10. mc.prototype.onRelease = function() {
  11.     trace(mein_array[this.id]);
  12. };
  13. Object.registerClass("dein_btn", mc);
  14. for (var i = 0; i<mein_array.length; i++) {
  15.     _root.attachMovie("dein_btn", "dein_btn"+i, i+1);
  16.     _root["dein_btn"+i].setpos(0, 60*i);
  17.     _root["dein_btn"+i].dein_txt.text = mein_array[i];
  18.     _root["dein_btn"+i].id = i;
  19. }
  20. stop();
__________________
ey… be cool!

Mac OS-X 10.5.6, Safari Version 4 Public Beta (5528.16), on PowerBook 12" G4 1,5 GHz,
1,25 GB RAM, FlashPlayer 9 is auch noch da, wenn ich Lust habe…
son yu ist offline   Mit Zitat antworten
Alt 15-10-2003, 11:57   #11 (permalink)
*warg*
 
Registriert seit: May 2002
Ort: Berlin
Beiträge: 261
ok . danke für deine hilfe .. erstmal*g* .. ich denke , ich werde später noch ein wenig gebrauchen.. aber .. später *g* ..
ich hab das script ein wenig umgeschrieben und es funzt super .. ein dickes dankeschön !!!

ActionScript:
  1. mein_array = new Array("eins", "zwo", "drei", "vier", "fünf", "sechs");
  2. function mc() {
  3.     this._alpha = 100;
  4. }
  5. mc.prototype.onRelease = function() {
  6.     trace(mein_array[this.id]);
  7. };
  8. Object.registerClass("dein_btn", mc);
  9.  
  10. for (var i = 0; i<mein_array.length; i++) {
  11.     _root.attachMovie("dein_btn", "dein_btn"+i, i+1);
  12.     with (_root["dein_btn"+i]) {
  13.         _x = 100;
  14.         _Y = 60*i;
  15.     }
  16.     _root["dein_btn"+i].id = i;
  17. }
  18. stop();

nochmals DAAAAAAAAANKE schöööön :-)

Gruß TUffy
übrigens ... ich hab bemerkt .. das ganze script functioniert nicht, wenn "dein_btn" in der bibliothek eine schaltfläche ist.
__________________
"nimm dir das leben - es gehört dir!"
"die realität versucht mich einzuholen - doch ich bin schneller !"
Tuffyfant ist offline   Mit Zitat antworten
Alt 15-10-2003, 12:06   #12 (permalink)
_______________
 
Benutzerbild von son yu
 
Registriert seit: Mar 2003
Ort: !Schnitzerland
Beiträge: 2.003
Zitat:
Geschrieben von Tuffyfant
[...]
übrigens ... ich hab bemerkt .. das ganze script functioniert nicht, wenn "dein_btn" in der bibliothek eine schaltfläche ist.
ist auch irgendwie logisch oder?
nen buton ist kein movieclip, er ist ja auch ganz anders aufgebaut..

schöne grüße
__________________
ey… be cool!

Mac OS-X 10.5.6, Safari Version 4 Public Beta (5528.16), on PowerBook 12" G4 1,5 GHz,
1,25 GB RAM, FlashPlayer 9 is auch noch da, wenn ich Lust habe…
son yu ist offline   Mit Zitat antworten
Alt 15-10-2003, 12:16   #13 (permalink)
*warg*
 
Registriert seit: May 2002
Ort: Berlin
Beiträge: 261
jaa *schäm* tut mir leiod . so versiert bin ich ja noch nciht .. aber ich befürchte das war auch einer meiner fehler in nem anderen Flash file .. dank dir hab ich mir jetz aber dieses ganze prototype geschreibe gestern ausführlichst bei meiner freundin angeschaut und viel zu viel damit rumgespielt .. aber jetzt hab ichs kapiert.
.
jetzt bräuchte ich nur noch mein_array umschreiben rollout und rollover einfügen etc. ... in meinem kopf gleiten gerade geistesblitze *g* .. aber eine frage hab ich noch (mit der ich mich gestern abend schon beschäftigt habe )

das
ActionScript:
  1. for (var i = 0; i<mein_array.length; i++) {
  2.         _root.attachMovie("dein_btn", "dein_btn"+i, i+1);
  3.         with (_root["dein_btn"+i]) {
  4.                 _x = 100;
  5.                 _Y = 60*i;
  6.         }
  7.         _root["dein_btn"+i].id = i;
  8. }
würde ich gerne auf einen button legen. die funktion des buttons ist einfach. beim ersten klick, soll er die for schleife ausführen
wenn ich ihn ein zweitesmal klicke soll er

ActionScript:
  1. for (var i = 0; i<mein_array.length; i++) {
  2.         removeMovieClip(_root["dein_btn"+i])
  3. }
ausführen. ich weiß einfach nur nicht, wie ich ihm sagen soll, welches von beiden scripts er zu tun hat ..
beim 3 klick soll er es wieder öfnnen .. beim 4 schließen.
kurz : "wenn mc attached ..dann remove sie . wenn removed dann attache sie"

kannst du mir dabei auch noch helfen ? *G*

Gruß TUffy
__________________
"nimm dir das leben - es gehört dir!"
"die realität versucht mich einzuholen - doch ich bin schneller !"
Tuffyfant ist offline   Mit Zitat antworten
Alt 15-10-2003, 12:18   #14 (permalink)
_______________
 
Benutzerbild von son yu
 
Registriert seit: Mar 2003
Ort: !Schnitzerland
Beiträge: 2.003
aber eins mußt du mir nochmal erklären, wieso schmeißt du eine funktion deren sinn darin bestand immer die position des objekts neu zuweisen zu können, raus?
und tauschts durch eine nicht verständliche with prozedure...
das ist dein as
Zitat:
Geschrieben von Tuffyfant

ActionScript:
  1. mein_array = new Array("eins", "zwo", "drei", "vier", "fünf", "sechs");
  2. function mc() {
  3.     this._alpha = 100;
  4. }
  5. mc.prototype.onRelease = function() {
  6.     trace(mein_array[this.id]);
  7. };
  8. Object.registerClass("dein_btn", mc);
  9.  
  10. for (var i = 0; i<mein_array.length; i++) {
  11.     _root.attachMovie("dein_btn", "dein_btn"+i, i+1);
  12.     with (_root["dein_btn"+i]) {
  13.         _x = 100;
  14.         _Y = 60*i;
  15.     }
  16.     _root["dein_btn"+i].id = i;
  17. }
  18. stop();
Zitat:
Geschrieben von son yu

ActionScript:
  1. var mein_array = new Array("eins", "zwo", "drei", "vier", "fünf", "sechs");
  2. function mc() {
  3.         this._alpha = 100;
  4. }
  5. var mc.prototype = new MovieClip();
  6. mc.prototype.setpos = function(x, y) {
  7.         this._x = x;
  8.         this._y = y;
  9. };
  10. mc.prototype.onRelease = function() {
  11.         trace(mein_array[this.id]);
  12. };
  13. Object.registerClass("dein_btn", mc);
  14. for (var i = 0; i<mein_array.length; i++) {
  15.         _root.attachMovie("dein_btn", "dein_btn"+i, i+1);
  16.         _root["dein_btn"+i].setpos(0, this._height*i);
  17.         _root["dein_btn"+i].dein_txt.text = mein_array[i];
  18.         _root["dein_btn"+i].id = i;
  19. }
  20. stop();
mit der prototype setpos kann ich bei irgendeinem ereignis, sofort dem buton oder allen ne neue position zurordnen
bsp:
ActionScript:
  1. mc.prototype.onRelease = function(){
  2. this.setpos(this._x+20,this._y);
  3. }

schöne grüße
__________________
ey… be cool!

Mac OS-X 10.5.6, Safari Version 4 Public Beta (5528.16), on PowerBook 12" G4 1,5 GHz,
1,25 GB RAM, FlashPlayer 9 is auch noch da, wenn ich Lust habe…
son yu ist offline   Mit Zitat antworten
Alt 15-10-2003, 12:24   #15 (permalink)
*warg*
 
Registriert seit: May 2002
Ort: Berlin
Beiträge: 261
wieso denn "nicht verständliche" with prozedur ? ..
Zitat:
mit der prototype setpos kann ich bei irgendeinem ereignis, sofort dem buton oder allen ne neue position zurordnen
in dem bsp. wird das zuweisen neuer positionen unnötig sein :-)
aber wahscheinlich hast du recht und ich sollte lieber mit prototype.setPos arbeiten .... womöglich werde ich es irgendwanneinmal gebrauchen.

Gruß Tuffy
__________________
"nimm dir das leben - es gehört dir!"
"die realität versucht mich einzuholen - doch ich bin schneller !"
Tuffyfant 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 10:12 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele