android_icon
1: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:18:40.28 ID:Yelv2nyR0.net
テトリスのようなブロックゲームを作ってるんだが、上からブロックの画像が落ちてくるのができない
一秒ごとに画像の位置を下にセットしていけばいいんだと思うんだが
エラーはでないけどアプリを起動させたらすぐに強制終了になるか、画面が真っ黒になる
どうすればいい?

2: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:19:21.74 ID:7kJ8tWMU0.net
ワケわからんわ

3: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:19:28.12 ID:7kJ8tWMU0.net
ワケわからんわ

4: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:19:35.48 ID:7kJ8tWMU0.net
ワケわからんわ

5: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:19:49.32 ID:DMCE1E01d.net
コンソール見ろよ

8: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:20:23.52 ID:Yelv2nyR0.net
>>5
コンソールとかログカットの見方がよくわからん

9: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:22:00.21 ID:DMCE1E01d.net
>>8
エラー出てないってわかってるのか
それなら見れてるんじゃないの?

ソースうp

6: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:19:52.46 ID:Yelv2nyR0.net
AndEngineで作ってるんだが、TimerHandlerだとすぐに強制終了
Thread.sleep(1000)だと真っ黒になる

10: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:22:35.77 ID:O7PoH/pBD.net
AndEngineは知らんが、動かす以前に何かの表示はできたんだよね?
止まった状態の棒だけでも。

12: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:23:40.80 ID:Yelv2nyR0.net
>>10
それはできる

13: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:25:27.66 ID:tSSKVKEH0.net
なるほどわからん

14: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:27:05.17 ID:O7PoH/pBD.net
Draw的な関数の中で描画命令してるんだよね?
基本的には座標をその棒関連の変数に持たせておいて、Drawではひたすらその位置に描画させるだけやで
Updateの中で、now-prevtime>>1秒だったら棒の位置表す変数の中身を下にずらすんやで

そもそも普通Sleepは使わない

16: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:28:27.38 ID:Yelv2nyR0.net
>>14
なにを言ってんのかさっぱりわからん

