スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--.--.-- | | スポンサー広告

Flash CS3でアフィン変換

以前エントリしたアフィン変換のFlash CS3バージョンです。





画像の左上/右上/左下にある丸のいずれかをドラッグすると、それにあわせて画像が変形します。

やってること自体は以前のエントリと同じで、対象のtransform.matrixプロパティに3つの丸の座標をモトに算出した値をセットしています。

フレームアクションはこんなカンジです。

// ポインタにイベントリスナを登録する
topleft_mc.addEventListener(MouseEvent.MOUSE_DOWN,
onPointMouseDown);
topleft_mc.addEventListener(MouseEvent.MOUSE_UP,
onPointMouseUp);
topright_mc.addEventListener(MouseEvent.MOUSE_DOWN,
onPointMouseDown);
topright_mc.addEventListener(MouseEvent.MOUSE_UP,
onPointMouseUp);
bottomleft_mc.addEventListener(MouseEvent.MOUSE_DOWN,
onPointMouseDown);
bottomleft_mc.addEventListener(MouseEvent.MOUSE_UP,
onPointMouseUp);
// 対象の幅と高さ
var w:Number = image_mc.width;
var h:Number = image_mc.height;
// ポインタをドラッグ可能にするイベントハンドラ
function onPointMouseDown(evt:Event) {
evt.target.addEventListener(Event.ENTER_FRAME,
onPointEnterFrame);
}
function onPointMouseUp(evt:Event) {
evt.target.removeEventListener(Event.ENTER_FRAME,
onPointEnterFrame);
}
// フレーム毎の処理
function onPointEnterFrame(evt:Event) {
if (evt.target.x != stage.mouseX ||
evt.target.y != stage.mouseY) {
evt.target.x = stage.mouseX;
evt.target.y = stage.mouseY;
// アフィン変換
image_mc.transform.matrix
= new Matrix((topright_mc.x - topleft_mc.x) / w,
(topright_mc.y - topleft_mc.y) / w,
(bottomleft_mc.x - topleft_mc.x) / h,
(bottomleft_mc.y - topleft_mc.y) / h,
topleft_mc.x,
topleft_mc.y);
}
}
topleft_mc、topright_mc、bottomleft_mcは左上/右上/左下の青い円で、MOUSE_DOWNイベントハンドラとしてonPointMouseDownメソッド、MOUSE_UPイベントハンドラとしてonPointMouseUpメソッドを登録しています。

onPointMouseDownメソッドでは、イベントターゲット(3つの青丸のいずれか。クリックしたヤツ)にonPointEnterFrameメソッドをENTER_FRAMEイベントハンドラとして登録しています。onPointMouseUpメソッドではソレを外してマス。なので、青丸のいずれかをドラッグしている間だけonPointEnterFrameメソッドは実行されます。

onPointEnterFrameメソッドにアフィン変換を行う処理を記述しています。イベントターゲットの座標としてマウスカーソル位置をセットし、image_mc.transform.matrixプロパティを設定しています。image_mcは画像のムービークリップです。
スポンサーサイト

テーマ:Flash - ジャンル:コンピュータ

2007.07.19 | | Comments(2) | Trackback(0) | Flash CS3

コメント

これはアフィン変換ではなくてせんだんですね、

2008-03-23 日 22:24:56 | URL | 通りすがり #- [ 編集]

コメントありがとうございます。

そうなのですか。
こういう変形はせん断というのですね。

2008-03-23 日 23:00:41 | URL | HundredthMonkey #ZJmJft5I [ 編集]

コメントの投稿


秘密にする

«  | HOME |  »

プロフィール

HundredthMonkey

Author:HundredthMonkey
プログラマ。

ブロとも申請フォーム

この人とブロともになる

メールフォーム

名前:
メール:
件名:
本文:

ブログ内検索


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。