ll_koba_llさんがコメントをくれたので、試してみた。4KBになりました。ただ、やっぱりBitmapそのままだと回転するときにギザギザになるからスムージングかけたんだけど、そうするとそうするでぼやけるなぁと。まあ、でも4KBだし。前作ったやつ(※3.4MB)のほうが描写はきれいだけど、、、。でも重さ的に使えないかなぁ。
var b:BitmapData = new BitmapData(tf.width, tf.height); b.draw(tf); var bp:Bitmap = new Bitmap(b,"never",true); var d:DisplayObject = this.targetContainer.addChild(bp); d.blendMode = BlendMode.MULTIPLY;
Bitmapの処理あんまよく理解してなかったなぁ。pixelSnappingとか初めて知ったし。テキストフィールドごとBitmapにしてしまうので、背景がついてしまう。BlendModeを変えて透けるようにしました。以下ソースの一部。。。メモです。だから、来週のAS勉強会の準備をするんだってば。
package net.ra66it.draw{
import flash.display.Sprite;
import flash.events.Event;
import flash.display.DisplayObjectContainer;
import flash.display.Graphics;
//カスタムクラス
import net.ra66it.xml.XMLloader;
import net.ra66it.draw.GraphXmlAnalytic2;
import com.yokozunat.utils.BitmapFilterUtil;
import com.yokozunat.draw.Ball;
//text
import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.TextFormatAlign;
import flash.text.TextFieldAutoSize;
import flash.text.AntiAliasType;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.DisplayObject;
import flash.display.BlendMode;
import flash.system.Capabilities;
public class Graph extends Sprite {
private var xmlLoader:XMLloader;
private var mainXml:XML;
private var targetContainer:DisplayObjectContainer;
//配列
private var newsIDAry:Array;
private var newsTitleAry:Array;
private var newsSiteURLIDAry:Array;
private var newsAccessCountAry:Array;
//描画
var g:Graphics;
function Graph(xmlUrl:String, container:DisplayObjectContainer) {
this.targetContainer = container;
//UTF-8だからtrue
var isUnicode:Boolean = true;
//XMLファイルを読み込む
this.xmlLoader = new XMLloader(xmlUrl, isUnicode);
this.xmlLoader.addEventListener(XMLloader.LOAD_COMPLETE, onXMLloaded);
}
/**============================================================================================
* XML読み込み完了
============================================================================================*/
private function onXMLloaded(event:Event):void {
//XMLオブジェクトを受け取る
this.mainXml = this.xmlLoader.getXML();
var graphXmlAnalytic2:GraphXmlAnalytic2 = new GraphXmlAnalytic2();
this.newsIDAry = graphXmlAnalytic2.getNewsIdAry(this.mainXml);
this.newsTitleAry = graphXmlAnalytic2.getNewsTitleAry(this.mainXml);
this.newsSiteURLIDAry = graphXmlAnalytic2.getSiteURLIDAry(this.mainXml);
this.newsAccessCountAry = graphXmlAnalytic2.getAccessCountAry(this.mainXml);
setDrawGraph();
}
private function setDrawGraph():void {
var tmpSprite:Sprite = new Sprite;
g=tmpSprite.graphics;
//g.lineStyle(1,0x6600CC,1);
g.beginFill(0xcccc66);
g.moveTo(10,400);
var n:Number=0;
var lastX:Number;
for (var i:int=0; i < newsIDAry.length; i++) {
n=this.newsAccessCountAry[i]/180;
g.lineTo(i * 1 * 400/newsIDAry.length+10, 400 - n);
var myBall:Ball = new Ball(5,0x333300);
myBall.x = i * 1 * 400/newsIDAry.length+10;
myBall.y = 400 - n;
tmpSprite.addChild(myBall);
setText(myBall.x,myBall.y,this.newsTitleAry[i]);
}
g.lineTo((i-1) * 1 * 400/newsIDAry.length+10, 400);
g.lineTo(10,400);
g.endFill();
var filter:BitmapFilterUtil = new BitmapFilterUtil;
filter.getBevel(tmpSprite);
filter.getDropShadow(tmpSprite);
this.targetContainer.addChild(tmpSprite);
}
function setText(X:Number, Y:Number, Title:String):void {
var tf:TextField = new TextField();
//tf.embedFonts = true;
tf.autoSize = TextFieldAutoSize.LEFT;
tf.antiAliasType = AntiAliasType.ADVANCED;
tf.defaultTextFormat = getTextFormat(10);
tf.selectable = false;
tf.mouseEnabled = true;
tf.multiline = true;
tf.wordWrap = true;
tf.width = 400;
tf.height = 300;
//tf.x = X;
//tf.y = Y-10;
tf.text = "";
for (var i:int = 0; i<30; i++) {
tf.text = Title;
}
//tf.rotation = -70;
//this.targetContainer.addChild(tf);
var b:BitmapData = new BitmapData(tf.width, tf.height);
b.draw(tf);
var bp:Bitmap = new Bitmap(b,"never",true);
var d:DisplayObject = this.targetContainer.addChild(bp);
d.x = X;
d.y = Y-10;
d.rotation = -70;
d.blendMode = BlendMode.MULTIPLY;
}
private function getTextFormat(fontSize:Number):TextFormat {
var format:TextFormat = new TextFormat();
format.size = fontSize;
format.leading = fontSize*0.5;
format.color = "0x333300";
var whatOs:String = Capabilities.os;
if (whatOs.slice(0,3) == "Mac") {
format.font = "ヒラギノ角ゴ Pro W6";
} else if (whatOs.slice(0,3) == "Win") {
format.font = "MS Pゴシック";
} else {
format.font = "sans-serif";
}
return format;
}
}
}
related links
- » グラフの表示実験、アクセス数より(※重いデス)
- » Windows Meでフォントを指定すると日本語が文字化けする【Flash】
Windows MeでTextFieldにTextFormatでフォントを指定すると日本語が文字化けするってことをしらなかったので、メモ。日本語のフォントがだめなのかな? Adobe Flash Player:必要システム構成を見るとWindows Meも動作すると書かれているので、どんな人が見るかにもよると思うけど、、、。一応、覚え書き。以下のようなかんじで、OSを見てや... - » Buttons2
- » SwButton
- » TransformColor
投稿
trackback
http://ra66it.net/trackback/blog/studylog/entry-721.html
url
http://ra66it.net/blog/studylog/entry-721.html































































