home > May 2007
ColorMatrixFilter()
May 29, 2007
ColorMatrixFilter( matrix:Array )
RGBA カラー値とアルファ値の4×5のマトリックス構成を持つ 20 個のアイテムの配列です。 これで彩度変更、色相回転、輝度アルファ変換などの効果を行うことができます。
配列の内容は以下
R G B A ofs
r 1 0 0 0 0
g 0 1 0 0 0
b 0 0 1 0 0
a 0 0 0 1 0
細かい設定の内容はよく分かりませんが、それはいじって覚えるほうがいいでしょう。
かっこいいサンプルがあったのでリンク。
http://casualplay.net/blog/2005/11/_blendmode_1.html
Tweet
blendMode
May 25, 2007
MovieClip.blendMode="add" or 8
のように記述すれば、MovieClipを加算してくれます。モードの種類は名前か数字で書きます。
モードの種類
○ "normal" (1) [通常]
○ "layer" (2) [レイヤー]
○ "multiply" (3) [乗算]
○ "screen" (4) [スクリーン]
○ "lighten" (5) [比較 (明)]
○ "darken" (6) [比較 (暗)]
○ "difference" (7) [差の絶対値]
○ "add" (8) [加算]
○ "subtract" (9) [減算]
○ "invert" (10) [反転]
○ "alpha" (11) [アルファ]
○ "erase" (12) [消去]
○ "overlay" (13) [オーバーレイ]
○ "hardlight" (14) [ハードライト]
Tweet
Matrix クラス
Matrix クラスによく使うメソッドがあるんですね。今さらですが気付いたのでメモ。
○ translate メソッド : x座標,y座標を変化させてMCを移動させたい時に使用
○ scale メソッド : MCを拡大/縮小したい時に使用
○ rotate メソッド : MCを回転させたい時に使用
○ draw メソッド : MCの情報を別なMCに書き込む
使用例
//クラスをインポート
import flash.geom.Matrix//Matrixクラスのインスタンスを生成
var _mat:Matrix = new Matrix();//x軸に200、y軸に100、平行移動
_mat.translate(200,100);//45度、回転(角度はラジアン)
_mat.rotate( 45*Math.PI/180 );//幅・縦の倍率を0.5倍
_mat.scale( 0.5 , 0.5 );//_matの情報をother_mcに書き込む
other_mc.draw(stamp,_mat)
Tweet
画像の色を平均化
May 22, 2007
色ネタでもういっちょう。色の平均化のプログラムを作ってみました。
~画像に50ピクセルごとにプロットをうつ(省略)~
//各プロットの色を検出
for (i=1; i<=45; i++) {
//各プロットの色
var clr2:Number = pict_bd.getPixel(xzahyou[i], yzahyou[i]);r[i] = (clr2 & 0xFF0000) >> 16;
g[i] = (clr2 & 0x00FF00) >> 8;
b[i] = clr2 & 0x0000FF;
}//R、G、B、それぞれの色の平均値を求める
for (i=1; i<=45; i++) {
R_Plus = R_Plus+r[i];
G_Plus = G_Plus+g[i];
B_Plus = B_Plus+b[i];
}
trace("R平均値 = "+Math.floor(R_Plus/45));
trace("G平均値 = "+Math.floor(G_Plus/45));
trace("B平均値 = "+Math.floor(B_Plus/45));RGBを16進数に変換
aa_numb = Math.floor(R_Plus/45).toString(16);
bb_numb = Math.floor(G_Plus/45).toString(16);
cc_numb = Math.floor(B_Plus/45).toString(16);
trace("R平均値(16進数) = "+aa_numb);
trace("G平均値(16進数) = "+bb_numb);
trace("B平均値(16進数) = "+cc_numb);//16以下なら前に0を加える
if(Math.floor(R_Plus/45) <= 16 ){aa_numb = "0"+aa_numb;}
if(Math.floor(G_Plus/45) <= 16 ){bb_numb = "0"+bb_numb;}
if(Math.floor(B_Plus/45) <= 16 ){cc_numb = "0"+ cc_numb;}cPlus = "0x" + aa_numb + bb_numb + cc_numb;
trace("合計カラー値 = "+cPlus);//RGBを表示
trace(aa_numb + bb_numb + cc_numb);
this.kpicer.rgb.text = aa_numb + bb_numb + cc_numb;//カラー設定関数
ColorSet(cPlus);
function ColorSet(nu:Number) {
var myColor:Color = new Color(this.colorimg);
myColor.setRGB(nu);
}
this.stop();
Tweet
getPixel()
May 21, 2007
public function getPixel(x:int, y:int):uint
BitmapData オブジェクトの特定ポイント (x, y) の RGB ピクセル値を表す整数を返します。getPixel() メソッドは、乗算されていないピクセル値を返します。アルファ情報は返しません。 また、座標がイメージの外側である場合、メソッドは 0 を返します。
import flash.display.BitmapData;var bmd:BitmapData = new BitmapData(80, 40, false, 0xFF0000);
//座標(80、40)の色情報を取得
var pixelValue:uint = bmd.getPixel(1, 1);
//16進数のRBGカラー値に変換
trace(pixelValue.toString(16)); // ff0000;
この場合、戻り値がピクセル値なので、MC.toString(16)で16進数のRGBカラー値になります。
また、getPixel32()という関数もあるみたい。 これはアルファチャンネルデータと RGB データを含む ARGB カラー値を返します。
さらに、getPixels() という関数もあります。これはピクセルデータの矩形領域からバイト配列を生成しますらしいです。これはよくわかりません‥
参考サイトはこちらです。
Tweet
getBounds()
May 20, 2007
getBounds( ) はムービークリップの指定されたインスタンスの最大・最小のX座標とY座標を示すプロパティを返します。
var Result = MovieClip.getBounds(_root); //座標の取得
var Xmin = Result.xMin; //X座標最小値
var Xmax = Result.xMax; //X座標最大値
var Ymin = Result.yMin; //Y座標最小値
var Ymax = Result.yMax; //Y座標最大値
また_rootの部分をMovieClipの名前にすれば、そのMovieClip内の座標の値が得られます。
MCのx最大・最小座標、y最大・最小座標にラインを引くサンプルを作ってみました。
下記のソースを繰り返せばリニアに変更します。
var Result = this.obj.getBounds(_root); //座標の取得
var Xmin = Result.xMin; //X座標最小値
var Xmax = Result.xMax; //X座標最大値
var Ymin = Result.yMin; //Y座標最小値
var Ymax = Result.yMax; //Y座標最大値
this.createEmptyMovieClip("myMCy1", 1);
myMCy1.lineStyle ( 1 , 0xCC9933 , 100 );
myMCy1.moveTo ( 0 , Ymin );
myMCy1.lineTo ( 700 , Ymin );this.createEmptyMovieClip("myMCy2", 2);
myMCy2.lineStyle ( 1 , 0xCC9933 , 100 );
myMCy2.moveTo ( 0 , Ymax );
myMCy2.lineTo ( 700 , Ymax );this.createEmptyMovieClip("myMCx1", 3);
myMCx1.lineStyle ( 1 , 0xCC9933 , 100 );
myMCx1.moveTo ( Xmin, 0 );
myMCx1.lineTo ( Xmin, 200 );this.createEmptyMovieClip("myMCx2", 4);
myMCx2.lineStyle ( 1 , 0xCC9933 , 100 );
myMCx2.moveTo( Xmax, 0 );
myMCx2.lineTo( Xmax, 200 );
Tweet
Flash CS3
May 12, 2007
Flash CS3の英語版の体験版をダウンロードしてみる。インストールするまでかなり時間がかかる。いろいろFlasherのBlogを読みながら勉強しようかと思っとります。
Tweet
Google Analytics
May 11, 2007
Googleのアクセス解析サービスGoogle Analyticsがベータ版で新しくなっている。見やすいし使いやすくなってる。正直、前のバージョンは見にくいし使いにくかったのでうれしいっす。どっちにしろこんな豊富なツールを無料で提供してくれるGoogleはいいね。AdSenseも利用させてもらってるし、検索も絶対Google。気がつけばGoogleだらけです。
Tweet
attachMovie()
May 01, 2007
ライブラリーからステージ上に配置する時につかう関数ですが、きれいな書き方があるので紹介。
var Obj = this.attachMovie("Obj", "Obj" + n , n );↓
Obj._x = _root._xmouse;
Obj._y = _root._ymouse;
var Obj = this.attachMovie("Obj", "Obj" + n , n ,
{_x : _root._xmouse, _y : _root._ymouse});
どちらも同じ意味ですが、これからは下の方を。
Tweet