Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 06-10-2005, 08:31   #1 (permalink)
User
 
Benutzerbild von sonderformat
 
Registriert seit: Nov 2003
Beiträge: 55
animation mit linien

guten morgen,

ich habe die glorreiche aufgabe bekommen,
bis montag für meine schule eine animation
zu machen, die auf irgendeiner veranstaltung
gezeigt werden soll.

es soll ein netz aus linien sein, das sich stetig ändert.
also eine gewisse anzahl an linien (Random1) zu verschiedenen
zeiten geändert (Random2) sollen sich zufällig im Raum bewegen
und überlagern. Wäre cool, wenn die Speed der Bewegung auch noch
Variieren würde. Die Linien sollen dabei immer über die volle Filmfläche, also bis zum Rand gehen.


Mit meinem bisherigen Flashkönnen habe ich das bisher geschafft.
Das haut aber keinen so richtig vom Hocker?!

Vielleicht hat jemand einen Hinweis?

Thanks a lot!

Norbert
Angehängte Dateien
Dateityp: zip beispiel.zip (4,1 KB, 45x aufgerufen)
sonderformat ist offline   Mit Zitat antworten
Alt 06-10-2005, 12:13   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.321
- erhöhe die framerate so auf 120
- nimm die leeren frames aus der zeitleiste raus
- nimm die zahl aus Math.random raus
- setze die random-faktoren auf die grösse des swf's
- ändere auch mal liniendicke und farbe

- und lass sinnige texte über den bildschirm wandern:
linien sind grumm
das leben ist eine linie
wenn linien denken könnten

und lauter so einen stuss. wirkt höchst prefessionell und keiner wird zugeben wollen, das er den sinn von dem ganzen nicht versteht ;-)
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 07-10-2005, 17:11   #3 (permalink)
User
 
Benutzerbild von sonderformat
 
Registriert seit: Nov 2003
Beiträge: 55
gesagt getan

Hallo hgseib,

danke für die immer schnellen Anworten und Hilfe im Forum.

Ich sollte mir wohl lieber die rote Clownsnase aufsetzen und
am Montag versuchen, die Leute mit einer Polonaise zu einer Linie zu animieren, aber Gott wollte es anders.


Bin auf Thread "netzanimation" gestoßen und habe mir das Tutorial
bei http://www.bit-101.com/tutorials/ unter nodes angesehen.

Das ist es! Und äußerst spannend noch dazu.
Ich lerne gerade so viel dazu.

und daraus ergeben sich fragen, die ab und zu auch dumm sind.
sorry dafür!

meine nodes sollen sich nur auf den Randlinien des Films bewegen,
aber mein hirn denkt daran vorbei?!

ActionScript:
  1. numNodes = 10;
  2. nodez = [];
  3. for(i=0;i<numNodes;i++){
  4.     node = attachMovie("node", "n"+i, i);
  5.     nodez[i] = node;
  6.    
  7.     // die nodes sollen sich auf den randlinien des films bewegen
  8.     // das ist aber doch schon wieder schwachsinn oder?
  9.     node._x = a;
  10.     node._y = b 
  11.     if(a == 0 or a == 1024){
  12.         b = Math.random()*768;
  13.     }else if(b == 0 or b == 768){
  14.         a = Math.random()*1024;
  15.         }
  16.     //node._x = Math.random()*1024;
  17.     //node._y = Math.random()*768;
  18.    
  19.     node.vx = Math.random()*10-5;
  20.     node.vy = Math.random()*10-5;
  21.     node.onEnterFrame = nodeMove;
  22. }
  23. minDist = 1024;
  24. _root.onEnterFrame = function(){
  25.     var i, j, nodeA, nodeB, dx, dy, dist;
  26.     clear();
  27.     for(i=0;i<nodez.length-1;i++){
  28.         nodeA = nodez[i];
  29.         for(j=i+1;j<nodez.length;j++){
  30.             nodeB = nodez[j];
  31.             dx = nodeB._x - nodeA._x
  32.             dy = nodeB._y - nodeA._y
  33.             dist = Math.sqrt(dx*dx+dy*dy);
  34.             if(dist<minDist){
  35.                 alpha = 100;
  36.                 lineStyle(1, 0xffffff, alpha);
  37.                 moveTo(nodeA._x, nodeA._y);
  38.                 lineTo(nodeB._x, nodeB._y);
  39.             }
  40.         }
  41.     }
  42. }
  43.  
  44. //hier müsste es eigentlich passen
  45. function nodeMove(){
  46.     this._x += this.vx;
  47.     this._y += this.vy;
  48.     if(this._x>1024){
  49.         this._x = 0;
  50.     } else if(this._x<0){
  51.         this._x = 1024;
  52.     }
  53.     if(this._y>768){
  54.         this._y = 0;
  55.     } else if(this._y<0){
  56.         this._y = 768;
  57.     }
  58. }
