2014-01-11 6 views
1

다른 변환 및 블렌드 모드를 사용하여 투명 스프라이트로 bitmapdata를 채우고 싶습니다. 그리기 후에 이미지의 테두리에 선이 생깁니다. 여기 블렌드 모드에서 BitmapData.draw()를 사용할 때의 버그

http://www.flasher.ru/forum/attachment.php?attachmentid=30348&stc=1&d=1389390901

여기에 코드의 예를 혼합 - 모드를 사용 singleSp 당신이 투명한 이미지

package 
    { 
import flash.display.Bitmap; 
import flash.display.BitmapData; 
import flash.display.Sprite; 
import flash.geom.ColorTransform; 
import flash.geom.Matrix; 
import flash.geom.Rectangle; 
import flash.display.StageScaleMode; 
import flash.display.StageAlign; 

public class Main extends Sprite 
{ 

    [Embed(source = "assets/pic1.png")] 
    public var singleSp:Class; 

    var picBD:BitmapData; 
    var picBM:Bitmap; 


    public function Main():void 
    { 
     picBD = new BitmapData(600, 600, true, 0); 
     picBM = new Bitmap(picBD, "auto", true); 
     addChild(picBM); 

     var tr:Matrix = new Matrix(); 

     var drawIm:BitmapData = (new singleSp as Bitmap).bitmapData; 

     for (var i:int = 0; i < 30; i++) { 

      var scale:Number = 0.3 + Math.random() * 0.8;    
      tr.setTo(1, 0, 0, 1, 0, 0); 
      tr.scale(scale, scale); 
      tr.rotate(Math.random() * 2); 
      tr.tx = Math.random() * 150 + 150; 
      tr.ty = Math.random() * 150;     

      picBD.draw(drawIm, tr, new ColorTransform(1,1,1,0.4), "invert", null, true); 

     } 
    }  
} 

를 사용할 수있는 경우 혼합 - 모드를 http://www.flasher.ru/forum/attachment.php?attachmentid=30347&stc=1&d=1389390901 그리고 결과를 사용하지 않고 결과의 스크린 샷입니다 }

+0

도면에서 색상 변환을 수행하지 않으면 어떻게됩니까? 국경이 있을까요? – Vesper

+0

불행히도 예 – artics

+0

어떤 블렌드 모드로 인해 발생합니까? 어쩌면 단지 "반전"일까요? 그 이유는 inversion이 내부적으로 1-alpha 테두리를 사용하여 0-alpha가 아닌 혼합을 수행한다는 것이고 이것이 여러분이 보는 것입니다. 그래서 나는 이것이 벌레라고 생각합니다. – Vesper

답변

0

테스트를 실행 한 결과 해당 선 (이미지 가장자리)을 볼 수 있습니다. 내 g 아우스 티스는 반투명 한 색조에 의한 것입니다.