2017-04-21 5 views
1

J'ai un sprite qui contient des chevauchements shape s. Le sprite lui-même aura sa valeur alpha à .5, donc je dois régler le blendmode du sprite sur "layer" pour empêcher les parties qui se chevauchent de paraître transparentes les unes avec les autres. Dans cette capture d'écran prise de here, il est censé ressembler à celui de droite.AS3: BitmapData.draw avec alpha et blendmode a un résultat incorrect

enter image description here

Maintenant, je veux draw un bitmapData de mon sprite, mais je ne peux pas obtenir le bitmap résultant pour ressembler à l'image à droite. Il finit par ressembler à l'image au milieu.

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

Est-ce que quelqu'un sait ce que je fais mal?

+0

Juste une supposition sauvage. Essayez de le placer dans un conteneur et dans un conteneur de dessin, pas dans l'image-objet cible. – Organis

Répondre

1

J'ai quelques réflexions sur la cause, mais de toute façon ici comment cela fonctionne:

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);