Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 18-05-2004, 13:40   #1 (permalink)
Notorischer Raser
 
Registriert seit: May 2003
Ort: Heinsberg
Beiträge: 83
Question Linien in MovieClips zusammenführen in einen MC?

Hallo,

ich bin dabei mir ein kleines Zeichnungsprogramm zu schreiben, besser gesagt ich zeichne Linien auf der Bühne.
Jede Linie ist dann ein MovieClip.

Nun möchte ich mit beginFill die Fläche Füllen.
Nun stellen sich mir folgende Probleme/Fragen :

z.B. für ein Quadrat zeichne ich 4 Linien.
Habe also 4 MC auf der Bühne.

beginnFill kann man nur auf einen MC anwenden deren Linien "geschlossen" sind.

Also müsste ich eine Funktion schreiben welche aus meinen 4 MC einen einzigen MC macht.

Wenn ich das hätte (dann wäre ich schon ein schritt weiter hähö) ...
also wenn ich das hätte dann habe ich unter umstaenden ein quadrat mit überstehenden Linien (weil die Zeichnung nicht exakt war(kann ja mal passieren), wird die innere Fläche dann trotzdem gefüllt?

Wie könnte ich das Problem am besten angehen? Ich hoffe Ihr versteht was ich überhaupt meine


Danke
__________________
gruss
Petter K.
petter ist offline   Mit Zitat antworten
Alt 18-05-2004, 18:47   #2 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
HI,

so arbeitet beginFill nicht...du kannst nicht ein leeres Objekt mit Linien bilden und es dann füllen.Du könntest aber beim zeichnen die Koordinaten der Linien "aufzeichnen" (in einem Array speichern) und später mit beginFill() wieder abspielen.

Warum zeichnest du eigentlich die verschiedenen Linien in mehreren MCs?

Grüße
Sascha
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 18-05-2004, 19:01   #3 (permalink)
Notorischer Raser
 
Registriert seit: May 2003
Ort: Heinsberg
Beiträge: 83
Zitat:
Geschrieben von ludabruda
HI,

so arbeitet beginFill nicht...du kannst nicht ein leeres Objekt mit Linien bilden und es dann füllen.Du könntest aber beim zeichnen die Koordinaten der Linien "aufzeichnen" (in einem Array speichern) und später mit beginFill() wieder abspielen.
Hallo Sascha,

es funktioniert so das man eine Linie (Kurve) Zeichnet,
Habe 2 Punkte und in der Mitte ein Punkt wo wenn man dran zieht sich die Linie zu einer Kurve verformt (so Bezier mässig , heist glaube ich Bezier) , dann habe ich an einem Ende der Linie ein kleinen Punkt zum draggen, damit ich die Linie (auch nachdem Ihre Größe und Radius veraendert wurde irgendwo hinziehen kann) , deswegen einzelne MovieClips, weil für den Linien noch eigene Funktionen und Eigenschaften gibt.

Zitat:
Geschrieben von ludabruda
Warum zeichnest du eigentlich die verschiedenen Linien in mehreren MCs?

Grüße
Sascha
Also so was aehnliches habe ich jetzt gemacht, allerdings die koordinaten nicht in ein array gespeichert, da kam ich jetzt noch nicht drauf *lach*

Bin jetzt so vorgegangen :
auf der Bühne liegen nun ja alle meine einzelnen Linien als MovieClip.
Mit einer for var i in e schleife gehe ich alle MC's durch
und sammle jeweils den Anfangpunkt, den Ende Punkt und den Controller Punkt für den Bezier Teil, dazu kann man die Linien auch noch die Anfang und Endepunkte verschieben.
Ein Anfang Punkt ist also nicht gleich der Positionierung des MovieCLip welcher die Linie beinhaltet.

Naja das funktioniert auch schon ganz gut bis auf das beim nachzeichnen was mit dem Controllpunkt nicht stimmt, weil wenn ich eine Gerade Linie Zeichne(mache ich mit curveTo), und diese dann spaeter dann mit meinen gesammelten koordinaten nachzeichnen möchte, erhalte ich eine kurve (wenn ich lineTo nehme passt es).

Ich versuch nochmal in Kurzform:

Beim Zeichnen einer Linie/Kurve erhalte ich folgende Daten:

Ausgangspunkt (Erster Klick)
Punkt1 (da wo die Linie beginnt)
Punkt2 (da wo die Linie aufhört)
Mittelpunkt (um die Linie zu einer Kurve zu verzerren)

Zum nachzeichnen mache ich folgendes, sammle die Position des MC der ersten Linie , dann mache ich ein moveTo zu Punkt ein (weil dieser nicht gleich der erste geklickte punkt sein muss), dann mache ich mit curveTo den Rest.

hmm hier mal meine Funktion, vielleicht sieht man das da besser was ich mache.

ActionScript:
  1. function redrawShape() {
  2.     aquaBase.removeMovieClip();
  3.     var i = 0;
  4.     // MC erstellen für Endgültige Shape Zeichnung
  5.     this.createEmptyMovieClip("aquaBase", 999);
  6.    
  7.     // Style von Endgültiges Shape
  8.     aquaBase.lineStyle( 5, 0x0000FF, 100 );
  9.  
  10.     // Point 1 Koordinaten
  11.     point1_x = this.controller["curve0"]._x;
  12.     point1_y = this.controller["curve0"]._y;
  13.     // Point 2 Koordinaten
  14.     point2_x = this.controller["curve0"].clickPt2.xPoint;
  15.     point2_y = this.controller["curve0"].clickPt2.yPoint;
  16.     // Controll Point Koordinaten
  17.     pointC_x = this.controller["curve0"].ctlPt._x;
  18.     pointC_y = this.controller["curve0"].ctlPt._y;
  19.  
  20.     // Initial Drawing Cursor positionieren
  21.     aquaBase.moveTo(point1_x, point1_y);
  22.  
  23.     // Initial Kurve Zeichnen
  24.    
  25.     // Für jede Kurve die im Objekt enthalten ist
  26.     for(var e in controller){
  27.         if (e != "lnCt") {
  28.            
  29.             var myKurve = this.controller[e];
  30.             //myKurve._visible = false;
  31.             // Point 1 Koordinaten
  32.             point1_x = myKurve._x;
  33.             point1_y = myKurve._y;
  34.             // Point 2 Koordinaten
  35.             point2_x = myKurve.clickPt2.xPoint;
  36.             point2_y = myKurve.clickPt2.yPoint;
  37.             // Controll Point Koordinaten
  38.             pointC_x = myKurve.ctlPt._x;
  39.             pointC_y = myKurve.ctlPt._y;
  40.  
  41.             // Setzt den Zeichnungs Cursor an den Anfang(ausgangspunkt) und Zeichnet die Linie/Kurve welche die Punkte verbindet
  42.             aquaBase.moveTo(point1_x, point1_y);
  43.        
  44.             // der Kontrollpunkt (ctlPt) bestimmt die Koordinaten (x,y) -- // //using control point coords for x&y control
  45.             //aquaBase.curveTo(pointC_x, pointC_y, point2_x, point2_y);  
  46.             aquaBase.lineTo(point2_x,point2_y);
  47.            
  48.             // Kurven Nummer hochzählen
  49.             i++;
  50.         }
  51.        
  52.     }
  53. }

Danke

PS: WIe müsste der Array aussehen um die Daten einer Kurve zu sammeln und diese dann anhand des Arrays nachzuzeichnen ?
__________________
gruss
Petter K.

Geändert von petter (18-05-2004 um 19:03 Uhr)
petter ist offline   Mit Zitat antworten
Alt 18-05-2004, 19:15   #4 (permalink)
Notorischer Raser
 
Registriert seit: May 2003
Ort: Heinsberg
Beiträge: 83
Auch das vereinfachte Script hier malt mir eine Kurve.


ActionScript:
  1. this.createEmptyMovieClip("aquaBase", 999);
  2.  
  3.     // Style von Endgültiges Shape
  4.     aquaBase.lineStyle( 5, 0x0000FF, 100 );
  5.     point1x = 250;
  6.     point1y = 0;
  7.  
  8.     point2x = 250;
  9.     point2y = 250
  10.    
  11.     pointx =  0;
  12.     pointy = 0;
  13.  
  14.     aquaBase.moveTo(point1x, point1y);
  15.     aquaBase.curveTo(pointx, pointy, point2x, point2y);  
  16.     //aquaBase.lineTo(point2x,point2y);
  17.  
__________________
gruss
Petter K.
petter 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 19:35 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele