–>現在、オブジェクト倶楽部のメールマガジンで連載している「Flexで体験するリッチクライアント」を補足するTechnoteです。第七回は、マウスイベントを取得する手順を整理します。■今回サンプルの完成イメージ画像をクリックしながら、左右に動かしたり、勢い良く左右に動かしたりすると、CoverFlowのように加速効果付きでスクロールします。前回はスクロール処理とアニメーション効果を付けてみました。今回は画像を掴んで勢い良く放したり、掴みながらスクロールさせるといった動作を、マウスイベントを取得して変更していきます。今回は、mxmlファイルのみ修正していきます。■ファイルの準備プロジェクトファイルをダウンロードして、任意のディレクトリで解凍します。reflector.as3projreflector.mxmlImageReflector.asTransformUtil.as前回から修正したのは、reflector.mxmlだけです。reflector.as3projをダブルクリックすると、FlashDevelopが実行されます。■マウスの基本動作はクリックと移動Flexではマウスを操作した結果は、マウスイベントをフックすると知ることができます。mxmlで以下のように書いてみます。>このコードが今回修正したCoverFlow表示領域のボックス記述です。マウスポインターがHBOXから出たときに発生するのような意味を持っています。■マウスがどこで操作されたのか調べるマウスイベントは表示領域で取得しますが、対象のHBOXには様々な子コントロールが含まれています。横スクロールバーです。料にする場合は、MouseEvent#target.parentを使います。HScrollBar)のように記述する必要があります。■マウスが領域外に出たときを考慮するマウス操作を実装していて、忘れがちになるのが、この処理です。全画面表示で操作しているようなケースでは無縁ですが、実際はドラッグしながらウィンドウの外でマウスを放した、というケースは珍しくありません。このときイベントを拾っておかないと、再度マウスが領域に戻ったとき、マウスが押されたままと間違って判断してしまうことがあります。マウスが領域から出たら、一旦マウスを放した、という仮定が必要となります。マウスが領域外に出たかどうかはステージオブジェクトのマウスイベントをフックします。これは前述のMouseOutでHBOXから出たのか判断していますが、勢い良くマウスを動かして、一気にFlashPlayerから出てしまうと、MouseOutが呼ばれないことがあります。onMouseOut);のように、記述します。似たイベントで、MouseEvent.ROLL_OUTがありますが、これはHTMLの:hoverのような実装をする際に使うイベントです。対象のコントロールの上に来た・離れたというのを制御します。■クロスドメインの注意事項amazonの画像サーバのcrossdomain.xmlは画像サーバ内からだけしか参照できないので、ここで作成したSWFファイルをサーバにアップロードしてもうまく表示できません。本記事上の完成イメージは、PHPサイトでプロキシしています。隙間をなくして、ホンモノのように画像が重なって表示されている効果を実装してみます。