- ベストアンサー
画像が追っかけるようなトランジション
flashCS3でAction scriptoを使い以下のような動きが 出来ないものか考えています。 下のような3点の素材があります。 画像A.jpeg サイズ400X400 画像B.jpeg サイズ400X400 MC1サイズ 400X400 MC1に画像Aを一旦描画したあと、左方向にスライドアウト(MCの外に出て行く感じ) し、画像Aのすぐ後に画像Bがスライドインするといったものです、 見た目では、画像Aが画像Bに押し出される感じです どなたかご教授下さればあり難いのですが、 何卒よろしくお願い致します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> MC1に画像Aを一旦描画 と書かれていらっしゃる部分がいったいどういうことを指すのかが全くわかりません。 しかし, > 左方向にスライドアウト これは,「画像A.jpeg入りMC1」 のピッタリ右横に 「画像B.jpeg入りMC2」 を置いて, 2つのムービークリップを同時に左にモーショントゥイーンをさせれば良いのではないでしょうか? モーショントゥイーンではなくActionScriptでするとしても, それと同じように動くようにコードを書けば良いような気がします。 つまり, 「MC1に画像Aを一旦描画」 の意味もわかりませんが, さらに 「どこが疑問なのか」 がわかりません。 そしてさらに, ActionScript を訊ねていらっしゃるにも関わらず, ActionScriptのバージョンすらも書かれていません。 お手上げですね...。 よくわかりませんが簡単な例を1つ書いておきます。 階層構造が次のようになっていたとします。 メインのタイムライン( _root または root) ├MC1(画像A.jpeg入り) └MC2(画像B.jpeg入り) 「MC1(画像A.jpeg入り)」 と 「MC2(画像B.jpeg入り)」 をピッタリ横並びで置いたとして, その2つを同時に同じだけ等速で左にスライドさせるとします。 ActionScript2.0 の場合は, メインのタイムラインのフレームに書くスクリプトを次のようにするのが1つの方法例です。 ------------------------------------------------ // MC1 と MC2 に onEnterFrame イベントハンドラメソッドを定義 // コールバック関数 moveLeft MC1.onEnterFrame = moveLeft; MC2.onEnterFrame = moveLeft; // カスタム関数 moveLeft を定義():戻り値なし function moveLeft():Void { // このムービークリップをを左に 5px 移動 this._x -= 5; } ------------------------------------------------ ActionScript3.0 の場合は, メインのタイムラインのフレームに書くスクリプトを次のようにするのが1つの方法例です。 -------------------------------------------------- // MC1 と MC2 にイベントリスナーを追加(引数:イベント,実行関数) MC1.addEventListener(Event.ENTER_FRAME,moveLeft); MC2.addEventListener(Event.ENTER_FRAME,moveLeft); // カスタム関数 moveLeft の定義(引数:イベント):戻り値なし function moveLeft(evt:Event):void { // イベントが与えられたターゲットを左に 5px 移動 evt.target.x-=5; } -------------------------------------------------- MC1 と MC2 はメインのタイムライン階層に平置きにしましたが, 別にメインのタイムラインにする必要はありません。 別のムービークリップの中に MC1 と MC2 を作成してもかまいません。 メインのタイムライン( _root または root) └MC1 ├MC1(画像A.jpeg入り) └MC2(画像B.jpeg入り) この場合でActionScript2.0の場合 MC1.onEnterFrame = moveLeft; MC2.onEnterFrame = moveLeft; の部分を MC1.MC1.onEnterFrame = moveLeft; MC1.MC2.onEnterFrame = moveLeft; に変えるだけです。 ActionScript3.0の場合 MC1.addEventListener(Event.ENTER_FRAME,moveLeft); MC2.addEventListener(Event.ENTER_FRAME,moveLeft); の部分を MC1.MC1.addEventListener(Event.ENTER_FRAME,moveLeft); MC1.MC2.addEventListener(Event.ENTER_FRAME,moveLeft); に変えるだけです。 とにかく質問の意味がわからないので書けるのはこの程度のことまでです。 一応書くには書きましたが, これがご質問に対する回答だとはとても思えません。 私が回答できるかできないかは別として, ●何がしたいのか ●どこがわからないのか ●ActionScriptのバージョン 少なくともこの3点が具体的にわかるように補足してください。 上の「●どこがわからないのか」 についてですが, 例えば上の回答で回答の路線(方向性)は仮に良かったとします(良いとは思えませんが,仮にです。)。 でもしかし, 「ムービークリップの作成方法」や「インスタンス名の付け方」がわからないからできないという場合も十分考えられます。 さらに 「画像A.jpegをステージに読み込む方法」 からしてわからないからできないという場合もあり得ます。 どこがわからないかによって回答も全く変わります。
お礼
相当お返事遅れましたことをお詫びいたします。 書き込んで頂いた内容を参考にして何とか思っていたイメージの ものが出来ました、 親切に図解までして頂いて有難う御座います。