• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ボールが跳ね返るActionScriptで)

ActionScriptで作成したボールが固定されてしまう問題の解決方法

このQ&Aのポイント
  • ActionScriptでボールMCを投げ、ボールが上下で跳ね返り、徐々に減速するアニメーションを作成しました。
  • しかし、プレビューしてみるとボールが下で固定されてしまう問題があります。
  • 問題点や解決方法について教えてください。

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

  • ベストアンサー
noname#35109
noname#35109
回答No.1

結論は, _width の綴り間違いが1箇所あります。 根本的にはそれだけです。 if (400-(this._width/2)<this._y) { this._y = 400-(this._widht/2); Hspeedy = Hspeedy*-Hsk; }      ↓変更↓ if (400-(this._width/2)<this._y) { this._y = 400-(this._widh/2); Hspeedy = Hspeedy*-Hsk; } わかりますか? this._y = 400-(this._widht/2); _width に余分な t が入っています。 以上です。 //////////////////////////////////////////// 以上なのですが, 気になった点が少しあります。 ついでなので, その気になった点を変更した物を書いておきます。 ------------------------------------- onClipEvent (load) { this._x = 200; this._y = 200; Hsk = (0.8);/*変数衝撃吸収(壁の衝撃吸収度合い)*/ Hkuuki = (0.99);/*変数空気抵抗*/ Hdragflag = 0; } on (press) { Hdragflag = 1; startDrag(this, true); } on (release, releaseOutside) { Hdragflag = 0; stopDrag(); } onClipEvent (enterFrame) { if (Hdragflag == 1) { Hcatch0y = Hcatch1y; Hcatch1y = this._y; Hspeedy = (Hcatch1y-Hcatch0y); } else { if (400-(this._height/2)<this._y) { this._y = 400-(this._height/2); Hspeedy = Hspeedy*-Hsk; } if (this._y<0+(this._height/2)) { this._y = 0+(this._height/2); Hspeedy = Hspeedy*-Hsk; } Hspeedy = Hspeedy*Hkuuki; this._y = this._y+Hspeedy; } } -------------------------------------- 変更点は次の2点です。 全ての _width →変更→ _height on (release) →変更→ on (release, releaseOutside) 縦運動にボールの幅は関係ないと思うので, 全ての _width を _height に変更しました。 真円の丸いボールの場合, _width でも _height でも結果は同じですが, 論理的に考えると _width ではなく _height の方が適切だと思います。 また, on (release) でも良いですが, マウスを早く動かしたとき, ボールがマウスに吸着してしまうようになります。 それで, on (release, releaseOutside) に変更しました。

goo2408
質問者

お礼

sassakunさん書き込みありがとうございます。 書き込みいただき問題を解決する事が出来ました。 それと、releaseOutsideの追加も大変参考になりました。 ボールがマウスに吸着してしまう問題もちょうど悩んでいたところだったのでとても助かりました。 ご教授ありがとうございました。

関連するQ&A