sonderformat ist offline   Mit Zitat antworten
Alt 07-10-2005, 19:56   #4 (permalink)
User
 
Benutzerbild von sonderformat
 
Registriert seit: Nov 2003
Beiträge: 55
gehversuche

es funktioniert fast.
haha. ich bin gar nicht so doof! nur ängstlich.

die netzknoten liegen jetzt alle auf der randlinie.
also x 0 oder x1024 oder y0 oder y768.

da kommt schon die nächste herausforderung:
die knoten dürfen sich nur am rand entlangbewegen,
so das nur die diagonalen verbindungen zu sehen sind.
schaff ich das auch selber?

ActionScript:
  1. numNodes = 10;
  2. nodez = [];
  3. for(i=0;i<numNodes;i++){
  4.     node = attachMovie("node", "n"+i, i);
  5.     nodez[i] = node;
  6.    
  7.     //es funktioniert!!!
  8.     node._x = 0 || 1024;
  9.     node._y = 0 || 768;
  10.     a = node._x
  11.     b = node._y
  12.    
  13.     if(a == 0 || a == 1024){
  14.         b = Math.random()*768;
  15.     } else if(b == 0 || b == 768){
  16.         a = Math.random()*1024;
  17.     }
  18.    
  19.     //node._x = Math.random()*1024;
  20.     //node._y = Math.random()*768;
  21.     node.vx = Math.random()*10-5;
  22.     node.vy = Math.random()*10-5;
  23.     node.onEnterFrame = nodeMove;
  24. }
  25. minDist = 1280;
  26. _root.onEnterFrame = function(){
  27.     var i, j, nodeA, nodeB, dx, dy, dist;
  28.     clear();
  29.     for(i=0;i<nodez.length-1;i++){
  30.         nodeA = nodez[i];
  31.         for(j=i+1;j<nodez.length;j++){
  32.             nodeB = nodez[j];
  33.             dx = nodeB._x - nodeA._x
  34.             dy = nodeB._y - nodeA._y
  35.             dist = Math.sqrt(dx*dx+dy*dy);
  36.             if(dist<minDist){
  37.                 alpha = 100;
  38.                 lineStyle(1, 0xffffff, alpha);
  39.                 moveTo(nodeA._x, nodeA._y);
  40.                 lineTo(nodeB._x, nodeB._y);
  41.             }
  42.         }
  43.     }
  44. }
  45. function nodeMove(){
  46.     this._x += this.vx;
  47.     this._y += this.vy;
  48.     if(this._x>1024){
  49.         this._x = 0;
  50.     } else if(this._x<0){
  51.         this._x = 1024;
  52.     }
  53.     if(this._y>768){
  54.         this._y = 0;
  55.     } else if(this._y<0){
  56.         this._y = 768;
  57.     }
  58. }
sonderformat ist offline   Mit Zitat antworten
Alt 07-10-2005, 20:43   #5 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.321
"..Ich sollte mir wohl lieber die rote Clownsnase aufsetzen.."
wenn's ne gestreifte ist, warum nicht. aber obacht! quergestreift macht dick.

