Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22-02-2005, 11:00   #1 (permalink)
duc
c'est possible
 
Registriert seit: Jan 2004
Ort: Schwitzerland
Beiträge: 80
Smile nochmals drawline..kann mir das jemand erklären

also hier das von thebiz (mit bestem dank) geschriebene script:

es dient zum dyn. verbinden von 4 koordinatenpunkten mit je einer linie:

var easing = 5;
var ini = 2;
_root.createEmptyMovieClip("line", 1);
_root.line.lineStyle(2, 0xFFFF60);
//------------------------------------------
function drawL(x0, y0, x1, y1, x2, y2, x3, y3, x4, y4) {
_root.line.moveTo(x0, y0);
ar = arguments;
_root.line.onEnterFrame = function() {
if (x0 > x1 - 6 && x0 < x1 + 6 && y0 > y1 - 6 && y0 < y1 + 6) {
this.lineTo(x1, y1);
drawL(ar[ini], ar[ini + 1], ar[ini + 2], ar[ini + 3], ar[ini + 4], ar[ini + 5], ar[ini + 6], ar[ini + 7], ar[ini + 8]);
} else {
x0 += Math.round((x1 - x0) / easing);
y0 += Math.round((y1 - y0) / easing);
if (ar[ini] == undefined) {
delete this.onEnterFrame;
return;
}
this.lineTo(x0, y0);
}
};
}
//------------------------------------------
drawL(200, 500, 600, 500, 600, 200, 250, 200, 250, 520);




nun ich habe damit div. Verständnisprobleme:

-für was steht die variable "ini"
-was bewirkt sie im drawL???
-im moment wird noch bei jeder linie das easing angewandt.
-was müsste ich machen um das easing erst bei der letzten linie zu erhalten???

besten dank für eure hilfe...gruss duc
duc ist offline   Mit Zitat antworten
Alt 22-02-2005, 14:58   #2 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
drawL() ist die Funktion um die Linien zu zeichnen.

ini ist einfach eine Variable, die dazu dient, dass
beim erneuten Aufrufe der drawL(), immer 2 Argumente
weggelassen werden.
Der Funktion werden ja x0,y0,x1,y1... übergeben.
Beim nächsten Aufruf werden dann aus dieser Liste,
ar[ini],ar[ini+1]... übergeben, was bedeutet ar[2],ar[3].....
Somit werden immer 2 Argumente, die schon abgearbeitet
wurden beim nächsten Mal weggelassen.
Ist etwas kompliziert, das gebe ich zu, aber etwas
leichteres ist mir nicht eingefallen.
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 22-02-2005, 15:30   #3 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Hier mein Lieber
Etwas einfacher, aber deutlich
umfangreicher.
Es ist in diesem Fall halt vorgegeben,
wie gezeichnet wird. von links oben -> rechts oben -> rechts unten etc.
ActionScript:
  1. var easing = 10;
  2. // speed muss ein Teiler der Distanzen von x0->x1, y0->y1...etc. sein
  3. var speed = 25;
  4. _root.createEmptyMovieClip("line", 1);
  5. _root.line.lineStyle(1, 0xFFAA00);
  6. //------------------------------------------
  7. function drawL(x0, y0, x1, y1, x2, y2, x3, y3, x4, y4) {
  8.     _root.line.moveTo(x0, y0);
  9.     speicherX = x0;
  10.     speicherY = y0;
  11.     s1();
  12.     function s1() {
  13.         _root.line.onEnterFrame = function() {
  14.             if (x0 < x1) {
  15.                 x0 += speed;
  16.                 this.lineTo(x0, y0);
  17.             } else {
  18.                 s2();
  19.             }
  20.         };
  21.     }
  22.     function s2() {
  23.         _root.line.onEnterFrame = function() {
  24.             if (y0 < y2) {
  25.                 y0 += speed;
  26.                 this.lineTo(x0, y0);
  27.             } else {
  28.                 x0 = speicherX;
  29.                 s3();
  30.             }
  31.         };
  32.     }
  33.     function s3() {
  34.         _root.line.onEnterFrame = function() {
  35.             if (x1 > x0) {
  36.                 x1 -= speed;
  37.                 this.lineTo(x1, y0);
  38.             } else {
  39.                 y0 = speicherY;
  40.                 s4();
  41.             }
  42.         };
  43.     }
  44.     function s4() {
  45.         _root.line.onEnterFrame = function() {
  46.             if (y2 > (y0 + 1)) {
  47.                 y2 += (y0 - y2) / easing;
  48.                 this.lineTo(x0, y2);
  49.             } else {
  50.                 delete this.onEnterFrame;
  51.             }
  52.         };
  53.     }
  54. }
  55. //------------------------------------------
  56. drawL(100, 100, 500, 100, 500, 500, 100, 500, 100, 100);
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------

