iモード携帯電話用Java(iアプリ) Part10
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2005/11/10(木) 15:11:53※DoCoMo以外は下記スレへ。
CLDC+MIDP+携帯電話用Javaスレッド part 4
http://pc5.2ch.net/test/read.cgi/tech/1108781476/
■ iアプリ特有ではなくJava一般に関する質問はこちらへ
【初心者】Java質問・相談スレッド68【大歓迎】
http://pc8.2ch.net/test/read.cgi/tech/1119115837/
■ iモード携帯電話用Java(iアプリ)まとめサイト
http://ton.my-sv.net/
■関連スレ
【日本携帯】Mascot Capsule/Micro3D【標準】
http://pc8.2ch.net/test/read.cgi/tech/1117773530/
過去スレ
Part 1 http://piza2.2ch.net/tech/kako/975/975428633.html
Part 2 http://pc3.2ch.net/tech/kako/1000/10007/1000723476.html
Part 3 http://pc2.2ch.net/test/read.cgi/tech/1040898596/
Part 4 http://pc5.2ch.net/test/read.cgi/tech/1067139509/
Part 5 http://pc5.2ch.net/test/read.cgi/tech/1084246226/
Part 6 http://pc5.2ch.net/test/read.cgi/tech/1091286071/
Part 7 http://pc5.2ch.net/test/read.cgi/tech/1102844217/
Part 8 http://pc8.2ch.net/test/read.cgi/tech/1110946222/
Part 9 http://pc8.2ch.net/test/read.cgi/tech/1120411353/
0792791
2006/02/13(月) 23:55:000793デフォルトの名無しさん
2006/02/14(火) 00:25:49〜
public void start(){
〜
while(true){
〜
keyCheck();
〜
}
}
private void keyCheck(){
int key=getKeypadState();
System.out.println(key);
if(((1<<Display.KEY_SOFT2)&key)!=0) IApplicatoin.getCurrentApp().terminate();
}
〜
}
このgetKeypadState()が返す値がいつも0のようで、
エミュレータで決定キーを押し続けていてもコンソールに0しか出ません。
原因がわからないので、わかるかた教えてください。
0794デフォルトの名無しさん
2006/02/14(火) 00:30:23ありがとうございます。
うまく出来ました。
0795デフォルトの名無しさん
2006/02/14(火) 01:14:40スリープ入れてみれ。
ループが早すぎてログ出力が追いついてないだけだろ
0796デフォルトの名無しさん
2006/02/14(火) 01:36:28〜
public void start(){
〜
while(true){
long sleepTime=0L
〜
keyCheck();
while(System.currentTimeMillis()<sleepTime+50L);
sleepTime=System.currentTimeMillis();
変わらんかったとです
0797デフォルトの名無しさん
2006/02/14(火) 02:23:44Thread.sleep
0798デフォルトの名無しさん
2006/02/14(火) 03:06:12ソフトキー2のキー押下チェックしてるのに
決定キー押したって反応あるはずないだろ
0799798
2006/02/14(火) 03:31:410800デフォルトの名無しさん
2006/02/14(火) 10:04:47>int key=getKeypadState();
>System.out.println(key);
printlnにはStringを渡せよ。
0801デフォルトの名無しさん
2006/02/14(火) 11:12:19こっちでkeyCheck()を毎フレーム呼び出すのを作ってみたがなんら問題ない。
正常に動く。だとすれば原因として思いつくのは
keyCheck()が実は呼び出されていない。返されてる0が別の場所のかもしれない。
System.out.println("KEY="+key);とかで名前付けとけばわかりやすい。
keyCheck()部分を疑うんじゃなくてそれ以外の全体を疑うべし。
提示されてるソースからはそれくらいしか言えないよ。
0802デフォルトの名無しさん
2006/02/14(火) 11:45:18ループの頭に1msスリープするようにすべし。
0803デフォルトの名無しさん
2006/02/14(火) 13:38:46そんなことはない。
そもそも、1msのスリープを入れたら、ほとんどの機種で10msスリープすることに…
0804デフォルトの名無しさん
2006/02/14(火) 13:52:42正しく動かない端末が昔あったような気がする。
0805sage
2006/02/14(火) 14:34:00パッケージ化されたMain Sub Scoreというソースで
Sub画面で使用しているInt関数(変数名nokori)をTextBoxで表示させてて
その変数をScore画面で表示させたいのですが、
そのときのプログラムがよくわからないんですが
getTextで持ってくることはできるのでしょうか??
スクラッチパッドを使用して持ってきたほうがいいのでしょうか。
0806デフォルトの名無しさん
2006/02/14(火) 14:38:51ゲッターセッター。
はい次
0807デフォルトの名無しさん
2006/02/14(火) 14:40:190808805
2006/02/14(火) 14:52:04Scoreで表示させるときのPGは
this.getText().setString(nokori);
って事でしょうか?
0809デフォルトの名無しさん
2006/02/14(火) 22:09:43N900iで、標準MIDIファイルではチャンネル1から8までしか使えないとか小耳にしたんですが、
これじゃドラム鳴らせないのと違います? そこんとこどうなってん?
次に、ドコモ携帯の音源はGM規格だと仮定していいんでしょうか。
いくらぐぐっても音源の仕様が出てきません。
それから、ぶっちゃけ900i以降でもおとなしくMFi使ったほうがいいの?
あと、BGMのループは相変わらずMediaListenerで待つしかないんでしょーか。
MFiなりSMFなりに何かループコマンドみたいなの仕込めないの?
以上、暇ならよろしくです。
0810デフォルトの名無しさん
2006/02/14(火) 22:31:54誰かわかる方いたら教えてもらえないでしょうか
0811793
2006/02/14(火) 22:33:39仰るとおりSystem.out.println("KEY="+key);としてみても
やっぱりKEY=0の繰り返しですし、他に原因が見つからないので
そこだけ作り直すことにして見ます。
0812デフォルトの名無しさん
2006/02/14(火) 22:38:26俺らはエスパーか?
0813デフォルトの名無しさん
2006/02/14(火) 22:47:31どっかで見た
0814デフォルトの名無しさん
2006/02/14(火) 23:30:34マルチ乙。
0815デフォルトの名無しさん
2006/02/14(火) 23:34:05俺の勘ではテストした端末が壊れてるから
Docomoショップ持っていって見てもらえ。
0816デフォルトの名無しさん
2006/02/14(火) 23:41:260817デフォルトの名無しさん
2006/02/14(火) 23:48:03Thread.sleep 入れてもダメだったのね?
ソフトキー2を押しても terminate しないのね?
エミュレータの画面上ではボタンが押された反応(ボタンが白表示)あるのね?
0818デフォルトの名無しさん
2006/02/14(火) 23:58:31Nはドラムチャンネルを10chにすると鳴らない
MIDIよりMLDを使ったほうがデータサイズ小さいから良い
ループはDoJa3.5でもオプションだったかな?
まあ普通はMLDの中にループポイントを埋め込む
0819818
2006/02/15(水) 00:00:16NはAudioPresenterを複数チャンネルで使ったとき
ドラムが鳴らなくなるということね
0820デフォルトの名無しさん
2006/02/15(水) 00:17:59Thread.yieldの方がいいんでない?
0821793
2006/02/15(水) 00:30:06駄目でした
明らかに白くなって押せている状態です
0822デフォルトの名無しさん
2006/02/15(水) 00:51:24・ビルドしないで実行している
・そもそも実行しているものが違う
この辺疑えw
0823デフォルトの名無しさん
2006/02/15(水) 11:21:27呼び出されてるのに結果がおかしいのか・・・。
作り直すってのはどこの事指してるのか判らないが
全体の流れを作り直すのが先決かもな。スリープ関連の書き込み多いし、
俺が実験したのもちゃんとループをスリープで制御してある奴に組み込んで実験したし。
提示されたソースの省略されてる部分がどうなってるのか次第だよなぁ後は・・。
0824デフォルトの名無しさん
2006/02/15(水) 11:33:28悪いことは言わない、おとなしくMFi使っとけ。
ループに関しては、データ側のループ指定を無視する腐れ機種があるので、
MediaListenerで待つしかありません。
>N900iで、標準MIDIファイルではチャンネル1から8までしか使えない
MFiにコンバートするときも同じ制限があるので気をつけろ。
ドラムは、トラック1〜8のどこかに割り付けるんだ。
0825デフォルトの名無しさん
2006/02/15(水) 11:36:35Display.setCurrent()でカレントに設定してないとか、
そもそもGameCanvasのインスタンスを生成してないとか、
そんなオチじゃないだろうな…?
0826デフォルトの名無しさん
2006/02/15(水) 11:50:20腐れ機種を教えてください
0827デフォルトの名無しさん
2006/02/15(水) 12:23:03N900系
0828デフォルトの名無しさん
2006/02/15(水) 12:26:28ttp://www.nttdocomo.co.jp/p_s/imode/java/caution.html
0829デフォルトの名無しさん
2006/02/15(水) 12:43:41ありがとう
0830デフォルトの名無しさん
2006/02/15(水) 14:29:22示してしないのです。
ソースの方が結構ズレて表示されてるような気がします。
最初の頃は平気だったのですが、
フォントの設定か何かのでしょうか?
DoJaをインストールしなおしても駄目でした。
0831デフォルトの名無しさん
2006/02/15(水) 14:36:11それ仕様
0832デフォルトの名無しさん
2006/02/15(水) 15:52:27(゚Д゚≡゚Д゚) ドコ? コレドコドコ?
0833デフォルトの名無しさん
2006/02/15(水) 15:56:32JVM、SDKが1.4までならきれいに並ぶ
0834830
2006/02/15(水) 16:32:18そうでしたか…
どうしようもないのですね…
0835デフォルトの名無しさん
2006/02/15(水) 23:30:00プロジェクトを開きなおしてみたら?
0836デフォルトの名無しさん
2006/02/16(木) 01:57:03if ( ( t = tgtTime - System.currentTimeMillis() ) > 0 )
Thread.sleep( t );
なぜか、秒20コマくらいで動く。困ってます。
sleep() の精度がおかしいのかな??
while ( tgtTime > System.currentTimeMillis() )
;
とするとキッチリ動く。
でも長時間 sleep() を一切呼ばないため、端末への負荷が気になってます。
これでも問題ないでしょうか。
0837デフォルトの名無しさん
2006/02/16(木) 02:13:1730fpsなんて速さは出せない。505とかだとせいぜい15〜20fps。
0838デフォルトの名無しさん
2006/02/16(木) 02:16:29>>836とは関係ないけどちょうど>>803で言われてる。
0839デフォルトの名無しさん
2006/02/16(木) 09:49:05ぐぐってたらノベリオンというフリーソフト見つけました
誰か使ってる人いますか?
0840デフォルトの名無しさん
2006/02/16(木) 10:39:42>でも長時間 sleep() を一切呼ばないため、端末への負荷が気になってます。
>これでも問題ないでしょうか。
問題ない。
電池の持ちなど、知るか!
0841デフォルトの名無しさん
2006/02/16(木) 10:52:41新手の宣伝乙。
0842デフォルトの名無しさん
2006/02/16(木) 11:05:45>でも長時間 sleep() を一切呼ばないため、端末への負荷が気になってます。
>これでも問題ないでしょうか。
>>840の答えとまったく逆だが問題あるよ。
一部の機種に置いてその手の超高速回転部分でif文などの条件判断を実行すると
CPUへの負荷かメモリへの負荷かわからないが、内部でgc()呼ばれた時に
ものすごく遅くなる事があったり、単純にキーレスポンスが遅くなったりもした。
俺は最初下の方法でアプリ作っててアプリが重くなってくると症状が酷くなってきて
上の方法に切り替えたらかなり改善された経験がある。当然エミュ上では問題なかった。
実機で遅くなる。作るアプリしだいだとは思うけど参考までに。
0843839
2006/02/16(木) 11:17:15違いますってwこれを使ってみようとヘルプ見たんですけど
作ったアプリをダウンロード後、初回起動時にネットワークを有効にする事を
忘れないでくださいという怪しい言葉が載っていたので・・・
勝手にどっかにアクセスするってことですよねコレ
やっぱ自分で作ったほうがいいですか?
0844デフォルトの名無しさん
2006/02/16(木) 11:24:53アプリはダウンロードしたサイト以外アクセスできない。
それは、作成したデータをネット経由でダウンロードするから
設定をONにしてくれと言ってるだけ。
本体アプリは変更が無く、
作成したデータをDLして動く形式だと思われる。
ツクールアプリとかがその形式だったりする。
0845839
2006/02/16(木) 11:36:44詳しくありがとうございます。
作る物の中に全部入れておけば(データをダウンロードする必要がないように)
特に問題ないってことですね。
頑張って作ってみたいと思います。
スレ汚しみたいな感じになってしまいすいませんでした。
0846デフォルトの名無しさん
2006/02/16(木) 11:53:000847デフォルトの名無しさん
2006/02/16(木) 12:33:51SH900iで、processEvent()内で何かする作りだとそうなるかもね。
0848836
2006/02/16(木) 12:49:42やっぱり sleep() は精度いまいちなんですね。
最近のゲームアプリは15フレームくらいは普通に出したい感じ。
それだとイロイロ困りますね。
>>842
丁寧なレスありがとう。
じつは最近のSH系で長時間動かしていると不意にフリーズして困ってました。
それが原因だといいな。
早速試してみます。
0849デフォルトの名無しさん
2006/02/16(木) 14:22:39if ( ( tgtTime - System.currentTimeMillis() ) > 0 )
Thread.sleep(1);
のがよくないかなーと。
それとスキップした分メインフレーム複数回すようにすりゃ問題なかろ
0850デフォルトの名無しさん
2006/02/17(金) 01:10:48空文をwhileで回しまくれ。昔の端末にはSleepするとちゃんとCPUを休ませる端末があったが、最近のはまったく影響がない。
0851デフォルトの名無しさん
2006/02/17(金) 04:38:450852デフォルトの名無しさん
2006/02/17(金) 10:19:52ホッカイロにしとけ。
ゆたんぽは若いのはしらないのでは?
0853デフォルトの名無しさん
2006/02/17(金) 10:45:500854デフォルトの名無しさん
2006/02/17(金) 11:48:31個人的には空回りは推奨しないよ。
時間を均一にする事が絶対条件のアプリじゃなきゃだけどね。
processEventやMediaListenerなどいつ割り込みが入るか
判らない物を実装してる場合は極端に性能が落ちる機種がある。
0855デフォルトの名無しさん
2006/02/17(金) 12:23:33>時間を均一にする事が絶対条件のアプリじゃなきゃだけどね。
ここが難しいとこなんだよなー。
アクションゲームで、毎秒33フレームとか50フレームとかで回したい場合、
現状空回しせざるを得ないし、sleepを入れると毎秒10フレームとかに
ならざるを得ない。
とっととタイマ分解能が1msで統一されて欲しいもんだ。
0856デフォルトの名無しさん
2006/02/17(金) 13:44:02while ( tgtTime > System.currentTimeMillis() )
;
できちんと動くなら 1ms でよろしかろう
sleep() すると裏で動いているメール受信とかを まってましたとばかり見に行く
そのせいで最低 100ms くらいはかかるのでは
0857デフォルトの名無しさん
2006/02/17(金) 15:42:520858デフォルトの名無しさん
2006/02/17(金) 15:49:24⊂(#・ω・)
/ ノ∪
し―-J |l| |
人ペシッ!!
白 ←N504
0859デフォルトの名無しさん
2006/02/17(金) 18:49:23ゲーム屋は1ms単位で勝負してるんだから、そのあたり理解していただきたいものだ。
タイマ解像度さえ高ければ、wait()入りのメインループにタイマイベントで定期的にnotify()を送って
タイマ割り込み代わりにする技があるのだが。Javaアプレット時代に使ってたんだけどな。
速度一定だし、「処理落ち」もできるし、CPU明け渡すからバッテリーにも優しいぞ。
0860デフォルトの名無しさん
2006/02/17(金) 20:33:583GHzオーバーのPC(Win)でもSleepの精度はせいぜい10msだから、
携帯環境が改善される見込みは薄いね
0861デフォルトの名無しさん
2006/02/18(土) 00:52:30最近汎用OSに切り替え進んでるから
同じ道はたどるだろうね。
0862デフォルトの名無しさん
2006/02/18(土) 01:25:500863デフォルトの名無しさん
2006/02/18(土) 01:30:150864デフォルトの名無しさん
2006/02/18(土) 01:32:490865デフォルトの名無しさん
2006/02/18(土) 09:10:24プログラム作るの初めてなら無茶。君の次の選択肢は
�@・画像を扱わないプログラムが組めるようになってからもう一度チャレンジ
�A・やりたいことの類似のサンプルをネットで探して、見つかったら真似しながら覚える
0866デフォルトの名無しさん
2006/02/18(土) 09:37:21この辺を買ってみる。
0867デフォルトの名無しさん
2006/02/18(土) 10:29:32>>865,866
ありがとう
本ってやっぱ手元にあったほうがいいんですかね
ネットで調べながらやってるので
諦めないでサンプル探しながら学んでいきます
0868デフォルトの名無しさん
2006/02/18(土) 10:30:450869デフォルトの名無しさん
2006/02/18(土) 12:02:490870デフォルトの名無しさん
2006/02/18(土) 20:27:28ですが、2chブラウザなんかの場合はどういう仕組みなんですか?
0871デフォルトの名無しさん
2006/02/18(土) 21:55:350872デフォルトの名無しさん
2006/02/19(日) 00:12:26こんなコードを書くと、キー待ちせずに終了するのに気が付いた(ProG 1.7 では無問題)
for( isKeyPressed = false; !isKeyPressed; )
;
(※ハンドラでキー押し時に isKeyPressed を立てる)
で、 ↓こうすると直った
for( isKeyPressed = false; !isKeyPressed; Thread.sleep( 100 ) )
;
ひさしぶりにサイト見に言ったら、修正項目がたくさん書かれていて
ソレ読まなかった俺の不注意
まあ みんなも注意しながら使うのが吉でしょう と そういいたかった
ところで java バイトコードの仕様を調べたいんだけど
いいサイト知りませんか
0873デフォルトの名無しさん
2006/02/19(日) 00:49:18つhttp://java.sun.com/docs/books/vmspec/
0875862
2006/02/19(日) 09:37:41これでタイトル画面から移れる
まだまだ先は長い
0876デフォルトの名無しさん
2006/02/19(日) 19:29:29どうもありがとう!
CGIのこと調べていろいろ試してみたらアプリにしなくても携帯のブラウザで
十分になりました。
せっかくクラス作ったのに意味ねーって感じですが、ともあれ感謝です。
0877デフォルトの名無しさん
2006/02/20(月) 03:58:30でaddすることのできるコンポーネントは自作することはできるのでしょうか?
extends Component implements Interactable
すれば、できるのかな?とか考えたのですが、
public void setEnabled(boolean arg0)
public void requestFocus()
で、何を行えばいいかわからず頓挫してしまいました。
Canvasを使えばいいだけなのですが、ただわからないのも悔しいので、
もしよければご教授ください。
0878デフォルトの名無しさん
2006/02/20(月) 07:52:420879877
2006/02/20(月) 12:31:21878さんありがとうございました。
0880デフォルトの名無しさん
2006/02/20(月) 20:30:32try {
MediaImage m;
m = MediaManager.getImage(buff);
m.use();
img.dispose();
img = m.getImage();
} catch (Exception e) {
}
を何回も繰り返すとリソースが足りなくなって「com.nttdocomo.ui.UIException」のエラーが出てしまうのですが対処法はありますか?
0881デフォルトの名無しさん
2006/02/20(月) 20:38:07つ gc()。
それとメモリ管理についていちから勉強しなおせ
0882880
2006/02/20(月) 20:40:29勉強します。
0883デフォルトの名無しさん
2006/02/21(火) 00:16:07マジレス求ム。
http://page6.auctions.yahoo.co.jp/jp/auction/f42760915
0884デフォルトの名無しさん
2006/02/21(火) 00:42:300885デフォルトの名無しさん
2006/02/21(火) 03:31:50直接は無理
0886デフォルトの名無しさん
2006/02/21(火) 12:18:19MediaImage.dispose()
0887デフォルトの名無しさん
2006/02/21(火) 14:43:240888デフォルトの名無しさん
2006/02/21(火) 14:54:020889デフォルトの名無しさん
2006/02/21(火) 15:16:31disposeしなくてもgcで開放される。
0890デフォルトの名無しさん
2006/02/21(火) 15:29:42MediaResourceのリファレンス読んだ方がいいよ
0891デフォルトの名無しさん
2006/02/21(火) 15:34:47JavaじゃなくてJawaとかJavoとか別の名前付けようぜ('A`)
0892デフォルトの名無しさん
2006/02/21(火) 16:20:31ttp://www.nttdocomo.co.jp/p_s/imode/spec/info.html
Doja4.0〜機種依存ないみたいだから240x240で画像作ったほうがいいのかな
■ このスレッドは過去ログ倉庫に格納されています