wenn du fla's hochladen würdest, dann könnte man dir eventuell helfen.
attachMovie("node" ...
ich hab dein node-mc nicht und weiss auch nicht wie es aussieht.

-----
ok, da ist garnichts drinn
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (07-10-2005 um 21:32 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 07-10-2005, 21:31   #6 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.321
lustige spielerei:
- da deine notes ja nie echt gebraucht werden, kannst du auch einfache objekte nutzen.
- den abstand misst niemand nach, aber wurzel ziehen ist zeitaufwendig
- hab's nicht mit der stoppuhr nachgemessen, aber lieber ein onEnterFrame als für jeden note ein eigenes
- du zeichnest auf _root. ich zeichne in mc's, lasse die verblassen und dann löschen ich sie. so kommt etwas mehr leben in die bude ;-)
ActionScript:
  1. _quality="LOW";
  2. //
  3. b = 1024;
  4. h = 768;
  5. speed = 20;
  6. anzNodes = 30;
  7. minDist = 250;
  8. anzLevels = 8;
  9. level = anzLevels;
  10. nodez = [];
  11. //
  12. function fRnd() {
  13.     return speed*(.25+.75*Math.random())*(Math.random()<.5 ? 1 : -1);
  14. }
  15. // init
  16. for (i=0; i<anzNodes; i++) {
  17.     nodez.push({x:Math.random()*b, y:Math.random()*h, vx:fRnd(), vy:fRnd()});
  18. }
  19. //
  20. _root.onEnterFrame = function() {
  21.     // neue positionen
  22.     for (var i = 0; i<anzNodes; i++) {
  23.         with (nodez[i]) {
  24.             x += vx;
  25.             y += vy;
  26.             if (x>b || x<0) {
  27.                 vx = -vx;
  28.             }
  29.             if (y>h || y<0) {
  30.                 vy = -vy;
  31.             }
  32.         }
  33.     }
  34.     // neu zeichnen
  35.     _root.createEmptyMovieClip('m'+level, level);
  36.     with (_root['m'+level]) {
  37.         lineStyle(1, 0xffffff);
  38.         for (var i = 0; i<anzNodes-1; i++) {
  39.             var nodeA = nodez[i];
  40.             for (var j = i+1; j<anzNodes; j++) {
  41.                 var nodeB = nodez[j];
  42.                 if (Math.abs(nodeB.x-nodeA.x)+Math.abs(nodeB.y-nodeA.y)<minDist) {
  43.                     moveTo(nodeA.x, nodeA.y);
  44.                     lineTo(nodeB.x, nodeB.y);
  45.                 }
  46.             }
  47.         }
  48.     }
  49.     // levels verblassen
  50.     for (var i = 1; i<anzLevels; i++) {
  51.         _root['m'+(level-i)]._alpha = 100*(1-i/anzLevels);
  52.     }
  53.     _root['m'+(level-anzLevels)].removeMovieClip();
  54.     level++;
  55. };
ach ja, an der wand lang - laaaaangweilig
ActionScript:
  1. _quality="LOW";
  2. //
  3. b = 1024;
  4. h = 768;
  5. umfang = b+h+b+h;
  6. speed = 10;
  7. anzNodes = 12;
  8. maxDist = 200;
  9. nodez = [];
  10. //
  11. function fRnd() {
  12.     return speed*(.25+.75*Math.random())*(Math.random()<.5 ? 1 : -1);
  13. }
  14. // init
  15. for (i=0; i<anzNodes; i++) {
  16.     nodez.push({x:0, y:0, pos:Math.random()*umfang, v:fRnd()});
  17. }
  18. //
  19. _root.onEnterFrame = function() {
  20.     // neue positionen
  21.     for (var i = 0; i<anzNodes; i++) {
  22.         with (nodez[i]) {
  23.             pos = (pos+v+umfang)%umfang;
  24.             if (pos<b) {
  25.                 x=pos, y=0;
  26.             } else if (pos<b+h) {
  27.                 x=b, y=pos-b;
  28.             } else if (pos<b+h+b) {
  29.                 x=b-(pos-b-h), y=h;
  30.             } else {
  31.                 x=0, y=h-(pos-b-h-b);
  32.             }
  33.         }
  34.     }
  35.     // neu zeichnen
  36.     clear();
  37.     lineStyle(1, 0xffffff);
  38.     for (var i = 0; i<anzNodes-1; i++) {
  39.         var nodeA = nodez[i];
  40.         for (var j = i+1; j<anzNodes; j++) {
  41.             var nodeB = nodez[j];
  42.             if (Math.abs(nodeB.x-nodeA.x)+Math.abs(nodeB.y-nodeA.y)>maxDist) {
  43.                 moveTo(nodeA.x, nodeA.y);
  44.                 lineTo(nodeB.x, nodeB.y);
  45.             }
  46.         }
  47.     }
  48. };
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (08-10-2005 um 03:49 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 08-10-2005, 10:02   #7 (permalink)
this.onEnterFame
 
Benutzerbild von RedSaint
 
Registriert seit: Feb 2002
Ort: Jetzte: Stuttgart
Beiträge: 1.666
ihr seid zwar scheinbar schon fast da wo ihr hinwolltet, aber hier mal ein anderer ansatz der mir zu dem thema eingefallen ist:


Tiefergehender Ansatz gesucht: Wellenlinie(n)





_RED_



[edith]: hab mir das von euch gerade mal angesehen > sieht doch genial aus! also echt nette spielerei ... wow [/edith]
__________________
_may the force be with you_
.................................................. .........
on Fire 2008
.................................................. .........

Easy Crime available here
.................................................. .........

_RED_ + Flashforum = Big Love
.................................................. .........

A.K.A: ACHIM 0815

Geändert von RedSaint (08-10-2005 um 10:05 Uhr)
RedSaint ist offline   Mit Zitat antworten
Alt 14-10-2005, 16:23   #8 (permalink)
User
 
Benutzerbild von sonderformat
 
Registriert seit: Nov 2003
Beiträge: 55
danke@hgseib!

das sieht gut aus. ich habe das jetzt
so gemacht, dass die Knoten am
Rand im Einfallswinkel abprallen lasse.

Ich muss Deinen Code noch nachvollziehen.
Vor allem das mit dem Umfang wurmt mich.

Mein Kopf verknüpft das ganze gerade mit
deinem Ballistik-Tutorial und erinnert mich
an:

http://www.sodaplay.com
http://www.sodarace.net

Ist schon älter, aber vielleicht kennt es jemand
noch nicht. Ich finde es passt hierher.
Ich schaue es mir immer wieder gerne an.

Grüße

Norbert

Geändert von sonderformat (14-10-2005 um 16:25 Uhr)
sonderformat ist offline   Mit Zitat antworten
Alt 08-02-2006, 10:43   #9 (permalink)
User
 
Benutzerbild von sonderformat
 
Registriert seit: Nov 2003
Beiträge: 55
resizeable nodegarden mit kurven nur y_achse

Hallo zusammen,

Spiele immernoch mit dem Liniennodegarden rum.
habe mir etwas viel vorgenommen.

Problem 1:
Versuche gerade, das Browserfenster zu skalieren und
die linien sollen immernoch am rand entlanglaufen.
ich denke, ich muss den nodegarden nach resize reloaden, aber wie?

Problem 2:
Die Knoten hängen jetzt zum größten Teil oben links in der Ecke?

Problem 3:
Habe lineTo durch curveTo ersetzt.
Den Kurvenkontrollpunkten gebe ich ein Math.random(), was aber noch ziemlich langweilig ist.

Problem 4:
Wäre toll, wenn sich die Linien nur in der y-Achse am Rand bewegen
und nicht mehr in der x-Achse

Problem 3 und 4 müsste ich hinbekommen, Problem 1 ist die harte Nuss.

vielleicht hat ja jemand Lust, mitzuspielen.
Angehängte Dateien
Dateityp: zip resizableMovie.zip (12,4 KB, 16x aufgerufen)
sonderformat 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 09:08 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele