1 名前:デフォルトの名無しさん [2007/08/21(火) 15:32:26 ] NTT DoCoMoのiモード携帯電話用Javaに関する話題を扱うスレッドです。 ※DoCoMo以外は下記スレへ。 CLDC+MIDP+携帯電話用Javaスレッド part 7 ttp://pc11.2ch.net/test/read.cgi/tech/1180010672/ ■ iアプリ特有ではなくJava一般に関する質問はこちらへ 【初心者】Java質問・相談スレッド104【大歓迎】 ttp://pc11.2ch.net/test/read.cgi/tech/1185493592/ ■ iモード携帯電話用Java(iアプリ)まとめサイト ttp://ton.my-sv.net/ ■関連スレ 【日本携帯】Mascot Capsule/Micro3D【標準】 ttp://pc8.2ch.net/test/read.cgi/tech/1117773530/
2 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 15:35:00 ] 過去スレ Part 1 ttp://piza2.2ch.net/tech/kako/975/975428633.html Part 2 ttp://pc3.2ch.net/tech/kako/1000/10007/1000723476.html Part 3 ttp://pc2.2ch.net/test/read.cgi/tech/1040898596/ Part 4 ttp://pc5.2ch.net/test/read.cgi/tech/1067139509/ Part 5 ttp://pc5.2ch.net/test/read.cgi/tech/1084246226/ Part 6 ttp://pc5.2ch.net/test/read.cgi/tech/1091286071/ Part 7 ttp://pc5.2ch.net/test/read.cgi/tech/1102844217/ Part 8 ttp://pc8.2ch.net/test/read.cgi/tech/1110946222/ Part 9 ttp://pc8.2ch.net/test/read.cgi/tech/1120411353/ Part 10 ttp://pc8.2ch.net/test/read.cgi/tech/1131603113/ Part 11 ttp://pc8.2ch.net/test/read.cgi/tech/1141796982/ Part 12 ttp://pc8.2ch.net/test/read.cgi/tech/1154336955/ Part13 ttp://pc11.2ch.net/test/read.cgi/tech/1164168601/ Part14 ttp://pc11.2ch.net/test/read.cgi/tech/1174036396/
3 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 15:36:47 ] ■ 開発環境 NTT DoCoMo - iアプリコンテンツの作成について www.nttdocomo.co.jp/service/imode/make/ Java[tm] 2 Platform, Standard Edition v 1.4 java.sun.com/j2se/1.4/ja/ CLDC仕様書 日本語版 java.sun.com/products/cldc/docs/CLDC1.0_ja_docs.zip Eclipse.org www.eclipse.org/ ■ 機種依存情報 ん・ぱか工房(iアプリ機種依存情報) www.saturn.dti.ne.jp/~npaka/ NTT DoCoMo - アプリケーション作成上の注意点 www.nttdocomo.co.jp/service/imode/make/content/iappli/caution/index.html Overflow! さかきけいのページ(504iまでの機種依存情報つきAPIリファレンスあり) godwood.allnet.ne.jp/vioret/ ■ アプリを省サイズ化するツール(ObfuscatorまたはOptimizer) Java Blender homepage.mac.com/t.sekiguchi/javablender/ jarg - Java Archive Grinder jarg.sourceforge.net/
4 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 15:40:38 ] ■ 主なアプリ配布サイト ギガアプリ g-appli.net/ アプリ★ゲット appget.com/ ゲームチャンネルi appli.channel.or.jp/pc/i/ ■ 携帯関連ニュース ITmedia:モバイル www.itmedia.co.jp/mobile/ ケータイ Watch k-tai.impress.co.jp/ Nekomaru What's New snget.hp.infoseek.co.jp/news/news_index.htm ■ 関連板 携帯・PHS hobby7.2ch.net/phs/ 携帯機種 hobby7.2ch.net/keitai/ 携帯コンテンツ hobby7.2ch.net/chakumelo/ 携帯電話ゲー hobby7.2ch.net/appli/
5 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 21:15:31 ] >1 乙
6 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 08:51:26 ] >>1 乙です。 そして新スレ質問第1号。 自分の美声(歌声)を再生するアプリを作ろうと思っています。 歌は演奏付で約1分30秒くらいです。 でも、3gppは904以降しか再生出来ないんですよね? という事は従来の端末のユーザにも美声を聞いてもらう為には mp3→mldかな〜?とも思ったんですが、サイズが…。 これは素直に諦めるか904以降のユーザにのみ美声を届ける しか方法がないという事でしょうか?
7 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 12:38:46 ] 音声のみの3gp動画として再生すればいい。 ただヒープの空き容量によっては90秒は無理かもしれない。
8 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 12:50:32 ] OpenGL ESを使った携帯アプリの開発方法は公開されているのですか?
9 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 13:53:54 ] Mail mail; try{ // こいつがエラー mail = MailAgent.getLastIncoming(); }catch(SecurityException e){ mail = null; }catch(IllegalStateException e){ mail = null; } こういう処理を記述したんですが, getLastIncoming()が実行されたときに SecurityViolation: 6 getLastIncoming 0 というエラーをコンソールに残してシステムがダウンしてしまいます (DoJa5.0 Eclipse) どこかの設定ファイルで許可が足りないのだと思いますが, どのようにすればいいのでしょうか...?
10 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 14:53:33 ] メール関連のメソッドはトラステッドじゃないと呼び出せないけど その辺は大丈夫?
11 名前:9 mailto:sage [2007/08/22(水) 15:17:51 ] トラステッドってDXのことですよね... プログラム組んでると基本的なことほど気付かなくて... そもそも無理なものに四苦八苦してました... ありがとうございます.
12 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 15:28:14 ] 自分はPHPでメールも送れるサーバ用意したお
13 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 15:44:11 ] 今、外部メディアに画像を保存するiアプリを作っているのだが、案外、読み書きに処理時間がかかるんだよね。 んで、時間がかかるのは仕方ないとして、処理中だという事をユーザに教えてあげたい。 または、進捗状態を表示したいのだが、何か良いアイデアはないものかなぁ。 砂時計もどきとかプログレスバーみたいなのは大変そうだし・・・
14 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 16:20:23 ] 前スレ乙
15 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 16:27:33 ] 前レス>>999 DoCoMoのソニー端末以外の端末は、タイマ解像度が10msだから Thread.sleep(1)ってのはThread.sleep(10)と変わらない。 完全にフレームを固定したいなら、そもそもsleepを入れないほうがいい。 電力消費が激しそうだがな。
16 名前:15 mailto:sage [2007/08/24(金) 16:30:28 ] 前レス>>993 >実機ではいまいち正確に保ってくれないんだ たぶん、上で説明したタイマ解像度10msのためだと思われる。
17 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 16:35:00 ] 俺はsleep入れてるけど結構安定してるよ。 フレーム数をチェックして多かったら少しずつ sleep時間延ばしてやるとかしてる。 当然毎回sleep時間を大きく変えてると不安定になる。
18 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 16:39:14 ] >>15 将来的な事を考えて1を指定しているだけで、 別に10msだろーが20msだろーが問題ないよう書いてあるよ。 滑らかなアニメーションは期待薄かもだけどね。
19 名前:15 mailto:sage [2007/08/24(金) 16:56:05 ] >>18 あ、別に>>999 を否定するために言ったわけじゃないんだ。 否定するように見えたならあやまるよ。すまんかった。 >>17 sleep入れないって言ったのは、完全にフレームを固定したい場合のみだからね。 10msって0.01秒だから、その範囲で多少誤差が出ても体感として分からないし、sleep入れるのが普通だと思うよ。 ちなみに俺のFPS固定のソースは↓ private long backTime; private int waitTime = 50; // 20FPS public run() { backTime = System.currentTimeMillis(); while (true) { // 時間待ち { Thread.yield(); long time = waitTime - (System.currentTimeMillis() - backTime); if (time > 0) { try { Thread.sleep(time); } catch (InterruptedException e) { } } backTime = System.currentTimeMillis(); } // メインの処理を入れる } }
20 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 16:59:46 ] >>15 タイマ解像度1000msの端末が有ったとして、 0.5秒目でsleep(1)したら1.5秒までsleepすると思ってない?
21 名前:15 mailto:sage [2007/08/24(金) 17:12:04 ] >タイマ解像度1000msの端末が有ったとして、 >0.5秒目でsleep(1)したら1.5秒までsleepすると思ってない? やべぇ、ちょっとそう思ってた。 >Thread.sleep(1)ってのはThread.sleep(10)と変わらない。 俺のこの発言間違いだね。無視しちゃってください。
22 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 17:14:57 ] >>20 >>21 >タイマ解像度1000msの端末が有ったとして、 >0.5秒目でsleep(1)したら1.5秒までsleepすると思ってない? 俺もそう思ってた! WinAPIのsleepは確かタイマ解像度に依存していたと記憶しているが Dojaの場合は違うのか
23 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 17:21:16 ] ひどい流れだ
24 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 17:22:06 ] え、ちょっと意味が解らんのだけど 俺はタイマ解像度1000msだったら、 1000ms以下は入れても無駄というか正確に測れない ってことだと思ってた
25 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 17:23:15 ] ハードが十分に速ければそこまで気にする事じゃないんだろうけどなw
26 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 17:27:34 ] >>24 携帯内で1個だけ動いてる解像度1秒の時計をみんなで見てるなら、 秒が切り替わった直後に1秒スリープすると、 次に変わったって気づけるのは約2秒後って話じゃね? 動けば良いやで作ってるから、間違ってたらゴメンw
27 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 17:29:31 ] 結局sleep関数の精度はタイマ解像度には依存せず全端末1msが保障されてるということでいいの?
28 名前:15 mailto:sage [2007/08/24(金) 17:33:30 ] 俺もだんだん混乱してきた。 >>20 >タイマ解像度1000msの端末が有ったとして、 >0.5秒目でsleep(1)したら1.5秒までsleepすると思ってない? この場合は、2.0秒までsleepするであってるよな?
29 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 17:36:42 ] >>28 あってるよ
30 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 17:40:39 ] え、全然解らん こういうもんだと理解してたんだけど sleep( 1000 )で呼び出したとする ↓ スリープを開始 ↓ タイマーを見て現在時刻を取得(多分ミリ秒単位) ↓ 以降、一定時間ごとに時刻を取得して比較 現在時刻から1000ミリ秒以上経ってたらスリープ解除 この一定時間がタイマ解像度だと思ってた
31 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 17:43:14 ] それでいいんじゃね?
32 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 17:49:15 ] ということはタイマ解像度が100msの端末の最大FPSは10ということになるんでしょうか
33 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 17:53:04 ] え?なんで?
34 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 18:02:36 ] >>33 おげ、違うのか・・・? タイマ解像度=100msとして 0ms(開始) 処理(20msかかった) 20ms sleep(1)←タイマ解像度100msなので(1)でも100msまで進んでしまう 100ms 処理(50msかかった) 150ms sleep(1)←タイマ解像度100msなので(1)でも200msまで進んでしまう 200ms 結局10FPSにならんの?
35 名前:34 mailto:sage [2007/08/24(金) 18:07:35 ] すまん…sleepの理解は34でいい?として FPSを上げたければsleepいれなきゃいんだよね
36 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 18:09:17 ] あ、なるのかも? もう混乱してワケワカラン
37 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 18:31:55 ] タイマ解像度100msということは、100msに一度タイマ割り込みが 発生するということ。 >>34 の例では、20msのあとでsleep(1)をした場合、sleepが終了 するのは、割り込みのタイミングに対してどの時点で命令を発行 したかに依存するので、待ち時間は1〜100msのいずれか。 ごめん、うまく説明できないな。
38 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 20:16:13 ] >>35 基本的にはそれでOKだと思う。 ただ、液晶画面の応答速度を考えると sleepを削除しても、1000FPSとかはでないと思わr。
39 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 20:16:52 ] >>34 の例でいうと、開始の時点で携帯のタイマが 0ms にリセットされるわけではないから、 90ms(開始) 処理(20msかかった) 110ms sleep(1) 200ms かもしれないし、 40ms(開始) 以下略 処理(20msかかった) 60ms sleep(1) 100ms かもしれない。結局10FPSになるのは、まぁたぶんそうかもしれんが、保証はない。 sleep(1) は、最低 1 ミリ秒以上スリープする、というだけで、上限は定められてない。
40 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 23:12:52 ] sleepは落ち着いてきたからいいよな。>34が正解。 で、FPSの話に移るとして、大前提。 ・FPS固定する理由が端末毎の処理速度差を吸収する目的であるとする。 とした場合、sleepがあろーとなかーと、他の部分を考慮しないとダメ。 他の部分ってのは、『処理が早すぎた場合』と『処理が遅れた場合』。 >>19 と前スレの >>993 のFPSクラスの場合、 早すぎた場合に関してはsleepで待っているので問題ない。 問題なのは『処理が遅れた場合』の方で、 メイン処理や描画が 1000/フレーム数ms 以上の場合に遅れを取り戻せない。 レースゲームなんかじゃ致命的で、 遅い端末と早い端末が同時にレーススタートすると、遅い端末が後でゴールする。 >backTime = System.currentTimeMillis(); ここを backTime += waitTime; とすれば軽い時にそのうち追いつくけど、追いかけてる最中高速アニメーションw まだ遅れっぱなしの方がマシってくらい有り得ない。
41 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 23:18:06 ] FPS(あくまで全端末の処理速度)を一定に保つ方法はいくつかあるけど、 ここいくつかのレスを見る限り、 前スレ999のみが早すぎるケースにも、遅すぎるケースにも対応してる。 例え描画が1,2フレーム落ちても、mainLoop関数は秒間平均20フレーム回るので、 pos +=speed; と書いてあっても大丈夫。 ただ、999にも書いてあるけど長時間サスペンドや、 ダイアログでmainLoopを止めると対処がムズイ。 他は遅れっぱなしになるか、以下の制限付ければFPS固定になる。 ・どんなに遅い端末でも、1フレームあたり1000/フレーム数ms 以上の時間が かからないようにする。(最悪、遅い端末にフレームレートをあわせる) ・座標計算をこんな感じで…かなり面倒。 pos += (System.currentTimeMillis()-time) * speed / FLAMERATE; ・遅い端末は忘れる で、話を戻してsleepが有るとか無いとか言ってる人。 タイマ解像度は currentTimeMillis() にも影響するので、実はあまり意味ない。 sleep使わないメリットは、sleepに与えた時間以上に休むのを防ぐことができるくらい。
42 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 23:55:17 ] タイマ解像度ってTimer#getResolution()のことで合ってる? getMinTimeInterval()の話が出ないのも引っかかるんだが、 気にしなくていいのかな。
43 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 21:51:05 ] うん、論外。
44 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 00:33:18 ] iアプリベンチはgetResolution()の値を取ってなかったっけ?
45 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 10:54:13 ] >>44 25msとかで記述するのが面倒だから 1000msなり100msで具体的にどーなるかを議論している訳で、 iアプリベンチの値が実際のタイマ解像度と異なったとして、 上の議論には何の影響も無いでしょ。 どんなタイマ解像度の機種であっても、FPS固定できる事が理想なんだし。
46 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 14:27:14 ] >>45 "FPS"って何だか分かってる?
47 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 15:20:14 ] 流れ切ってすまん。 マスコットカプセルは右、下、奥が正の値の右手座標系って公式資料に書いてるけどこれって一般的? 俺は右手座標系というと右、上、手前が正だと思ってた。
48 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 15:26:12 ] それは数学
49 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 15:39:05 ] >>47 マスコットカプセルが特殊、あなたが正常
50 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 15:53:08 ] >>45 だからその「実際のタイマ解像度」って何かなと思ったのよ。 System#currentTimeMillis()の戻り値が常に一定間隔であることが すべての機種で確認されてるの? Thread#sleep(1)を100回繰り返したらタイマ解像度×100の時間が経過するの? 納得して議論してるなら横槍入れてごめん。
51 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 16:24:58 ] 別にいいじゃん、そんなに厳密じゃなくても動くんだし。 と思ってみたが、それを理由にして パチスロアプリの仕事を断ったような覚えがあったw パチスロってボタン押してから何ミリ秒以内に停止しないと いけないとか法律で決まってるんだよね。
52 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 18:47:30 ] そもそもは、前スレ>>999 で投下されたソースに対して、ウェイト部分に sleep(1)=タイマ解像度よりも低い値を指定しているのでは正しく動作 しないのでは?という疑問から始まった話。 実際の動作は、タイマ解像度の性能が許す限り最良の待ち時間だけ待って くれるので>>999 のソースは少なくとも間違っていないっしょ。 で、途中から可変FPSにして見かけ上の動作速度を同じにするような、一昔前の リフレッシュレートに関する論争みたいな話がでてきてどんどん脱線している 気がする。タイマの説明については>>37 の解説がハードウェア的にはあってると 思われ。
53 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 19:15:05 ] > タイマ解像度の性能が許す限り最良の待ち時間だけ待って sleepでしょ?最良ねぇ...
54 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 21:42:46 ] タイマー関連について検証アプリを書いてみた。 FPSの議論とは直接関係ないので興味のある人だけどうぞ。 akizakura.dyndns.org/i/TimerTest.html QRコード akizakura.dyndns.org/i/TimerTest.png D902iの場合 Timer#getMinTimeInterval() = 10 Timer#getResolution() = 10 System#currentTimeMillis()の間隔 min=1 max=1 avg=1.0 sleep(1) * 100 = 218ms. sleep(2) * 100 = 314ms. sleep(3) * 100 = 412ms. iアプリベンチのタイマ解像度はTimerクラスを使わないかぎり 気にしなくていいのかもしれない。
55 名前:デフォルトの名無しさん [2007/08/28(火) 10:25:14 ] iアプリでできるチェスってないかな 月額料金を払わなくていい売り切り、または無料で 将棋と比べるとほとんど見かけない
56 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 10:59:52 ] >>55 コード組む話じゃないのならその質問は板違い。
57 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 14:52:16 ] >>54 俺も試してみたよ。 N903iの場合 Timer#getMinTimeInterval() = 10 Timer#getResolution() = 10 min = 1 max = 10 avg = 1.01000908 sleep(1) * 100 = 100ms. sleep(2) * 100 = 200ms. sleep(3) * 100 = 300ms. 何回かやってみたけど、sleep(3) * 100 の結果に少しばらつきが有った。 316ms.とか。
58 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 18:46:01 ] >>57 sleep精度がすごくいいね >>54 のはsleep1回につき1ms程度のオーバーヘッドがある感じなのかな
59 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 19:58:36 ] だとすればsleepでタイミングを計る場合は 前スレ>>353 みたいにするのがいいのかもな
60 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 20:13:25 ] sleepも自前waitも使わずタイマーで回してるのは俺だけで良い
61 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 13:48:39 ] やっぱタイマー精度もそうだけど全ての端末での動作を確認したい所だよね。 特にサウンド関連なんかはちゃんと鳴るか自分で確かめたいし…。 俺は知り合いから古い携帯をもらって900シリーズはある程度集めたんだけど 901以降ってなかなかくれる人いないんだよね。。 てか、携帯の白ロム?っていうのかな、中身空のやつって店に売ってる?
62 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 14:00:53 ] >>61 白ロム.com ttp://www.sirorom.com/
63 名前:61 mailto:sage [2007/08/29(水) 17:00:50 ] >>62 サンクス。早速見てみた。 てか、白ロムってこんなに高いの?? てっきりワゴンセールみたいな感じで1000円くらいで売ってるのかと思った…
64 名前:62 mailto:sage [2007/08/29(水) 17:10:26 ] 白ロム専用の販売サイトはここ以外にもいくつかあるけど 基本的に値段はあまりかわらない。 アプリ開発する会社とかが普通に購入するから この値段で売っているんだと思うよ。
65 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 17:54:20 ] docomo使ってる友人知人に使わない携帯クレクレしてれば案外集まってこない? NとかPとかNとかPとかn ('Д'#)イラネーヨ
66 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 20:03:14 ] >>65 いらないならくれ! まあヤフオク利用する手もあるわな。
67 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 21:28:10 ] ヤフオクって取引の半数が詐欺か犯罪かヤフー社員の息が掛かってる怪しい取引じゃん・・・
68 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 23:49:01 ] >>65 最近元カノと出かける用事があって携帯買い換えたらクレって言ったんだけど 「あんたデータ消しても蘇らせそうだから嫌」って言われたw でも確かにヤフオクは怖いなぁ。。 とりあえず俺が集めたのは… P900iv N900i D701i って、3つしかないやんけw まぁでも、あとSOとSHさえGETすればメーカーごとのwav確認は出来るからよしとしよう。 つーか、秋葉行けば手に入る?1000円くらいで買えるなら上京してでも…
69 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 02:19:32 ] >>47 プログラマの常識的には右、上、手前=OpenGLで一般かもしれんが、 これもOpenGL以外にはそうないし一般的かは疑問。 モデルツールはツールで軸方向はいろいろ違うしさ
70 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 05:44:18 ] 2D画面のX軸とY軸に合わせて、あと画面の奥に向かってZ軸を伸ばしてるんだろ。 ぶっちゃけ発想が古いと思うが、MascotCapsuleの出自を考えるとそんなもんじゃね。 俺はOpenGLが公開されるまで3Dゲーム作らんつもりなのでどうでもいい。
71 名前:デフォルトの名無しさん [2007/08/30(木) 09:54:18 ] >>70 なるほど。 すげー納得した。 その発想は出来なかった。
72 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 10:28:40 ] >>67 2chのカキコの半数は嘘と煽りの怪しいサイトでしょw 要は使いよう。
73 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 11:25:09 ] >>69 右手座標系の意味をわかってて言ってる?
74 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 11:37:17 ] 質問させてください。 void send() { clearKeyState(); for (;;) { repaint(); Thread.sleep(50); int key = getKeyState(); if (key == Display.KEY_SOFT2) { drawString("認証中", 50, 110); //通信処理 //通信結果表示 } } } このような処理を作成したのですが、思い通りに動作しない 場合があります。 やりたいこと:通信処理中はずっと画面に"認証中"と表示させたい。 問題点:たまに(2割位の確立で)"認証中"が表示されるも一瞬で消えてしまう。 ・通信処理は実機,エミュレータ共に2秒くらい。 ・"認証中"が一瞬で消えてしまったときでも通信処理自体は正常に動作している。 ・repaint()ではダブルバッファリングを使用。 お分かりの方おりましたら、アドバイスよろしくお願いします。
75 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 12:20:57 ] そもそも、そのコードだとソフト2キーを押してる時だけ認証中って 表示される気がするんだけど
76 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 12:50:20 ] "認証中" って描画するための Graphics はどこから?
77 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 12:53:42 ] >>75 通信処理のところでブロックして、forループ回らずにいるんじゃないの? どちらにしろ通信結果表示のところも怪しい。中でループしてんのかな。 それとも画面を背景色とかでフラッシュしてない? 通信が思ったより早く終わったとかそんなんじゃないのかね。 一瞬だけ表示されるのが嫌なら、最低何秒は表示させるって処理を 追加してはどうだろう。
78 名前:74 mailto:sage [2007/08/30(木) 12:58:15 ] >>75 さん、ご意見ありがとうございます。 すいません、説明不足でした。 getKeyState()等は以下のメソッドを記述していました。 int keyParam = -1; public void processEvent(int type, int param) { if (type == Display.KEY_PRESSED_EVENT) { keyParam = param; } } //キー状態の取得 int getKeyState() { int ret = keyParam; keyParam = -1; return ret; } //キー状態のクリア void clearKeyState() { keyParam = -1; } 申し訳ありませんが、あらためてアドバイスよろしくお願いします。
79 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 13:13:10 ] >>78 通信処理は別スレッドで行ってる?
80 名前:74 mailto:sage [2007/08/30(木) 13:51:36 ] 74です。 皆様からの貴重な意見ありがとうございます。 あきらかに情報不足のようですので、長々となってしまいますが 具体的にコードを乗せさせていただきます。 Graphics g; //コンストラクタで G=getGraphics()を使用 void send() { clearKeyState(); for (;;) { repaint(); Thread.sleep(50); int key = getKeyState(); if (key == Display.KEY_SOFT2) { drawBox("認証中", 30, 100, 120, 60); //通信中 //通信処理メソッド drawBox("結果", 20, 90, 140, 80); //通信結果 ctl; } } } //ボックス表示 void drawBox(String str, int x, int y, int col, int row) { g.setColor(ピンク); g.fillRect(x, y, col, row); g.setColor(白); g.drawString(str, ボックス中央); g.setColor(黒); }
81 名前:74 mailto:sage [2007/08/30(木) 13:54:40 ] 続きです。 //セレクトキーを押したら終了 void ctl() { for (;;) { int key = getKeyState(); if (key == Display.SELECT) { return; } } } //ペイント public void paint(Graphics g) { //起動直後にpaintが呼ばれても大丈夫にする if (state == 0) { return; } this.g = g; g.lock(); drawhaikei(); g.unlock(true); } //画面描画 void drawhaikei(){ //画面初期化 g.setColor(黒); g.fillRect(画面全体); //以降描画処理 } だいぶ長々と書いてしまい申し訳ありませんが、よろしくお願いします。
82 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:19:55 ] 描いてないから描かれてないんだろ。 以上。
83 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:24:28 ] > this.g = g; なんだこれは
84 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:26:19 ] ctl()から抜け出せてないんじゃないの?
85 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:28:21 ] >>83 それはdrawhaikei()で使うためじゃないかな 引数で渡せばいいと思うけど
86 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:35:11 ] とりあえずだいぶ設計に問題があるな
87 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:38:20 ] drawhaikeiで使うだけならいいけど、たしか"認証中"を描画するためにコンストラクタで初期化してるとか言ってなかったか
88 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:47:37 ] drawBox("認証中", 30, 100, 120, 60);のあと 再描画しないで通信処理開始してるからじゃないの? 2割くらいの確率で描画されることもあるってのは システム側が通信開始までの微妙なタイミングで(repaint要求なしでも)たまたま描画しただけで。 一瞬描画されても消えるってのは paint()が実行されたときdrawhaikei(){}内のg.fillRect(画面全体);のとこで消しちゃってるからだろ。 プログラムの構造が変だよ。 drawBox()はdrawhaikei(){}内から呼び出すようにした方が 描画タイミングに一貫性があっていいと思う。
89 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:55:06 ] 1.通信前 repaint(); ←ここで通信前の画面が描画される 2.通信中、通信直後 drawString("認証中", 50, 110); ←repaintが呼ばれてないので画面には反映されない。 //通信処理 //通信結果表示 ctl(); ←ここまで、通信前の画面が表示されている。 3.通信完了後 repaint(); ←ここで「認証中」が描画される Thread.sleep(50); ・・・ 4.次のフレーム repaint(); ←「認証中」が消される どの辺がダブルバッファなのかという質問は無し?
90 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:56:32 ] もしかして g.lock() → g.unlock(); これだけでダブルバッファリングになることしらない?
91 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:58:28 ] g.lock()してるあたりじゃまいか
92 名前:74 mailto:sage [2007/08/30(木) 15:04:07 ] 74です。 皆様からのありがたいお言葉ありがとうございます。 というか毎回情報不足&ダラダラと長文で分かりづらくて申し訳ありません。 明らかに自分の知識および経験が不足しているので、皆様の意見を参考にして 暫くは自力で頑張ってみます。 本当にありがとうございました。
93 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 21:04:04 ] 3Dのアプリを作ってみたいんだけど、簡単なサンプルみたいなやつって無いですか? googleで探してもぜんぜん見つからないです
94 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 22:59:08 ] 俺の親切なアドバイス:やめとけ
95 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 13:10:42 ] >>93 とりあえず、んぱか逝っとくといいよ ttp://www.saturn.dti.ne.jp/~npaka/mascotcapsule/index.html
96 名前:デフォルトの名無しさん [2007/08/31(金) 15:13:57 ] Doja5.0で、エミュ上でOpenGLのFloatMath使ってみたんだけど、 SecurityViolation: 37 <clinit> 0 と言われてしまいました。 エミュでもトラステッドじゃないとやっぱだめ?
97 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 10:46:46 ] トラステッド動作設定を忘れてるか jamファイルにOpenGL使う設定を書くのを忘れてるか どっちかじゃない?
98 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 16:52:46 ] 10 print"ばか" 20 goto 10 画面中を「ばか」でいっぱいにするプログラムを組んだのですが だめみたいです どうすれば?
99 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 17:35:46 ] 多分言語の問題。
100 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 20:25:03 ] 他言語をずっとやってると、新しい言語を覚えてもどうしても前のに引きずられるよね
101 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 20:47:34 ] 新しい言語に習熟してないうちはそうだね