Matrixクラス(3)

| コメント(0) | トラックバック(0)

MatrixクラスとBitmapDataクラスを利用して、こんなのつくってみた。
あんまり見すぎると気持ち悪くなるので注意。

FLASH PLAYER

Get Adobe Flash player

【製作過程】

swfファイル(flaファイル)と同階層に「icon.jpg」を用意。
以下のコードを、タイムラインの弟1フレームに記述。


icon.jpg

import flash.display.BitmapData;
import flash.geom.Matrix;

//キャプチャ用MCを生成
var load_mc:MovieClip=this.createEmptyMovieClip("load_mc",1);
//MovieClipLoaderインスタンスを生成
var mcl:MovieClipLoader=new MovieClipLoader();
//リスナーオブジェクトを生成
var obj:Object=new Object();
//読み込み終了後の処理
obj.onLoadInit=function():Void{
 var bmp:BitmapData=new BitmapData(load_mc._width,load_mc._height,true,0x00FFFFFF);
 //「icon.jpg」を読み込んだ「load_mc」をBitmapDataインスタンスにキャプチャ
 bmp.draw(load_mc);
 //キャプチャ用MCを削除
 load_mc.removeMovieClip();
 var angle:Number=0;
 _root.onEnterFrame=function():Void{
  angle++;
  if(angle>=360){angle=0;}
  var matrix:Matrix=new Matrix();
  //マトリックス回転
  matrix.rotate(Math.PI/180*angle);
  //マトリックス傾斜
  matrix.b=Math.tan(Math.PI/180*angle);
  matrix.c=Math.tan(Math.PI/180*angle);
  var view_mc:MovieClip=this.createEmptyMovieClip("view_mc",2);
  view_mc.beginBitmapFill(bmp,matrix,true,true);
  view_mc.moveTo(0,0);
  view_mc.lineTo(0,300);
  view_mc.lineTo(300,300);
  view_mc.lineTo(300,0);
  view_mc.lineTo(0,0);
  view_mc.endFill();
 }
}
//リスナーオブジェクトをMovieClipLoaderインスタンスに登録
mcl.addListener(obj);
//MovieClipLoaderインスタンスにロード
mcl.loadClip("icon.jpg",load_mc); 

【製作のポイント】

外部ファイルをBitmapDataに直接読み込ませることはできないので、一旦ムービークリップに読み込ませ、それをキャプチャ(BitmapData.draw(MC))してBitmapDataに変換している。


赤字で示した「beginbitmapFill」はムービークリップのメソッドで、描画領域をビットマップイメージで塗りつぶす(タイル状に配置する)。

beginBitmapFill (MovieClip.beginBitmapFill メソッド)

public beginBitmapFill(bmp: BitmapData , [matrix: Matrix ], [repeat: Boolean ], [smoothing: Boolean ]) : Void

トラックバック(0)

トラックバックURL: http://www.ayabin.jp/mt5/mt-tb.cgi/192

コメントする

このブログ記事について

このページは、webmasterが2009年8月20日 11:33に書いたブログ記事です。

ひとつ前のブログ記事は「Matrixクラス(2)」です。

次のブログ記事は「二次元配列」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。