減速スライド
準備
- 5枚の写真を用意する
- 好きな画像を5枚フォトショップで開く
- 解像度を幅500または高さ400のどちらかに解像度を合わせる(500×400より小さくならないように!)
- 500×400の画像にトリミング
- 新規で500×400のカンバスを作る
- 先ほど解像度を変えた写真をペーストする
- 5枚とも同様の処理をする
- 新規で500×400のカンバスを作る
- 上記とは別に新規に100×100のサムネイル画像を作成する
- やり方は500×400と同じ
ここまでは順調だった。。。。
Flashビルダー
- 500×500のサイズで新規作成
- 元画像の高さ(400)+サムネイルの高さ(100)で高さ500であることに注意
- 元画像の高さ(400)+サムネイルの高さ(100)で高さ500であることに注意
- ステージにサムネイルを並べてボタンシンボルまたはムービークリップに変換
- 基準点を左上にする
- ステージの下部に整列
- 配置したタイムラインのレイヤーの名前を「サムネイル」に変更
- 挿入メニューから「新規シンボル」を選択し、ムービークリップで作成
- 作ったムービークリップの編集画面に写真の本体をペースト
- プロパティで座標を0:0に変更
- 画像をシンボルに変換でムービークリップに変換する(基準点は左上)
- 他画像も同様に作成し、作成したムービークリップの基準点(今回は左上)をプレスドラッグで隙間なく並べる
吸着されて綺麗に並びます! - ステージに戻ってタイムラインにレイヤーを追加し、「メイン」と名称変更
- メインレイヤーを選んだ状態で先ほど作った写真連続写真をライブラリから適当な場所に貼り付ける
- プロパティから座標を座標を0:0に変更
- タイムラインにレイヤーを追加し、「Action」と名前を変える
- Actionの1フレーム目にActionScriptを記載します。
※省略してますが、インスタンス名は必ず付けてください!
- 授業の形
//それぞれの写真の基準点のX座標 var coordinatesX=0; //型定義の代わりに数字で初期化 //元写真幅の移動幅(1写真の幅/rate) var rate=5; //onRollOver:マウスが対象に乗ったとき //元画像オブジェクトを関数に渡す thum1_mc.onRollOver=function(){ setPosition(main_mc.pic1_mc); } thum2_mc.onRollOver=function(){ setPosition(main_mc.pic2_mc); } thum3_mc.onRollOver=function(){ setPosition(main_mc.pic3_mc); } thum4_mc.onRollOver=function(){ setPosition(main_mc.pic4_mc); } thum5_mc.onRollOver=function(){ setPosition(main_mc.pic5_mc); } //main_mcのenterFrameでcoordinatesXとrateでコントロール main_mc.onEnterFrame = function(){ main_mc._x -= (main_mc._x + coordinatesX)/rate; } //元画像のX座標をグローバル変数に退避 function setPosition(obj){ coordinatesX = Math.floor(obj._x); }
- CSSスプライトライクな作り
(オブジェクト名が違うのは別タイミングでやったため)
stop(); var thumbs=5; var mainSize=this._width/thumbs; var rate=10; var toPic; var nowX; pic1_mc.onRollOver = function(){ nowX = pic1_mc._x/Math.floor(pic1_mc._width); picMove(nowX); } pic2_mc.onRollOver = function(){ nowX = pic2_mc._x/Math.floor(pic2_mc._width); picMove(nowX); } pic3_mc.onRollOver = function(){ nowX = pic3_mc._x/Math.floor(pic3_mc._width); picMove(nowX); } pic4_mc.onRollOver = function(){ nowX = pic4_mc._x/Math.floor(pic4_mc._width); picMove(nowX); } pic5_mc.onRollOver = function(){ nowX = pic5_mc._x/Math.floor(pic5_mc._width); picMove(nowX); } main_pic_mc.onEnterFrame = function(){ main_pic_mc._x -= (main_pic_mc._x + toPic)/rate; } function picMove(index){ toPic = mainSize * index; }
何が違うのか?
授業でやった形式は大きな写真のムービークリップのx座標を起点にスクロールさせているが、 後者はCSSスプライトと同じイメージで元写真を5枚一続きを1つのオブジェクトとして扱って、 サムネイルの数から移動量を割り出してスクロールさせている。 さらに、後者の場合シンボルへの変換は不要となる。