• ベストアンサー

ボタンで画像が切り替わるフラッシュ

http://www.lovecosmetic.jp/category/lccosme/index.html のメイン画像みたいにボタンで画像が切り替わるようにするには どうしたらよいのでしょうか? フラッシュCS3

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

#1です 自分で書いておいてなんなんですが 先に書いたようなやり方は正直よろしくないと思います Flashにはちゃんと画像きりかえとかに 使うためのクラスが用意されてます 以下1フレーム目にコピペして書き出し ボタンは作るの面倒だったので本体がボタン代わりです //transitionsのパッケージに画像きりかえとかの //エフェクトのクラスが入ってます import fl.transitions.*; import fl.transitions.easing.Regular; //画像表示用のMCつくります //ついでにマスクもかけときます var movMC=addChild(new MovieClip()) as MovieClip; var maskSpr=new Sprite() with(maskSpr.graphics){ beginFill(0) drawRect(75,50,400,300) endFill() } with(movMC){ x=75 y=50 mask=maskSpr addChild(makeImg()) addEventListener(MouseEvent.CLICK,goNext) } //クリックされたら次の画像に切り替え開始 //終わるタイミングで前のやつは消してしまう //なんとTransitionクラスは完了してもイベント送出なし(!) //setTimeoutなりでタイミング計るしかありません、なんてこった function goNext(e) { var time:int=1 var trans=getTransRandom() trace(trans) TransitionManager.start(movMC.addChild(makeImg()) as MovieClip,{type:trans,duration:time,direction:0,easing:Regular.easeInOut}); setTimeout(function(){movMC.removeChildAt(0);},time*1000); } //テキトーな画像のMCを作るメソッド function makeImg():MovieClip { var rtn:MovieClip=new MovieClip(); var bmpData:BitmapData=new BitmapData(400,300); bmpData.perlinNoise(400,300,Math.random()*10,Math.random()*30,Math.random()>0.5,Math.random()>0.5); rtn.addChild(new Bitmap(bmpData)); return rtn; } //画像きりかえエフェクトのクラスをテキトーに選ぶメソッド function getTransRandom():*{ var transList:Array=[Blinds, Fade, Fly, Iris, Photo, PixelDissolve, Rotate, Squeeze, Wipe, Zoom] return transList[Math.floor(Math.random()*10)] } 以上 早押しされたらエフェクトを強制終了させるのは 個人的にあんまりきれいじゃないと思ってるんで こういうやり方のほうがおすすめです 10種類のエフェクト以外使えないのがアレですが せっかく用意してくれてるんだから使っときましょう

kurobon619
質問者

お礼

H240S18B73様 ご丁寧に書いていただいて恐縮です。 書かれたとおり、理解しながら やっていこうかと思います。 ありがとうございました。

その他の回答 (1)

回答No.1

早押し対策いまいちな気がする・・・ 多分このカンジはASじゃなくて モーショントゥイーンでやってますね 僕も同じようなものをまだFlashやりはじめの頃 AS1で作った事がありましたが 早押し時の挙動から見て 多分同じようなやり方してると思います 現在の画像を表示するMC(以下nextMC)の下に 前に表示していた画像を表示するためのMC(以下prevMC)を置いて prevMCは見えないようにしておきます nextMCもprevMCもフレーム毎に同じ画像を持っています まずボタンが押されたらprevMCをnextMCの currentFrameにgotoAndStopします 次にnextMCをボタンに対応したフレームにgotoAndStopし nextMCとprevMCを配置したタイムラインを ボタンに対応した画像入れ替えのモーショントゥイーンの 開始位置までgotoAndStopします 画像入れ変えのモーショントゥイーンは nextMCが徐々に現れてprevMCを覆い尽くして終了する トゥイーンということになります こういう作りにすると早押しの時の挙動が ちょっといまいちなそういうカンジの画像切り替えになると思います 『値段こんだけだからASなんか書いてる余裕ないよ!』 とか言われてデザイナーは奥歯を噛みしめたのだろうか ・・・とか思ってしまう

kurobon619
質問者

お礼

H240S18B73さんありがとうございます。 なるほどわかりやすいです。 up_btn.onPress = funciton(){ nextMC.y = nextMC.y-180; nextMC.gotostop; }; という感じでしょうか?

関連するQ&A