2005.11.26ページ2
demo1「Flash 8って、結局何がデキルの?」 講師:サブリン氏
demo2「スクリプトでもっとすごい Flash 8」 講師:野中文雄氏
自作アニメ自慢コーナー / トークセッション「Flash8言いたい放題」
司会:笠居トシヒロ氏
ページ1 ページ2 ページ3 |
スクリプトでもっとすごい Flash 8
|
講師:野中文雄氏
毎回立て板に水のごとく説明していただいている野中氏。
今回も司会の立ち入る隙のないほど話していただきました。
|
Flash8 では色んなフィルタを使えるようになりました。
これらのフィルタはスクリプトで制御することができます。
|
ぼかしフィルタ
2年前(Flash5)に作成したデータを Flash8 で作り直してみます。
マウスの位置に対応してぼけ具合が変化してスクロールします。
>>2年前のデータ
>>今回のサンプル |
■フィルタインスタンスの作成
バッハの場合、常にヨハン・セバスチャン・バッハとフルネームで呼ぶのは面倒なので
はじめに一度だけフルネームで宣言し、以下はバッハと、省略するように
フィルタインスタンスを作る場合も、はじめにフルネームで宣言しておきます。
このとき importステートメントを使って宣言します。
BlurFilterクラスのフルネームは、flash.filters.BlurFilterなので
1行目にimport flash.filters.BlurFilter;と、記述した上で
ぼかしフィルタインスタンスを作成します。
var myBlur:BlurFilter = new BlurFilter();
()の中にはこのぼかしフィルタのパラメーターを設定します。
パラメーターの中身は
(X方向のぼけ足 ,
Y方向のぼけ足 , ぼかし回数)
になります。
(注)ぼけ足の方向はステージを基準にしているので、インスタンスが回転しても水平垂直は維持されます。
■配列インスタンスを作り、フィルタインスタンスを格納
空の配列インスタンスを作成し
var filters_array:Array = [];
ぼかしフィルタインスタンスを格納します。
filters_array.push(myBlur);
■フィルタをかけるMovieClipにフィルタを設定
menu_mc.filters = filters_array;
直接MovieClipに設定せずに配列に入れてから適用するので、複数のフィルタを同時に適用するとこもできます。
配列を使わずにfiltersに直接pushしても適用されません。
|
//フルネームを宣言
import flash.filters.BlurFilter;
var nDeceleration:Number = 0.2;
var nMenuY:Number = 0;
this.onEnterFrame = function():Void {
var nMaskY:Number = xScrollMask();
xScrollMenu(nMaskY);
};
//mask_mcをマウスにあわせて垂直に動かす
function xScrollMask():Number {
mask_mc._y += mask_mc._ymouse*nDeceleration;
return mask_mc._y;
}
//menu_mcの位置を設定
function xScrollMenu(nMaskY:Number):Void {
var nDistance:Number = nMenuY-nMaskY;
menu_mc._y += nDistance;
xBlurMenu(nDistance);
nMenuY = nMaskY;
}
function xBlurMenu(nDistance:Number):Void {
//空の配列を設定
var filters_array:Array = [];
//ぼけ足のかかり具合が変化するように変数の設定
var nBlurY:Number = Math.abs(nDistance)*5;
//距離が近い場合はぼけないように設定
if (nBlurY>4) {
//フィルタインスタンスの設定
var myBlur:BlurFilter = new BlurFilter(0, nBlurY);
//配列にフィルタインスタンスを格納
filters_array.push(myBlur);
}
//MovieClipにフィルタを設定
menu_mc.filters = filters_array;
} |
同時に複数のフィルタを設定したサンプルも見せていただきました。
このサンプルではぼかしフィルタにドロップシャドウフィルタを設定しています。
それぞれのフィルタインスタンスを作成し、同じ配列にpushします。
>>サンプル |
|
perlinNoise
|
ランダムなもやもやしたノイズをつくることができます。
RGBそれぞれのチャンネルで波と波がぶつかって干渉しあうようにノイズができるので
オクターブを0に設定するとノイズは発生しません。ベースサイズを小さくすると画面は細かくなります。
>>サンプル
|
DisplacementMapFilter
|
指定されたビットマップ(mapBitmap)の階調にあわせて、別のビットマップのピクセル位置を変化(置換え)させます。
※このフィルタはスクリプトでしか設定できません。
|
perlinNoise と DisplacementMapFilter を組み合わせて水面でゆらゆら揺れるアニメーションを作ることもできます。
>>サンプル |
|
ColorMatrixFilter |
RGBとアルファチャンネルを変更してムービークリップのカラーを変化させたり、彩度を落としてグレースケールに変化させたりできます。
4x5の行列を一つの配列で設定するため、20項目が羅列されてかなり見に
くくなります。そのため、RGBRそれぞれ別々に配列を作成し、Array.concat()で一つの配列として設定しています。
>>サンプル
同じ画像をそれぞれRGBに分解し、重ね合わせてフルカラーにするといったサンプルも見せていただきました。 |
|
以上、「スクリプトでもっとすごい Flash 8」野中文雄氏でした!
本セミナーをまとめたレジュメは、下記でご覧いただけます。
http://www.fumiononaka.com/Sample/F-site/FF051126.html
|
|
|
Top
|
ページ1 ページ2 ページ3 |
|