とりあえず、AS3(Flash9)でいろいろ描画
■細かい事は、他のサイトでも説明していると思うのでとばして、描画クラス「Glib01.as」をプロジェクトに追加する所からはじめます
これでダイアログが出てきますので、「Glib01.as」を入力し追加してください。
追加が終わると。
そして、実際のソースは
「Glib01.as」
package { import flash.display.*; import flash.geom.*; import flash.text.*; public class Glib01 { //---------------------------------------------------- private var bd:BitmapData; private var width:uint; private var height:uint; private var label:TextField; private var format:TextFormat; //---------------------------------------------------- // public function Glib01( w:uint, h:uint ){ bd = new BitmapData( w, h, false, 0xffffff ); //------------------------------ label = new TextField(); label.autoSize = TextFieldAutoSize.LEFT; format = new TextFormat(); format.font = "_等幅"; SetColor( 0x000000 ); SetFontSize( 24 ); //------------------------------ width = w; height = h; } //---------------------------------------------------- // public function SetFontSize( size:int):void{ var i:uint; for( i = size+10 ; i >= 1 ; i-- ){ format.size = i; label.setTextFormat( format ); if ( label.textWidth <= size ) break; } } //---------------------------------------------------- //文字表示 public function Print(x:int, y:int, text:String ):void{ if ( text == null ) return; label.text=text; label.setTextFormat(format); var pos:Matrix = new Matrix(); pos.translate( x-(label.width - label.textWidth )/2, y-(label.height-label.textHeight)/2-label.textHeight); bd.draw(label,pos); } //---------------------------------------------------- // public function GetBitmapData():BitmapData { return bd; } //---------------------------------------------------- //画面初期化 public function Cls( color:uint ):void{ BoxFill( 0, 0, width, height, color ); } //---------------------------------------------------- //表示色設定 public function SetFontColor( color:uint ):void { format.color = color; } //---------------------------------------------------- // public function DrawBoxFill(x:int, y:int, w:int, h:int, color:uint ):void{ bd.fillRect( new Rectangle( x, y, w, h ), color ); } //---------------------------------------------------- // public function DrawBoxLine(x:int, y:int, w:int, h:int, color:uint ):void{ var line:Shape = new Shape(); line.graphics.lineStyle(0,color); line.graphics.moveTo(x,y); line.graphics.lineTo(x+w,y); line.graphics.lineTo(x+w,y+h); line.graphics.lineTo(x,y+h); line.graphics.lineTo(x,y); bd.draw( line ); } //---------------------------------------------------- // public function DrawPolygon3(x0:int, y0:int, x1:int, y1:int, x2:int, y2:int, color:uint ):void{ var line:Shape = new Shape(); line.graphics.beginFill(color); line.graphics.moveTo( x0, y0 ); line.graphics.lineTo( x1, y1 ); line.graphics.lineTo( x2, y2 ); line.graphics.endFill(); bd.draw( line ); } //---------------------------------------------------- // public function DrawPolygon4(x0:int, y0:int, x1:int, y1:int, x2:int, y2:int , x3:int, y3:int, color:uint ):void{ var line:Shape = new Shape(); line.graphics.beginFill(color); line.graphics.moveTo( x0, y0 ); line.graphics.lineTo( x1, y1 ); line.graphics.lineTo( x2, y2 ); line.graphics.lineTo( x3, y3 ); line.graphics.endFill(); bd.draw( line ); } //---------------------------------------------------- // public function DrawLine(x0:int, y0:int, x1:int, y1:int, color:uint ):void{ var line:Shape = new Shape(); line.graphics.lineStyle(0,color); line.graphics.moveTo(x0,y0); line.graphics.lineTo(x1,y1); bd.draw( line ); } //---------------------------------------------------- // public function DrawSprite(source:IBitmapDrawable, x:int, y:int ):void { if( source == null ) return; var pos:Matrix=new Matrix(); pos.translate( x, y ); bd.draw( source, pos ); } } }
■「Main.as」はこんなソース
「Main.as」
package { import flash.display.*; import flash.geom.*; import flash.events.*; import flash.utils.*; public class Main extends Sprite { [Embed(source='mimi.png')] private var imageClass:Class; private var bData:Bitmap = new imageClass(); private var g:Glib01 = new Glib01( 640, 480 ); private var vx:int = 2; private var xx:int = 0; //------------------------------------- // public function Main(){ addChild( new Bitmap( g.GetBitmapData() ) ); var timer:Timer=new Timer(32,0); timer.addEventListener(TimerEvent.TIMER,onTick); timer.start(); } //------------------------------------- // private function onTick( evt:TimerEvent ):void{ g.Cls(0x8080ff); g.DrawPolygon3( 0, 0, 50, 20, 20, 50,0xff0000 ); g.DrawPolygon4( 50, 50, 150, 20, 150, 150 ,60, 150,0xff00ff ); g.DrawSprite( bData, xx, 200-xx ); g.DrawBoxLine( xx,10, 100, 100,0x00ff00 ); g.SetFontColor( 0x000000 ); g.Print( 200, 50, "xx="+xx); xx += vx; if( xx < 0 || xx > 200 ) vx = -vx; } } }
■画面の設定
この描画クラスでは、640X480のイメージデータをつくり、そこに描画していく流れになります。
まずは640X480のイメージデータを内部で作成
private var g:Glib01 = new Glib01( 640, 480 );
作成したイメージデータを登録
public function Main(){ addChild( new Bitmap( g.GetBitmapData() ) );
となっています。
■定期的に呼ばれる関数。
この部分で定期的に「onTick」が呼ばれるように設定します。
public function Main(){ : var timer:Timer=new Timer(32,0); timer.addEventListener(TimerEvent.TIMER,onTick); timer.start(); }
■いつもの「mimi.png」を使用します。
[Embed(source='mimi.png')]
「src」ディレクトリの下で「Main.as」「Glib01.as」と同じディレクトリに「mimi.png」を置いておいてください
■実行
実行する時は「Main.as」が選択されている事を確認してからコンパイル+実行をしてください。
今回のソースは実行すると