- ベストアンサー
スライドバーのアクションスクリプト
- スライドバーのアクションスクリプトを作成する際に、ボタンを押したらサイドバーが一定の範囲まで移動する機能を実装する方法について説明します。
- 現在のスクリプトでは、ボタンを押すとサイドバーが指定の位置まで移動するようになっていますが、元の位置に戻す機能がうまく実装できていません。
- 具体的には、逆の場合を考慮してelseを使用して条件分岐を行っていますが、うまく動作しないようです。ボタンを押したらサイドバーが元の位置に戻るようにするためには、どのようにスクリプトを修正すればよいか教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
クリックしたときに適当な変数に値(仮に"1")を入れ、もう一度クリックしたときに変数の値が"1"なら"0"にしてX座標を859に、"0"(undefined)なら"1"にしてX座標を620にする、というようなかんじですればいいと思います。 onClipEvent (load) { _root.recruit_mc._x = 859; _root.recruit_mc._y = 272; flag=0;//flag変数を宣言しておく } onClipEvent(enterFrame){ rec_to_button.onRelease = function() { if(!flag){ flag=1; } else { flag=0; } _root.recruit_mc.onEnterFrame = function() { if(flag && _root.recruit_mc._x>=620){ _root.recruit_mc._x -= 10; } else if(!flag && _root.recruit_mc._x<=859){ _root.recruit_mc._x += 10; } }; }; } ですが、少しずつスライドする場合は プロパティ += (移動先[変化先の値] - プロパティ)*遅延率[0<遅延率≦1]; (分かり難くてすみません・。 を使って、 onClipEvent(enterFrame){ rec_to_button.onRelease = function() { if(!flag){ flag=1; } else { flag=0; } _root.recruit_mc.onEnterFrame = function() { if(flag){ this._x += (859-this._x)*0.3; } else { this._x += (620-this._x)*0.3; } }; }; } こんな風にしたほうがいいかと思います。あくまで持論ですけれど。 実際にプログラムを組んで試していないのでひょっとすると動かないかもしれません・・。 余談ですが、途中で書いた公式みたいなやつは結構使えます。 onClipEvent(enterFrame){ this._alpha += (0-this._alpha)*0.2; } でフェードアウトします。(変化先の値が"0")
お礼
is_may様 早速のご回答ありがとうございます。 自分でもフラグを立てて試行していたんですが、うまくいかずで。 大変参考になりました。 別途公式のほうもありがとうございます。とても勉強になります。 一番目のものは無事動きました。 二番目のものもif(flag)をif(!flag)にして、ちゃんと動きました。 丁寧に二つ書いてくださってありがとうございます。