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

Schreibe einen Kommentar