draw sprite in bitmapdata-mit einer seltsamen Maske
Ich habe laufen in seltsamen Verhalten zeichnen eines sprite in ein BitmapData. Dieser sprite sieht gut aus wenn gezogen direkt auf den Bildschirm. Aber wenn das sprite gezeichnet wird, in eine BitmapData -, der sprite ist maskiert wird... aber es gibt keine solche Maske angewendet, sprite!
Dieser "schlechte Maske" kann ausgeschaltet werden und auf... durch die Anwendung /nicht-Anwendung von einer anderen Maske auf das sprite ich bin Zeichnung. Diese Maske ist nicht die gleiche Form oder Lage als "schlecht " Maske".
alt-text http://img5.imageshack.us/img5/8310/masked.png
Frage ich mich, wenn ich, ich mache etwas falsch oder ist dies ein bug? Ich bin das hinzufügen von Masken in der Art und Weise in der Dokumentation beschrieben. Die "böse " Maske" erscheint, um seine Koordinaten von der position des Sprites an, ich bin Zeichnung (drawingSprite) Verhältnis zu seinen Eltern.
package
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import mx.core.UIComponent;
public class tmpa extends UIComponent
{
public function tmpa( ):void
{ var topSprite:Sprite = new Sprite();
topSprite.x = 0;
topSprite.y = 0;
addChild( topSprite );
var canvasSprite:Sprite = new Sprite();
canvasSprite.x = 5;
canvasSprite.y = 35;
topSprite.addChild( canvasSprite );
var drawingSprite:Sprite = new Sprite();
canvasSprite.addChild( drawingSprite );
var maskSp:Sprite = new Sprite();
maskSp.graphics.beginFill( 0xFFFFFF, 1 );
maskSp.graphics.drawRect( 0, 0, 200, 200 );
maskSp.graphics.endFill();
//toggle these two lines of code
canvasSprite.addChild( maskSp );
drawingSprite.mask = maskSp;
drawingSprite.graphics.beginFill( 0xFF0000, 1 );
drawingSprite.graphics.drawRect( 0, 0, 200, 200 );
drawingSprite.graphics.endFill();
drawingSprite.graphics.beginFill( 0x00FF00, 1 );
drawingSprite.graphics.drawCircle( 0, 0, 100 );
drawingSprite.graphics.endFill();
//a snapshot with default blue background
var bmd:BitmapData = new BitmapData( 100, 100, false, 0x0000FF );
bmd.draw( drawingSprite );
var bm:Bitmap = new Bitmap( bmd );
bm.x = 300;
bm.y = 35;
addChild( bm );
}
}
}
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:a="*" width="100%" height="100%">
<a:tmpa id="t" width="100%" height="100%" x="0" y="0" left="0" top="0"/>
</mx:Application>
InformationsquelleAutor jedierikb | 2009-04-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern der Maske hinzufügen von Zeilen:
Löst das problem, so gibt es wahrscheinlich einige Verwirrung mit der relativen Koordinate Räume des clips. Ich denke, Sie sollten halten Sie Ihre Maske auf der gleichen Ebene wie Ihre maskierten DisplayObject in Ihrem displaylist um Verwirrung zu vermeiden.
InformationsquelleAutor grapefrukt