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


Permalink | Comments (0)

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) [ハードライト]


Permalink | Comments (0)

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)



Permalink | Comments (0)

画像の色を平均化

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();


Permalink | Comments (0)

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() という関数もあります。これはピクセルデータの矩形領域からバイト配列を生成しますらしいです。これはよくわかりません‥

参考サイトはこちらです。


Permalink | Comments (0)

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 );


Permalink | Comments (0)

Flash CS3

May 12, 2007

Flash CS3の英語版の体験版をダウンロードしてみる。インストールするまでかなり時間がかかる。いろいろFlasherのBlogを読みながら勉強しようかと思っとります。


Permalink | Comments (0)

Google Analytics

May 11, 2007

Googleのアクセス解析サービスGoogle Analyticsがベータ版で新しくなっている。見やすいし使いやすくなってる。正直、前のバージョンは見にくいし使いにくかったのでうれしいっす。どっちにしろこんな豊富なツールを無料で提供してくれるGoogleはいいね。AdSenseも利用させてもらってるし、検索も絶対Google。気がつけばGoogleだらけです。


Permalink | Comments (0)

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});

どちらも同じ意味ですが、これからは下の方を。


Permalink | Comments (0)