アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつも大変お世話になっております。

伸び縮むサイドバーを作っているのですが、伸ばしたまではいいのですが、元の位置に戻すほうがどうもうまくいきません。
以下、途中まで書いたスクリプトです。

■.recruit_mcがバーの部分になります。

onClipEvent (load) {
_root.recruit_mc._x = 859;
_root.recruit_mc._y = 272;
}

onClipEvent (enterFrame) {
rec_to_button.onRelease = function() {
_root.recruit_mc.onEnterFrame = function() {
if (_root.recruit_mc._x>=620) {
_root.recruit_mc._x -= 10;
}
};
};
}

--------------------------------------------------------------
if (_root.recruit_mc._x>=620) {
_root.recruit_mc._x -= 10;
}
の箇所で else を使って、逆の場合をいろいろと書いているのですが
どうもうまくいきません。
ボタンを押したら859→620まで移動、またボタンを押したら620→859
まで移動するようにするには、あとどう書き加えればいいですか?
ご教授よろしくお願いします。

A 回答 (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")
    • good
    • 0
この回答へのお礼

is_may様

早速のご回答ありがとうございます。
自分でもフラグを立てて試行していたんですが、うまくいかずで。
大変参考になりました。
別途公式のほうもありがとうございます。とても勉強になります。

一番目のものは無事動きました。
二番目のものもif(flag)をif(!flag)にして、ちゃんと動きました。
丁寧に二つ書いてくださってありがとうございます。

お礼日時:2007/04/29 19:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!