2012-05-20 2 views
2

액션 스크립트 비트 맵 (또는 비트 맵 데이터)이 이상합니다. 뿐만 아니라 cacheAsBitmap은 기본적으로 false이지만, BitmapData는 실제로 비트 맵이 아닙니다!Actionscript 3에서 실제로 래스터 화하는 방법은 무엇입니까?

알아 두어야 할 점은 텍스트 줄 알파를 움직이면 깜박이는 것입니다. 내가 비트 맵을 배경으로 텍스트를 그리기와 비트 맵 애니메이션 된 하나가, 여러 가지 방법으로 그것을 해결하려고 : 그것은 어떻게해야

package 
{ 
    import flash.events.Event; 
    import flash.display.Sprite; 

    import flash.display.Bitmap; 
    import flash.display.BitmapData; 

    import flash.text.TextField; 

    public class Main extends Sprite 
    { 
     private var bdata1:BitmapData = new BitmapData (150, 50, false, 0xDDDDFF); 
     private var bitmap1:Bitmap = new Bitmap(bdata1); 
     private var bdata2:BitmapData = new BitmapData (100, 100, false, 0x00FFFF); 
     private var bitmap2:Bitmap = new Bitmap (bdata2); 

     private var show:Boolean = false; 

     public function Main():void 
     { 
      stage.frameRate = 1; 
      var tf:TextField = new TextField(); 
      tf.text = "layer top"; 
      bdata1.draw(tf); 
      tf.text = "layer bottom" 
      bdata2.draw (tf); 

      //* 
      bitmap1.cacheAsBitmap = true; 
      bitmap2.cacheAsBitmap = true; 
      //*/ 

      addChild (bitmap2); 
      addChild (bitmap1); 
      addEventListener (Event.ENTER_FRAME, onEnterFrame); 
     } 

     private function onEnterFrame (e:Event):void 
     { 
      if (show) var diff:Number = .2; 
      else diff = -.2; 

      bitmap1.alpha += diff; 
      if (bitmap1.alpha >= 1) { 
       show = false; 
       bitmap1.alpha = 1; 
      } 
      else if (bitmap1.alpha <= 0) { 
       show = true; 
       bitmap1.alpha = 0; 
      } 
     } 
    } 
} 

원활입니다 (물론, 당신은 FPS 변경하는 경우) 계층 '사이의 전환을 하단 "과"레이어 상단 "텍스트. 적어도 비트 맵의 ​​텍스트는 비트 맵처럼 취급되지 않지만 여전히 벡터 (TextLine)로 취급된다는 사실을 분명히 보여주는 것은 제 컴퓨터에서 이상합니다. 그렇다면 비트 맵 데이터 만 비트 맵을 에뮬레이션합니까? 그게 버그 야? 내가 놓친 게 있니?

+0

http://megaswf.com/file/2433597 여기에 직접 컴파일하지 않으려는 경우입니다. (전체 화면 모드 사용) –

답변

3

우선 sw34에 Font을 삽입해야합니다. 당신은 "Arial"을 묻힌 것으로 가정합니다. 그런 다음 시도해보십시오.

var tf:TextField = new TextField(); 
var tf_format:TextFormat = tf.defaultTextFormat; 
tf_format.font = "Arial"; //Specifying embedded font's name 
tf.defaultTextFormat = tf_format; 
tf.embedFonts = true; 
tf.antiAliasType = AntiAliasType.ADVANCED; 
//......... 

다음은 '부드러운 텍스트'입니다.

+0

와우, 도움이 될 것이라고는 생각하지 않지만 (지금은 래스터 화 된 텍스트의 AA 문제에 초점을 맞추지 않았 음) 실제로 그렇게했습니다. 나는 아직도 궁금해. 왜? Flash Player는 비트 맵이 있음을 알려주지 만, 글꼴이 포함되지 않은 텍스트를 그릴 수 없으면 시스템 글꼴을 비트 맵 위에 놓고 투명성이 나타나면 정말 이상한 일을합니다. 어느 쪽이든, 당신은 내 영웅입니다. 이제는 비트 맵을 사용하지 않고 겹치는 TextLines의 알파를 변경해 보겠습니다. –

+0

@ MarkusvonBroady 환영합니다. – Engineer

관련 문제