AS3 비트맵 데이터 투명 채널 가져오기

5071 단어 투명도통로.
위 코드:

  
  
  
  
  1. private static function start():void
  2.    var jpeg3Encoder:JPEG3Encoder = new JPEG3Encoder(); 
  3.    var bitmapData:ByteArray = jpeg3Encoder.encode(_bitmap); 
  4.    var bitmapAlphaData:ByteArray = jpeg3Encoder.bitmapAlphaBytes; 
  5.    bitmapAlphaData.compress(); 
  6.     
  7.    //  
  8.    var jpg:TagDefineBitsJPEG3 = getPngTag();//new TagDefineBitsJPEG3(); 
  9.    jpg.bitmapAlphaData = bitmapAlphaData; 
  10.    jpg.bitmapData = bitmapData; 
  11.     
  12.    //  
  13.    var txt:TagDefineEditText = getTextTag(); 
  14.    txt.initialText = _desc; 
  15.    txt.html = false
  16.     
  17.     
  18.    // SWF 
  19.    var ba:SWFData = new SWFData(); 
  20.    defaultSwf.publish(ba); 
  21.     
  22.    var swfStream:FileStream = new FileStream(); 
  23.    swfStream.open(new File(_fileName), FileMode.WRITE); 
  24.    swfStream.writeBytes(ba); 
  25.    swfStream.close(); 
  26.     
  27.    //  
  28.    if(_callBack != null ) _callBack.call(); 
  29.   } 
  30.   
  31. private static function getTextTag():TagDefineEditText{ 
  32.    for(var i:int=0;i<defaultSwf.tags.length;i++){ 
  33.     if(defaultSwf.tags[i] is TagDefineEditText){ 
  34.      return defaultSwf.tags[i] as TagDefineEditText; 
  35.     } 
  36.    } 
  37.    return null
  38.   } 
  39.    
  40.   private static function getPngTag():TagDefineBitsJPEG3{ 
  41.    for(var i:int=0;i<defaultSwf.tags.length;i++){ 
  42.     if(defaultSwf.tags[i] is TagDefineBitsJPEG3){ 
  43.      return defaultSwf.tags[i] as TagDefineBitsJPEG3; 
  44.     } 
  45.    } 
  46.    return null
  47.   } 

AIR로 SWF를 생성하는 과정에서 여러 가지 방법을 테스트했지만 요구를 충족시키지 못했다. 마지막으로 생각한 방법은 하나의 모듈로 안에 도형을 넣은 것이다. 연결명은 bmp이고text속성명은 txt를 넣은 다음에 SWFData를 통해 SWF의 내용을 읽고 그 안에 있는 tag를 수정한 다음에 저장해서 나의 요구에 도달했다.
 
사용할 리소스 패키지는 SWFDATA입니다.

좋은 웹페이지 즐겨찾기