• beyond tellerrand – play. Register Now!
Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash 8

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 28-03-2008, 17:54   #1 (permalink)
n00b
 
Registriert seit: Dec 2004
Beiträge: 94
MovieClip verzerren

Hi!

Gibt es irgend eine Möglichkeit (egal ob im Designer oder per AS) um einen komplexen MovieClip (gefüllt mit Text, Bildern, etc.) perspektivisch zu verzerren? Also aus einem Rechteck ein Trapez machen.
Beim Transformieren Tool gibt es ja "skew", damit kann ich aber nur z.B. die oberen beiden Eckpunkte nach links/rechts verschieben. Ich möchte die beiden Eckpunkte aber unabhängig voneinander verschieben.
Was ich so gelesen habe dürfte es relativ schwer sein.

Gibt es irgend einen Trick um das Ganze zu realisieren? Eine Bitmap kann man ja mit Flash glaub ich mit der BitmapData Klasse verzerren. Kann man einen normalen MC irgendwie in ein Bitmap verwandeln und dann die Verzerrung anwenden?

Oder gibt es irgend einen anderen Trick? Es würde mir ja reichen, wenn sich die beiden oberen Eckpunkte gleichmäßig aufeinander zubewegen.
Also wenn aus |_| dann /_\ wird. Vielleicht irgendwie mit verschachtelten MCs? Hab aber momentan nicht wirklich eine Idee.

Naja, bitte um Rat

lg,
Christian
_m0m0_ ist offline   Mit Zitat antworten
Alt 28-03-2008, 18:08   #2 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
Zitat:
Zitat von _m0m0_ Beitrag anzeigen
Kann man einen normalen MC irgendwie in ein Bitmap verwandeln …
Ja, mit der Draw-Methode.

gruß, gaspode
gaspode ist offline   Mit Zitat antworten
Alt 28-03-2008, 19:01   #3 (permalink)
CodeGecko
 
Benutzerbild von hellslawyer
 
Registriert seit: Aug 2007
Ort: Hagen
Beiträge: 1.240
Mit den Flash-Boardmitteln dürftes Du das nicht hinbekommen. Aber wie immer ist auch das nichts, was nicht der gute Lee Brimelow schon mal ausprobiert hätte.
Guggst Du hier
__________________
Grütze Reinhart

XING || Simple Flash-Filter-Generator || DateChooser (AS3)
MovieClipLoader-Example (AS2) || PreloaderClass (AS2) || Framechecker-Component (AS2)

Bitte keine Flashfragen per PN oder ICQ. Dafür ist das Forum da.
hellslawyer ist offline   Mit Zitat antworten
Alt 28-03-2008, 20:02   #4 (permalink)
n00b
 
Registriert seit: Dec 2004
Beiträge: 94
Also ich hab jetzt einen Code aus irgend einem englischen Forum hergenommen und für mich passend modifiziert.
Hab jetzt eine Methode der ich als Parameter einen MovieClip und 4 x/y-Koordinate übergebe. Die Methode zeichnet dann den MC mit geänderten Eckpunkten. Solange am MC keine interaktiven Elemente sind, sollte das ganz gut funktionieren.
Es sieht nur oft etwas seltsam aus, weil das Objekt in 2 Dreiecke unterteilt wird.

ActionScript:
  1. import flash.display.BitmapData;
  2. import flash.geom.Matrix;
  3.  
  4. var distortIndex = 0;
  5.  
  6. drawDistortedMC = function(mc, x1, y1, x2, y2, x3, y3, x4, y4) // x1 oben links, x2 oben rechts, x3 unten links, x4 unten rechts
  7. {
  8.     var bmp:BitmapData = new BitmapData(mc._width, mc._height, true, 0);
  9.     bmp.draw(mc);
  10.     var distort:MovieClip = mc._parent.createEmptyMovieClip("distort"+distortIndex, 0);
  11.    
  12.     var triangleTL:MovieClip = mc._parent["distort"+distortIndex].createEmptyMovieClip("triangleTL", 0);
  13.     var triangleBR:MovieClip = mc._parent["distort"+distortIndex].createEmptyMovieClip("triangleBR", 1);
  14.    
  15.     triangleTL.beginBitmapFill(bmp, null, true, true);
  16.     triangleTL.lineTo(bmp.width, 0);
  17.     triangleTL.lineTo(0, bmp.height);
  18.     triangleTL.endFill();
  19.    
  20.     triangleBR.beginBitmapFill(bmp, null, true, true);
  21.     triangleBR.moveTo(bmp.width, 0);
  22.     triangleBR.lineTo(bmp.width, bmp.height);
  23.     triangleBR.lineTo(0, bmp.height);
  24.     triangleBR.endFill();
  25.    
  26.     triangleTL.transform.matrix = new Matrix(
  27.         (x2 - x1)/bmp.width, (y2 - y1)/bmp.width,
  28.         (x3 - x1)/bmp.height, (y3 - y1)/bmp.height,
  29.         x1, y1
  30.     );
  31.  
  32.     var x:Number = x3 - (x4 - x2);
  33.     var y:Number = y2 - (y4 - y3);
  34.    
  35.     triangleBR.transform.matrix = new Matrix(
  36.         (x2 - x)/bmp.width, (y2 - y)/bmp.width,
  37.         (x3 - x)/bmp.height, (y3 - y)/bmp.height,
  38.         x, y
  39.     );
  40.    
  41.     return mc._parent["distort"+distortIndex];
  42. }
  43.  
  44. hitme.onRelease = function()
  45. {
  46.     attachMovie("bla", "bla", 1000);
  47.     bla._visible=false;
  48.     drawDistortedMC(bla, 150, 100, 450, 100, 100, 529, 500, 529);
  49. }

Das einzige was an dem Code noch nicht funktioniert: Ich schaffe es nicht, dass das Bitmap transparent wird. Beim Erstellen des BitmapData-Objekts gebe ich ja an, dass es transparent sein soll, aber nachdem ich mit draw das Bild eines teilweise transparenten MovieClips zeichne, habe ich einen weißen undurchsichtigen Hintergrund. Weiß jemand wie ich den transparent bekomme?

lg,
Christian

edit:
Transparenz funktioniert jetzt. Man muss beim Konstruktur als vierten Parameter 0 übergeben. Als dritten Parameter "true" für Transparenz alleine reicht scheinbar nicht.

Geändert von _m0m0_ (28-03-2008 um 22:11 Uhr)
_m0m0_ 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 18:02 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele