프로그래밍/Flex/AIR2007.02.08 14:25



<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" backgroundGradientColors="[#808080, #808080]"
 creationComplete="initApp();">
 <mx:Script>
  <![CDATA[
   import mx.core.UIComponent;
 
   private var img:Image;
   private var offscreen:BitmapData;
   
   private function initApp():void
   {
    // onscreen
    testScreen.cacheAsBitmap = true;
    testScreen.opaqueBackground = "opaque"; // 해결
         
          // 오프스크린 생성
          offscreen = new BitmapData(200,150,true,0xff000000);
         
          // 동적 리소스 -> 비트맵데이터
          //loadResource();
         
         
          //test
          testOffscreen();
   }
   
   private function loadResource():void
   {
    loadingImg.addEventListener(Event.COMPLETE, onLoadComplete);
    loadingImg.source = "assets/0-0-0-0.png"; // 투명 타일(빨간색선 마름모)
   }
   
   // 이미지가 로드 되었다면, 화면에 그려본다.
   private function onLoadComplete(e:Event):void
   {
    //trace("[loadingImg::Event.COMPLETE] lodingImg cw,ch : " + loadingImg.contentWidth + ", " + loadingImg.contentHeight);
         
          // 오프스크린에 타일을 그려본다
          offscreen.copyPixels(getBitmapData(e.target as Image),
                new Rectangle(0,0, loadingImg.contentWidth,loadingImg.contentHeight),
                new Point(0,0));
         
          // flipping (offscreen -> onscreen)     
          testScreen.source = new Bitmap(offscreen);
   }
   
   private function testOffscreen():void
   {
    // 오프스크린에 타일을 그려본다
          offscreen.copyPixels(getBitmapData(embeddedImg),
                new Rectangle(0,0, embeddedImg.contentWidth,embeddedImg.contentHeight),
                new Point(0,0));
               
         
          // flipping (offscreen -> onscreen)     
          testScreen.source = new Bitmap(offscreen);
         
         
          //onScreen2.opaqueBackground
   }
   
   
   // 이미지를 읽어서 비트맵 데이터로 만든다
   private function getBitmapData( target : Image ) : BitmapData
      {
       var bd : BitmapData = new BitmapData( target.contentWidth, target.contentHeight,
                 true, 0x00ffffff); // 알파 적용
       var m : Matrix = new Matrix();
       bd.draw( target, m );
       return bd;
      }
     
  ]]>
 </mx:Script>
 
 <mx:Image x="10" y="10" id="testScreen"/>
 <mx:Image x="379.5" y="10" id="embeddedImg" source="@Embed('assets/0-0-0-0.png')"/>
 <mx:Image x="379.5" y="51" id="loadingImg"/>
 <mx:Label x="271.5" y="10" text="투명 png : "/>
 <mx:Label x="271.5" y="51" text="투명 png(동적로드)"/>
 
</mx:Application>
신고
Posted by 시난

티스토리 툴바