2009-04-14 59 views
1

我遇到了一個奇怪的行爲,將一個精靈繪製成一個BitmapData。直接畫到屏幕上時,這個精靈看起來很好。但是,當這個精靈被繪製成一個BitmapData時,這個精靈正在被屏蔽...... ,但是沒有這樣的精靈應用於該精靈!用一個奇怪的面具將精靈畫成bitmapdata

這個「壞面具」可以通過對我正在繪製的精靈應用/不應用不同的面具來打開和關閉...。該面罩與「不良面罩」的形狀或位置不同。

alt text http://img5.imageshack.us/img5/8310/masked.png

我想知道如果我我做錯了什麼,或者這是一個錯誤?我以described in the documentation的方式添加了蒙版。 「壞面具」似乎從我繪製的精靈(drawingSprite)相對於其父母的位置獲得它的座標。


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> 

回答

1

改變掩模添加一些行來:

canvasSprite.addChild(maskSp); 
canvasSprite.mask = maskSp; 

可以解決問題,所以可能有一些混亂與相對座標的剪輯的空格。我認爲你應該將你的蒙版與你的顯示列表中的蒙面DisplayObject保持在同一水平上,以避免混淆。

+0

Thx!我在api中的掩碼示例之後對我的代碼進行了建模,這在我的示例中進行修改時似乎有點小問題。 – jedierikb 2009-04-15 00:37:03