Geändert von thebiz (22-02-2005 um 15:34 Uhr)
thebiz ist offline   Mit Zitat antworten
Alt 22-02-2005, 15:58   #4 (permalink)
duc
c'est possible
 
Registriert seit: Jan 2004
Ort: Schwitzerland
Beiträge: 80
juchuuuuuu john

hallo john...hehe war kurz weg und dann diese überraaaaaschung...juchuuuuuu
merci...jetzt tu ich dass mal noch umbauen, damit es mir von u.links > u.rechts > o.rechts > o.links > u.links zeichnen tut...

du hiammer...salute gruzz düc
duc ist offline   Mit Zitat antworten
Alt 25-02-2005, 10:47   #5 (permalink)
duc
c'est possible
 
Registriert seit: Jan 2004
Ort: Schwitzerland
Beiträge: 80
hallo john bräuchte nochmals deine hilfe.....

hallo hier ist duc...also ich bin immernoch völlig am schwimmen. Ich kriegs nicht hin, dass mir per drawline ein rechteck gezeichnet wird. und zwar von unten links nach unten rechts >oben rechts > oben links > und unten links....wobei eben zu sagen ist, dass x0 y0 nicht identisch sind mit x4 y4.... wie muss ich dass obere script aendern damit dies funktioniert (meiner meinung nach müssen ja beide koordinatenpunkte identisch sein damits mit diesem script klappt) ....gruss duc
duc ist offline   Mit Zitat antworten
Alt 25-02-2005, 11:31   #6 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Leider ist diese übersichtliche Version etwas undynamisch.
Man kann nur nach einer Vorgabe zeichnen lassen.
Die Vorzeichen müssen bis auf das Letzte umgedreht werden
und das größer/kleiner Zeichen auch.

Hier also deine erwünschte Variante:
ActionScript:
  1. var easing = 10;
  2. // speed muss ein Teiler der Distanzen von x0->x1, y0->y1...etc. sein
  3. var speed = 25;
  4. _root.createEmptyMovieClip("line", 1);
  5. _root.line.lineStyle(1, 0xFFAA00);
  6. //------------------------------------------
  7. function drawL(x0, y0, x1, y1, x2, y2, x3, y3, x4, y4) {
  8.     _root.line.moveTo(x0, y0);
  9.     speicherX = x0;
  10.     speicherY = y0;
  11.     s1();
  12.     function s1() {
  13.         _root.line.onEnterFrame = function() {
  14.             if (x0 > x1) {
  15.                 x0 -= speed;
  16.                 this.lineTo(x0, y0);
  17.             } else {
  18.                 s2();
  19.             }
  20.         };
  21.     }
  22.     function s2() {
  23.         _root.line.onEnterFrame = function() {
  24.             if (y0 > y2) {
  25.                 y0 -= speed;
  26.                 this.lineTo(x0, y0);
  27.             } else {
  28.                 x0 = speicherX;
  29.                 s3();
  30.             }
  31.         };
  32.     }
  33.     function s3() {
  34.         _root.line.onEnterFrame = function() {
  35.             if (x1 < x0) {
  36.                 x1 += speed;
  37.                 this.lineTo(x1, y0);
  38.             } else {
  39.                 y0 = speicherY;
  40.                 s4();
  41.             }
  42.         };
  43.     }
  44.     function s4() {
  45.         _root.line.onEnterFrame = function() {
  46.             if (y2 < (y0 + 1)) {
  47.                 y2 += (y0 - y2) / easing;
  48.                 this.lineTo(x0, y2);
  49.             } else {
  50.                 delete this.onEnterFrame;
  51.             }
  52.         };
  53.     }
  54. }
  55. //------------------------------------------
  56. drawL(500, 500, 100, 500, 100, 100, 500, 100, 500, 500);
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz 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 02:02 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele