デバイスフォントに透明度を設定
- 2010 年 12月 11 日
Flash Player 10未満でパブリッシュした場合、デバイスフォントのテキストフィールドを半透明にしようとalphaを設定しても透明度は反映されません。テキストフィールドの親表示オブジェクトのalphaを設置しても同じです。たとえば以下のソースはFlash Player 9書き出しだと半透明になりません。
デバイスフォントでalpha = 0.5。Flash Player 9書き出し
var field1:TextField = new TextField(); field1.x = 20; field1.y = 20; addChild( field1 ); var format:TextFormat = new TextFormat(); format.color = 0x000000; format.size = 14; format.align = TextFormatAlign.CENTER; field1.defaultTextFormat= format; field1.width = 280; field1.multiline = false; field1.wordWrap = false; field1.embedFonts = false; field1.defaultTextFormat= format; var field2 = new TextField(); field2.defaultTextFormat= format; field2.width = 280; field2.multiline = false; field2.wordWrap = false; field2.embedFonts = false; field2.defaultTextFormat= format; var sprite:Sprite = new Sprite(); sprite.x = 20 sprite.y = 60 sprite.graphics.lineStyle( 2 ); sprite.graphics.drawRect( 0,-2,280,22 ); addChild( sprite ); sprite.addChild( field2 ); field1.alpha = 0.5; sprite.alpha = 0.5; field1.text = "field1.alpha=" + field1.alpha + " / ver." + this.loaderInfo.swfVersion; field2.text = "sprite.alpha="+ field1.alpha + ", field2.alpha=" + field2.alpha + " / ver." + this.loaderInfo.swfVersion; |
Flash Player 10以降ではこの問題がついに解決されて、デバイスフォントでも半透明に表示されます。
デバイスフォントでalpha = 0.5。Flash Player 10書き出し
しかし以下のようにColorMatrixFilterが利用できるなら、環境によって文字が少し滲んだりcacheAsBitmapが有効になったりとFilter利用の弊害はありますが、Flash Player 10未満でもデバイスフォントの透明度を変更できます。
//field1.alpha = 0.5; //sprite.alpha = 0.5; var filter:ColorMatrixFilter = new ColorMatrixFilter(); var mat:Array = filter.matrix mat[ 18 ] = 0.5; filter.matrix = mat; field1.filters = [ filter ]; sprite.filters = [ filter ]; field1.text = "field1.alpha=" + field1.alpha + " / ver." + this.loaderInfo.swfVersion; field2.text = "sprite.alpha="+ field1.alpha + ", field2.alpha=" + field2.alpha + " / ver." + this.loaderInfo.swfVersion; |