2017-04-21 15 views
1

중복되는 shape이 포함 된 sprite이 있습니다. 스프라이트 자체는 .5로 알파가 설정되므로 스프라이트의 blendmode을 "레이어"로 설정하여 겹치는 부분을 서로 투명하게 보이게 유지해야합니다. here에서 찍은이 스크린 샷에서는 오른쪽에있는 것처럼 보입니다.AS3 : 알파 및 blendmode가 포함 된 BitmapData.draw의 결과가 잘못되었습니다.

enter image description here

지금 내 요정에서 drawbitmapData 싶지만 결과 비트 맵 오른쪽 그림과 같이 얻을 수 없습니다. 그것은 중간에있는 이미지처럼 보입니다.

spriteBMD.draw(mySprite,null,mySprite.transform.colorTransform,"layer"); 

내가 뭘 잘못하고 있는지 알 수 있습니까?

+0

그냥 추측입니다. 대상 스프라이트가 아닌 컨테이너와 그리기 컨테이너에 넣으십시오. – Organis

답변

1

나는 근본 원인에 대한 몇 가지 생각을 가지고 있지만 어쨌든 여기가 작동하는 방법 :

import flash.display.BitmapData; 
import flash.display.BlendMode; 
import flash.display.Bitmap; 
import flash.geom.ColorTransform; 

var bmd:BitmapData = new BitmapData(mc.width, mc.height); 
var bitmap:Bitmap = new Bitmap(bmd); 

var sourceTransform:ColorTransform = mc.transform.colorTransform; 
var bmdTransfrom:ColorTransform; 

if(mc.blendMode == BlendMode.NORMAL) 
{ 
    bmdTransfrom = sourceTransform; 
}else 
{ 
    bitmap.transform.colorTransform = sourceTransform; 
} 

bmd.draw(mc, null, bmdTransfrom, mc.blendMode); 

addChild(bitmap);