15: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:27:40.21 ID:Yelv2nyR0.net
インポート文は省略
public class MainScene extends KeyListenScene {
private Sprite sita;
public MainScene(MultiSceneActivity baseActivity) {
super(baseActivity);
init();
}

public void init() {
attachChild(getBaseActivity().getResourceUtil().getSprite("main_bg.png"));
setSita();
registerUpdateHandler(timerHandler);
s();
}

public void setSita(){
// 変数sitaに画像main_box.pngを設定
sita = getBaseActivity().getResourceUtil().getSprite("main_box.png");
placeToCenterX(sita,100);
attachChild(sita);
}
TimerHandler timerHandler;
// ここが一秒ごとに下に落とすコード
public void s() {
timerHandler = new TimerHandler(1f, true, new ITimerCallback(){
@Override
public void onTimePassed(TimerHandler pTimerHandler) {
while(sita.getY() > 0){
sita.setY(sita.getY() - 10);
}}});}

40: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:43:28.48 ID:Yelv2nyR0.net
あ、ごめん間違えた
あのあといろいろコードを変えたから>>15のコードとログカットはなんの関係もないわ

41: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:45:02.85 ID:x+BW+pd1p.net
>>40
このクソハゲめが

17: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:29:28.03 ID:Yelv2nyR0.net
移動は1回だけ成功したことがある
俺はWhile文を使って繰り返し移動させたいんだが、1回しか移動しなかった

18: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:29:34.71 ID:DMCE1E01d.net
そもそも配列じゃだめなのかこれ

19: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:30:00.79 ID:Yelv2nyR0.net
>>18
やり方教えてください

20: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:30:01.93 ID:O7PoH/pBD.net
このあと用事あるから落ちるけど
timerHundlerがUpdate的なことやってるから合ってる

うーん、すまん、ぱっとみ問題無さそうなんだけどlogcatみないと何とも

22: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:30:57.93 ID:ngTzWc1W0.net
スマホアプリ以前にwindowsで動くもの作れよw

28: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:35:47.19 ID:Yelv2nyR0.net
>>22
スマホアプリで一儲け狙ってるんだ

23: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:32:52.22 ID:DMCE1E01d.net
timer handlerのnew timer callbackのとこ new ITIMERになってないか?

iが入ってる気がするんだけどこれは正常なのか

26: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:35:23.24 ID:Yelv2nyR0.net
>>23
参考書にもそう書いてあるし正常だと思う
多分

24: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:33:24.43 ID:O7PoH/pBD.net
logcat見方でくぐるんや!

25: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:34:25.58 ID:Yelv2nyR0.net
とりあえずログカット
no title

32: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:36:42.36 ID:DMCE1E01d.net
>>25
ぬるぽってことは何かに値入れるの忘れてるんじゃないの

29: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:36:07.71 ID:Yelv2nyR0.net
やっぱログカットの見方を知っといたほうが楽なのかな

30: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:36:11.79 ID:bcKYuVXaa.net
直撮り……だと!?

34: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:38:28.28 ID:Yf4nc158a.net
アンドエンジンの本持ってるけど、結局AndroidのSDKだけで作った方が楽そうで使わなかったわ

35: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:39:01.66 ID:Yelv2nyR0.net
スクショだ
no title

36: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:39:12.03 ID:sMcST5b00.net
ぬるぽって出てるじゃねえか

37: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:40:35.14 ID:Yelv2nyR0.net
>>36
赤い文字の三行目のことか?
つまりどの変数に値が入ってないんだ?

38: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:42:24.74 ID:sMcST5b00.net
ていうか、タイマーのコールバックでぐるぐる回しにしてるけど
この処理は正しいのか?
1秒ごとの処理なら、タイマーのたびに移動して再表示する
だけになると思うんだけど

39: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:42:57.37 ID:jS75u3zOa.net
timerHandler 作る前に使ってるじゃん
registerUpdateHandler より先にs()呼び出せ

43: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:47:00.20 ID:Yelv2nyR0.net
>>39
できた!
でも下に行ってほしいのに上に行った!
だから- 10を+10にしたらブロックはずっと止まったままで動かない
なんでだ!?

45: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:47:29.78 ID:W3NTkneUr.net
>>43
もう上に行くテトリスで良くね?

46: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:48:31.56 ID:Yelv2nyR0.net
>>45
それもいいかもしれんが
でも下に行かせたい

47: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:48:55.17 ID:sMcST5b00.net
>>45
なにこのポジティブシンキング

48: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:50:52.18 ID:jS75u3zOa.net
>>43
その上の条件文を見直せ

54: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:54:23.25 ID:Yelv2nyR0.net
>>48
While文の条件か?
どうすればいいの?
てか今気付いたんだがWhile文の位置ってこれでいいのか?
この位置だと繰り返すけど一気に移動するのと変わんないよな

55: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:57:05.16 ID:DMCE1E01d.net
>>54
timehandlerの引数1fを60fに変えても意味ない?

59: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:59:49.24 ID:Yelv2nyR0.net
>>55
60秒経ってから一番上に移動したぞ

56: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:57:19.02 ID:Yelv2nyR0.net
>>54
これはダメだ
画面が真っ黒になった

57: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:57:28.84 ID:jS75u3zOa.net
>>54
わかってるじゃん
このままだと一気に移動するよ
そこまでくればあと一歩だ

60: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 11:04:33.12 ID:Yelv2nyR0.net
>>57
ダメだったぞ
画面が真っ黒になった
参考書には画面が真っ黒になる原因としてなんか書いてあるけどさっぱり理解できない
no title

44: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:47:01.80 ID:2XW7IxrCp.net
文字で作って動くなら文字を置き換えればいいと思うの

49: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:50:55.63 ID:x+BW+pd1p.net
-10してたとこの一行上を>>0から>=0にしたらどうなる?

52: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:52:17.06 ID:DMCE1E01d.net
>>49
てかソース上げ直せよw

50: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 10:51:13.92 ID:Yelv2nyR0.net
+だとどこにも動かない
そんで-だと一気に一番上に行く
不可解すぎるぞ
俺は一秒ごとにちょっとずつ動いてほしいんだが

61: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 11:05:18.83 ID:sMcST5b00.net
1回のタイマーでwhileでぐるぐる回せばその回で一気に上まで行くわさ
1回のタイマーでやるべきことは1回分の移動だけ

62: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 11:07:01.05 ID:8tu64qHCd.net
whileじゃなくてifだろ

63: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 11:07:56.26 ID:HDASDtAFp.net
while(sita.getY() > 0){
sita.setY(sita.getY() - 10);

これの-10は上に行く原因だろ
sita.getY() > 0はsita.getY()の初期値が0より小さかったら動かねえんじゃないの
というかwhile(sita.getY() > 0){をとってみたら?

64: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 11:08:35.33 ID:Yelv2nyR0.net
なにを言っているのか
no title

no title

65: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 11:11:31.96 ID:U5909GnLp.net
そもそもパクリゲー作んなよ

66: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 11:12:16.88 ID:Yelv2nyR0.net
>>65
パクリジャネーヨ!
ただのブロックゲームじゃねえし!
ブロックゲームってだけでアイデアはオリジナルだ

67: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 11:13:26.57 ID:8tu64qHCd.net
whileをifに
あとandengineの座標は確か左上が0,0で、右下にいくとプラスされるからそこをよく考えろ

68: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 11:17:11.23 ID:Yelv2nyR0.net
>>67
えええええええ!??
できたあああああああああああああああああああああああああああああああああ
そうだよな
繰り返しはTimerHandlerがやってくれるもんな!
なんで俺はWhile文を使ってたんだ

69: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 11:19:18.52 ID:Yelv2nyR0.net
うわあマジでできた
ありがとうお前ら

70: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 11:20:12.86 ID:sqBp2RbSd.net
というかその参考書なんていうやつ?

71: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 11:26:52.96 ID:Yelv2nyR0.net
>>70
Andengineで作るAndroid2Dゲームって本

72: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 11:34:03.82 ID:Yelv2nyR0.net
いやーマジで助かった

73: 以下、\(^o^)/でVIPがお送りします 2015/01/16(金) 11:38:03.21 ID:XGUYbweid.net
おめでとう

引用元
http://viper.2ch.net/test/read.cgi/news4vip/1421371120/