- ActionScript 誰かが物凄い勢いで解答するスレ28
507 :Now_loading...774KB[]:2011/05/18(水) 14:36:25.70 ID:st4y2XQS - 2chで書き込みするのは初めてです。よろしくお願いします。
私は今adobe CS5の AS3でビリヤードゲームを作ろうと思ってます。 http://hakuhin.jp/as/block.html 今こちらのサイトを参考に作っています。 これを参考にしようと思ったのはボールが壁に当たったら返ってくるからです。 ここのサイトの内容はAS2っぽいので自分なりにAS3に変えて作り始めました。 if (ball.x < 0 + 5) { ball.x = 0 + 5; dx = dx * -1; } if (ball.x > 200 - 5) { ball.x = 200 - 5; dx = dx * -1; } if (ball.y < 0 + 5) { ball.y = 0 + 5; dy = dy * -1; } if (ball.y > 250 + 5) { ball.y = 250 + 5; dy = by * -1; このif文のところが移動方向を反対にさせる文なんですがなぜか反転しません。 traceで中身を見たところ 値自体は反転しているのですが・・・ どこかおかしいところはありませんか? 全体を見なければ分からないのであれば他の部分も乗せたいと思います。 よくネチケットとかわかりませんがこんな感じでよかったでしょうか?
|
- ActionScript 誰かが物凄い勢いで解答するスレ28
509 :Now_loading...774KB[]:2011/05/18(水) 15:43:13.62 ID:st4y2XQS - >>508
bar.y = 230;var dx = 1;var dy = -3; if (bar.x < 0+20){bar.x = 0+20; }if (bar.x > 200 - 20) {bar.x = 200 - 20;} if (ball.x < 0 + 5) {ball.x = 0 + 5;dx = dx * -1;} if (ball.x > 200 - 5) {ball.x = 200 - 5;dx = dx * -1;} if (ball.y < 0 + 5) {ball.y = 0 + 5;dy = dy * -1;} if (ball.y > 250 + 5) {ball.y = 250 + 5;dy = dy * -1;} stage.addEventListener(KeyboardEvent.KEY_DOWN, fl_KeyboardDownHandler); function fl_KeyboardDownHandler(event:KeyboardEvent):void {if (event.keyCode == 37) {bar.x = bar.x - 3; }if (event.keyCode == 39) {bar.x = bar.x + 3; }} addEventListener(Event.ENTER_FRAME, ugoki); function ugoki(event:Event):void { ball.x = ball.x + dx;ball.y = ball.y + dy;trace(dx);trace(dy);} 全体はこちらになります。 改行が多いとこちらでエラーになったので修正してます。見辛くてすいません。
|
- ActionScript 誰かが物凄い勢いで解答するスレ28
511 :Now_loading...774KB[]:2011/05/18(水) 15:53:26.41 ID:st4y2XQS - ちなみにball.xが無いのはこちらを例えば
ball.x = 100; としてしまうと 挙動が変になるからです。 バー自体の位置はこれでも十分なのでこれでいこうと思っています。 ball.x又は.yのif文の場所をずらしたり値を変えたりとしたのですが駄目でした。 画面のサイズは 200px×250pxです。 yの反射の位置を250じゃない場所にずらしたりもしてみました。
|
- ActionScript 誰かが物凄い勢いで解答するスレ28
512 :Now_loading...774KB[]:2011/05/18(水) 15:55:11.72 ID:st4y2XQS - >>510
最初のif文は私が最初に質問したとif文のことでしょうか? それでしたらそのif文の始まりはさっき上げた全文の5行目になります。
|
- ActionScript 誰かが物凄い勢いで解答するスレ28
514 :Now_loading...774KB[]:2011/05/18(水) 15:59:40.26 ID:st4y2XQS - すいません 最近作れと言われたばかりでロクな勉強をしてないので
イベントリスナと言われてもよくわかりません おそらくevent:KeyboardEventやEvent.ENTER_FRAMEの中のことを指してると 考えて回答します。 最初にEvent.ENTER_FRAMEの中にif文を入れていたのですが今なってる結果と 同じだったのでif文の位置を変えてみた結果が今の全文です。
|
- ActionScript 誰かが物凄い勢いで解答するスレ28
517 :Now_loading...774KB[]:2011/05/18(水) 16:06:27.87 ID:st4y2XQS - >>516
traceの下にballのif文を入れたのですがやはり挙動は同じでした。 動き的には壁に当たったら反射したいのですがずっとマゴマゴとはまったまま 帰ってきません。
|
- ActionScript 誰かが物凄い勢いで解答するスレ28
519 :Now_loading...774KB[]:2011/05/18(水) 16:15:02.54 ID:st4y2XQS - 1
-3 と最初に動き 壁に当たると 1 -3 1 3 1 -3 -1 -3 という動きを永遠に繰り返します。
|
- ActionScript 誰かが物凄い勢いで解答するスレ28
522 :Now_loading...774KB[]:2011/05/18(水) 16:16:58.91 ID:st4y2XQS - >>520
ありがとうございます!まさにフレームが一個多い状態でありました。 早速こちらを削除したところ成功しましたありがとうございます
|
- ActionScript 誰かが物凄い勢いで解答するスレ28
526 :Now_loading...774KB[]:2011/05/18(水) 16:27:52.61 ID:st4y2XQS - >>523
まさにその通りでした。 フレームを削除したら無限に移動するようになってしまいました。 そこでfl_KeyboardDownHandlerにifを入れたら直りました。 本当に皆さんありがとうございました。
|
- ActionScript 誰かが物凄い勢いで解答するスレ28
528 :Now_loading...774KB[]:2011/05/18(水) 16:31:59.07 ID:st4y2XQS - すみません さらに質問なのですがこの後これを応用してビリヤードゲームを
作っていこうと思ってます。 デザインはもうできているので流れ的にはボール一個ごとの処理と反射の計算 をして穴のピクセルの部分に触れたらそのボールを消滅させてカウントを1増やし カウントがゲームクリアの個数になったらクリア画面に飛ばすという流れで間違いは ないでしょうか? 先輩に聞くと流れは最初にキチンと作らないと修正した時に 苦労をすると聞いたので少し不安です。
|
- ActionScript 誰かが物凄い勢いで解答するスレ28
530 :Now_loading...774KB[]:2011/05/18(水) 16:44:10.19 ID:st4y2XQS - 玉を突くのは難しいと思いまして自分で妥協し
方向をマウスの方向で点線を出して指定する。 下の画面にパワー目盛を出してどのくらいの力で発射するかを決めてとやっていこうと思ってます。 とこっちでいろいろ調べてたらASファイルというのを作らなければむりっぽいので もう一回勉強しなおします。 ちなみにASファイルとか無しでもいけますか?
|
- ActionScript 誰かが物凄い勢いで解答するスレ28
533 :Now_loading...774KB[]:2011/05/18(水) 16:52:58.98 ID:st4y2XQS - >>532
わかりましたーいきなりrootで躓いたので質問してたのですがどうやら MovieClip(root) でいけるみたいですね。こうやってだましだましやっていきます。
|
- ActionScript 誰かが物凄い勢いで解答するスレ28
536 :Now_loading...774KB[]:2011/05/18(水) 17:02:26.80 ID:st4y2XQS - いきなり躓きました
if (_root.ball.hitTest(_root.bar)) { _root.ball._y = _root.bar._y - 10; rad = Math.atan2(_root.ball._y-_root.bar._y,_root.ball._x-_root.bar._x); dx = Math.cos(rad)*3; dy = Math.sin(rad)*3; } rootはMovieClip(root)でなんとかできましたがMathがどう検索してもAS以外でやる方法を見つけ出せません・・・
|
- ActionScript 誰かが物凄い勢いで解答するスレ28
537 :Now_loading...774KB[]:2011/05/18(水) 17:03:08.61 ID:st4y2XQS - ちなみにactionscript3.0の話です。自分の状況を伝えずに申し訳ない。
|
- ActionScript 誰かが物凄い勢いで解答するスレ28
541 :Now_loading...774KB[]:2011/05/18(水) 17:32:00.00 ID:st4y2XQS - >>540
Mathが使えないみたいな表示が出てきます。
|
- ActionScript 誰かが物凄い勢いで解答するスレ28
545 :Now_loading...774KB[]:2011/05/18(水) 18:08:16.44 ID:st4y2XQS - >>542,543
すいません解決しました。 varが入っていなかっただけでした。 こんなくだらない間違えで騒いで申し訳ありませんでした。
|
- ActionScript 誰かが物凄い勢いで解答するスレ28
548 :Now_loading...774KB[]:2011/05/18(水) 18:26:08.82 ID:st4y2XQS - またまたすいません
var flg = new Array(); for (i=0; i<5; i++) { if(flg[i] == 1) continue; if (MovieClip(root).ball.hitTestObject(this.("MovieClip(root).brock"+i))) { flg[i] = 1; this.("MovieClip(root).brock"+i).visible = false; if (MovieClip(root).ball.x+5 < this.("MovieClip(root).brock"+i).x-20+4 && MovieClip(root).ball.y+5 < this.("MovieClip(root).brock"+i).y-7.5+4) { dx = -3; dy = -3; }}} なんですが、TypeError: Error #1123: Filter 演算子は型 _fla.MainTimeline でサポートされていません。 とでてうまくいきません。 検索をかけてみたんですがうまく引っかからずに困ってます。
|
- ActionScript 誰かが物凄い勢いで解答するスレ28
550 :Now_loading...774KB[]:2011/05/18(水) 18:28:00.34 ID:st4y2XQS - >>548はAS3.0です。
|
- ActionScript 誰かが物凄い勢いで解答するスレ28
553 :Now_loading...774KB[]:2011/05/18(水) 18:50:00.53 ID:st4y2XQS - >>551
ありがとうございます。 brockには突っ込まないで下さい・・・
|