2016-07-28 27 views
1

Ich mache eine interaktive Animation, bei der Hintergrundbilder durch eine in einer Kamera aufgenommene Form maskiert werden. In jedem Bild ändert die Kamera Bilder in Schwarz-Weiß-Bilder und dann wird sie verwendet, um Hintergrundbilder zu maskieren.Speichern des Ergebnisses gemischter Bilder in AS3.0

Im Code sind "jetzt" die Bilder, die von der Kamera aufgenommen wurden, "P1" ist das Hintergrundbild.

Nachdem ich maskiert mit Blend-Modus multiplizieren, möchte ich das Ergebnis Bild, das maskiert ist und für andere Dinge verwenden speichern. Ich verstehe nicht, wenn ich blendmode Funktion verwende, wie das Ergebnis gut definiert ist. Kann ich das Ergebnisbild erfassen, kopieren oder speichern?

var P1:MovieClip = new p1(); 
var mskimg:MovieClip = new maskimage(); 

var bitmap_obj:Bitmap = new Bitmap(now); 

addChild(P1); 
P1.blendMode = BlendMode.LAYER; 
addChild(bitmap_obj); 
bitmap_obj.blendMode = BlendMode.MULTIPLY; 

enter image description here

+0

Sie können die Eltern mit der BitmapData-Klasse zeichnen, das alles sehr teuer, wenn Sie es jeden Frame tun. – BadFeelingAboutThis

+0

[Sehen Sie sich mein Beispiel auf der Dokumentationsseite an] (http://stackoverflow.com/documentation/actionscript-3/2814/drawing-bitmaps/9508/draw-a-display-object-into-bitmap-data#t= 20160728215336898734) - Verwenden Sie diese Funktion und übergeben Sie das übergeordnete Element der gemischten Elemente (sieht im Kontext Ihres Codes wie folgt aus) – BadFeelingAboutThis

+0

Dies ist die [Dokumentation] (http://help.adobe.com/de_DE/ FlashPlatform/reference/actionscript/3/flash/display/BitmapData.html # draw()) für die Zeichenmethode. – BadFeelingAboutThis

Antwort

0

Sie können ein maskiertes Objekt ziehen, wenn Sie alles setzen, die Sie in einen Behälter gezogen werden mögen, dann rufen Sie BitmapData.draw() das komplette Schicht Objekt bis zu einem gewissen BitmapData zu ziehen. Dann können Sie diese Bitmap-Daten verwenden, um zu tun, was Sie wollen, Graphics.beginBitmapFill(), FileReference.save(), was auch immer. Die Operation ist jedoch teuer, daher ist es besser, wenn Sie die Zeichnung auslösen, indem Sie auf eine Benutzeraktion reagieren, und nicht jeden Frame standardmäßig ausführen, es sei denn, dies wird von der Logik Ihrer Anwendung verlangt.

+0

Vielen Dank! Ich konnte Bitmap und BitmapData jetzt besser verstehen und konnte das tun, was ich versuchte. Danke auch für das Erwähnen der Kosten der Funktion. Ich werde vorsichtig sein. –