Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-04-2005, 08:13   #1 (permalink)
VISIONcom
 
Registriert seit: Feb 2004
Ort: Luzern (CH)
Beiträge: 223
Question Dynamisches Tweening

Hallo Zusammen

Ich erstelle per ActionScript ein acht Spalten acht Quadrate (via AttachMovie).
Nun möchte ich die per AS animieren. Das heisst konkret die Türme aus quadrate sollen sich bewegen wie ein Gras im Wind (von einer seite zur anderen seit schwanken!). Hat jemand eine idee wie ich das anstellen könnte.
Bin ein wenig am schlag. Das gesamte muss laut vorgabe wie AS gelöst werden!

Hilfe!?!

Gruss
Chris
visioncom ist offline   Mit Zitat antworten
Alt 07-04-2005, 09:22   #2 (permalink)
tracer
 
Benutzerbild von andretti
 
Registriert seit: Jun 2004
Beiträge: 4.415
aloha!

als denkanstoss:

sieh nicht die schaukelbewegung als ganzes, sondern jedes quadrat für sich;

erstelle eine function mit parameter für die weglänge

in dieser function schreibst du die hin- und herbewegung des quadrats;

und jedes quadrat ruft dann diese function auf;
die quadrate werden folgendermaßen benannt, um reihenmäßig eine synchrone schaukelbewegung zu erreichen:
von oben links nach unten rechts:
MC_q1 MC_q2c MC_q3.......MC_q8
.
.
.
.
.
.
MC_q57.................................MC_q64
ich hoffe, meine lösung ist machbar .......:
ActionScript:
  1. Movieclip.prototype.schaukeln = function(position,pos1,pos2){
  2. dir = "left";
  3.         this.onEnterFrame = function() {
  4.                 if (dir == "left" && this._x>pos1) {
  5.                         this._x -= .75;
  6.                 } else {
  7.                         dir = "right";
  8.                 }
  9.                 if (dir == "right" && this._x<pos2) {
  10.                         this._xscale += .75;
  11.                 } else {
  12.                         dir = "left";
  13.                         //delete this.onEnterFrame;
  14.                 }
  15.         };
  16.  
  17.  
  18.  
  19. }
  20.  
  21. // die/der aufrufer:
  22. //die obersten haben den längsten weg, die untersten gar keinen......
  23. //die obersten 8 quadrate horizontal:
  24. for (a = 1;a<9;i++){
  25. _root["MC_q"+a].schaukeln("70","170");
  26. }
  27. //die darunter liegenden:
  28. for (b = 9;b<17;b++){
  29. _root["MC_q"+b].schaukeln("60","120");
  30. }
  31. //und so weiter und so weiter:
  32. for (c= 17;c<25;c++){
  33. _root["MC_q"+c].schaukeln("50","100");
  34. }
  35. for (d= 25;d<33;d++){
  36. _root["MC_q"+d].schaukeln("40","80");
  37. }
  38. for (e= 33;e<41;e++){
  39. _root["MC_q"+e].schaukeln("30","60");
  40. }
  41. for (f= 41;f<49;f++){
  42. _root["MC_q"+f].schaukeln("20","40");
  43. }
  44. for (g= 49;g<57;g++){
  45. _root["MC_q"+g].schaukeln("10","20");
  46. }
  47. for (h= 57;h<65;h++){
  48. _root["MC_q"+h].schaukeln("5","10");
  49. }

gleich vorweg:
ich habe leider keine möglichkeit, das script zu testen, (no flash inside )
mögliche fehlerquellen:

die variablen links und rechts gehören evt getauscht;
bei der for schleife ist evt ein haken, aber mit hiolfe anderer im forum kann man das sicher beheben;
die werte in den klammern bei der for-schleife musst du auf deine bedürfnisse ändern:
_x des quadrates +- maximaler bewegung;
__________________
Viola per Sempre
Alle Angaben ohne Gewehr!
trace your open mind in variables !
andretti
ActionScript Dictionary

Geändert von andretti (07-04-2005 um 13:45 Uhr)
andretti ist offline   Mit Zitat antworten
Alt 07-04-2005, 10:24   #3 (permalink)
VISIONcom
 
Registriert seit: Feb 2004
Ort: Luzern (CH)
Beiträge: 223
danke für deine hilfe! Werde es gleich einmal umsetzten und mich anschliessend wieder melden....

Danke für die Hilfe....
visioncom ist offline   Mit Zitat antworten
Alt 07-04-2005, 11:11   #4 (permalink)
VISIONcom
 
Registriert seit: Feb 2004
Ort: Luzern (CH)
Beiträge: 223
Ich bin es nochmals! Bin jetzt soweit das der Movieclip.prototype.schaukeln ohne fehler kompiliert werden kann. Nun wird aber die funktion schaukel nicht aufgerufen bzw. flash sagt immer, dass das Script den Film verlangsamt. Wenn ich diese Meldung mit "Ja" bestätige kommt die meldung nach einer weile wieder. Bei nein komme ich zum Film jedoch ohne die Schaukel-Funktion!

Was mach ich falsch?
(Diese Prototypen habe ich noch nie hin bekommen!)
visioncom ist offline   Mit Zitat antworten
Alt 07-04-2005, 11:49   #5 (permalink)
tracer
 
Benutzerbild von andretti
 
Registriert seit: Jun 2004
Beiträge: 4.415
aloha!

am besten .fla hochladen, script posten;
__________________
Viola per Sempre
Alle Angaben ohne Gewehr!
trace your open mind in variables !
andretti
ActionScript Dictionary
andretti ist offline   Mit Zitat antworten
Alt 07-04-2005, 12:41   #6 (permalink)
VISIONcom
 
Registriert seit: Feb 2004
Ort: Luzern (CH)
Beiträge: 223
Hier mein Code und Fla

ActionScript:
  1. Movieclip.prototype.schaukeln = function (pos1,pos2){
  2.     var zeit = setInterval(function(){
  3.         dir = "left";
  4.         this.onEnterFrame = function() {
  5.             if (dir == "left" && this._x>pos1) {
  6.                 this._x -= .75;
  7.             }
  8.             else {
  9.                 dir = "right";
  10.             }
  11.            
  12.             if (dir == "right" && this._x<pos2) {
  13.                 this._xscale += .75;
  14.            
  15.             }
  16.             else {
  17.                 dir = "left";
  18.             }
  19.         };
  20.     }, delay)
  21. }
  22. // Allgemeine Values
  23.  anz = 10;
  24.  startX = 0;
  25.  startY = 0;
  26.  pX = 16.4;
  27.  pY = 16.4;
  28.  count = 0;
  29.  rCount = 0;
  30.  alphaR = 1.5;
  31.  
  32. for( rCount=0; rCount < anz; rCount++){
  33.     if( startY == 0 ){ startY = 92.6; }
  34.     else{ startY += pY; startX = 0;}
  35.     alpha = alphaR * (rCount + 1);
  36.     for( cCount=0; cCount < anz; cCount++){
  37.         if( startX == 0 ){ startX = 12.7; }
  38.         else{ startX += pX }
  39.         this.attachMovie( "gr_quadrat", "mc_"+rCount+"_"+cCount, count++ );
  40.         this["mc_"+rCount+"_"+cCount]._x = startX;
  41.         this["mc_"+rCount+"_"+cCount]._y = startY;
  42.         this["mc_"+rCount+"_"+cCount]._alpha = alpha;
  43.         alpha += alphaR;
  44.     }
  45. }
  46.  
  47. for (a = 0;a<9;i++){
  48.         this["mc_0_"+a].schaukeln("70","170");
  49. }
Angehängte Dateien
Dateityp: zip bild_ani2.zip (4,6 KB, 42x aufgerufen)

Geändert von visioncom (07-04-2005 um 12:43 Uhr)
visioncom ist offline   Mit Zitat antworten
Alt 07-04-2005, 12:47   #7 (permalink)
tracer
 
Benutzerbild von andretti
 
Registriert seit: Jun 2004
Beiträge: 4.415
aloha!
habe gerade am laptop a bisserle probiert....geht nicht ganz so, wie ich mir das gedacht habe......
schau ma mal....
__________________
Viola per Sempre
Alle Angaben ohne Gewehr!
trace your open mind in variables !
andretti
ActionScript Dictionary
andretti ist offline   Mit Zitat antworten
Alt 07-04-2005, 13:35   #8 (permalink)
tracer
 
Benutzerbild von andretti
 
Registriert seit: Jun 2004
Beiträge: 4.415
ich glaube, mein ansatz ist nich so schlecht, aber:

irgendwie/irgendwo muss man noch zusätzliche parameter einbauen,weil:

der "GrasImWindEffekt" ist abhängig von der x-Koordinate;
wenn man nun per schleife versucht, REIHENWEISE(horizontal) die quadrate zu bewegen, dann braucht ja schon das zweite quadrat einen anderen x-bezugspunkt für die bewegungsfunktion...bis hin zum letzten(achten) quadrat dieser reihe.....

wenn man wiederum per schleife versucht, jeweils immer 8 quadrate vertikal-linear zu bewegen, dann bewegen sich ja alle gleich weit vom ursprung-x nach links und rechts, dann hat man aber nicht den erwünschten effekt, weill sich diese quadrate synchron bewegen....und nicht das oberste den längsten weg hat und das unterste den kürzesten......

ich werde aber weitergrübeln, vielleicht gesellt sich ja noch wer vom forum dazu, ich bin gespannt, wie das schlussendlich funzt....

so neben bei: bei der ersten schleife mit "a" wird in meinem script "i++" erhöht, es sollte aber "a++" lauten.......

und das setInterval is auch unnötig.....
__________________
Viola per Sempre
Alle Angaben ohne Gewehr!
trace your open mind in variables !
andretti
ActionScript Dictionary

Geändert von andretti (07-04-2005 um 13:39 Uhr)
andretti ist offline   Mit Zitat antworten
Alt 07-04-2005, 14:12   #9 (permalink)
VISIONcom
 
Registriert seit: Feb 2004
Ort: Luzern (CH)
Beiträge: 223
Bin mir auch am gedanchen machen. Nicht ganz ne einfache animation! Werde mich auch melden wenn ich einen schritt weiter bin!
Danke für deine Hilfe...
visioncom ist offline   Mit Zitat antworten
Alt 07-04-2005, 14:14   #10 (permalink)
tracer
 
Benutzerbild von andretti
 
Registriert seit: Jun 2004
Beiträge: 4.415
Lösung brutalo:

einen prototype erstellen;

diesen prototype mit jedem quadrat einzeln aufrufen;

ActionScript:
  1. MovieClip.prototype.schaukeln = function(links,rechts){
  2. wert = .5;
  3. this.onEnterFrame = function(){
  4. this._x += wert;
  5. this._x >=rechts ? wert=-0.8 : 0;
  6. this._x <=links ? wert=0.8: 0;
  7.  
  8. }
  9. }
  10. MC_q1.schaukeln(this._x-10,this.x+10);//entweder so probieren, oder koordinate auf bühne ablesen
  11. //quasi musst du für jede vertikale reihe das jeweilige x herausfinden und dann könntest du mit jedem quadrat die function aufrufen;
  12. //je weiter unten die reihe ist, desto weniger abstand vom ursprungs-x
  13.  

vielleicht geht das ja mal für den anfang;
__________________
Viola per Sempre
Alle Angaben ohne Gewehr!
trace your open mind in variables !
andretti
ActionScript Dictionary
andretti ist offline   Mit Zitat antworten
Alt 07-04-2005, 14:53   #11 (permalink)
VISIONcom
 
Registriert seit: Feb 2004
Ort: Luzern (CH)
Beiträge: 223
habe es jetzt einmal so ausprobiert. funktioniert grundsätzlich auch. jedoch schweift er nur nach rechts und nicht mer nach links zurück!?
visioncom ist offline   Mit Zitat antworten
Alt 07-04-2005, 15:29   #12 (permalink)
tracer
 
Benutzerbild von andretti
 
Registriert seit: Jun 2004
Beiträge: 4.415
is sicher nur 'ne kleinigkeit;

kann aber erst nach dem europacupspiel Austria Wien- AC Parma (LIVE !!!)nachgucken!!!! ca. 0.00 Uhr
ole ole ole ole....................

edit: ad Austria Wien - AC Parma..........
__________________
Viola per Sempre
Alle Angaben ohne Gewehr!
trace your open mind in variables !
andretti
ActionScript Dictionary

Geändert von andretti (07-04-2005 um 22:42 Uhr)
andretti ist offline   Mit Zitat antworten
Alt 08-04-2005, 09:47   #13 (permalink)
VISIONcom
 
Registriert seit: Feb 2004
Ort: Luzern (CH)
Beiträge: 223
Habe schon jenste sachen probiert! ist nicht so eine kleinigkeit!
visioncom ist offline   Mit Zitat antworten
Alt 08-04-2005, 16:25   #14 (permalink)
tracer
 
Benutzerbild von andretti
 
Registriert seit: Jun 2004
Beiträge: 4.415
habe mir dein script mal gezogen;
du erstellst ja sämtliche quadrate per script....da meine version zu nehmen und deren ._x auszulesen bin ich nicht mächtig......

was andres:

suche mal nach "wellenbewegung" hier im forum, bei flashstar gibt's auch sowas
__________________
Viola per Sempre
Alle Angaben ohne Gewehr!
trace your open mind in variables !
andretti
ActionScript Dictionary
andretti ist offline   Mit Zitat antworten
Alt 10-04-2005, 13:47   #15 (permalink)
VISIONcom
 
Registriert seit: Feb 2004
Ort: Luzern (CH)
Beiträge: 223
danke für deine hilfe! dein ansatz ist der beste bis jetzt!konnte noch nichts anderes in diese richtung finden!!!

irgendwo ist der wurm drin im schaukeln! er läuft sauber nach links aber nicht mehr sauber nach rechts...
visioncom 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 06:09 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele