[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 07/22 13:26 / Filesize : 254 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

iモード携帯電話用Java(iアプリ) Part14



1 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 18:13:16 ]
NTT DoCoMoのiモード携帯電話用Javaに関する話題を扱うスレッドです。

※DoCoMo以外は下記スレへ。
CLDC+MIDP+携帯電話用Javaスレッド part 6
pc11.2ch.net/test/read.cgi/tech/1155174514/

■ iアプリ特有ではなくJava一般に関する質問はこちらへ
【初心者】Java質問・相談スレッド99【大歓迎】
pc11.2ch.net/test/read.cgi/tech/1173026128/

■ iモード携帯電話用Java(iアプリ)まとめサイト
ton.my-sv.net/

■関連スレ
【日本携帯】Mascot Capsule/Micro3D【標準】
pc8.2ch.net/test/read.cgi/tech/1117773530/

過去スレ
Part13 ttp://pc11.2ch.net/test/read.cgi/tech/1164168601/


778 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 15:02:02 ]
出来ないこともないけどデバイス依存なので
基本的にいじるべきでないと思う。


779 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 15:56:00 ]
>>778
ありがとうございます
あきらめます


780 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 16:22:36 ]
あらかじめGraphics.getColorOfRGB(0〜255, 0〜255, 0〜255)して戻り値をとっておいて、一致するものを探せば可能

781 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 17:04:25 ]
それは逆算というより逆引きだな
1677万色分のテーブル持つのも馬鹿らしい

782 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 17:38:15 ]
そもそもgetColorOfRGBの戻り値を使いたい理由って何なんだぜ?

783 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 17:55:37 ]
>>777
setPixelしてgetRGBPixelすればいけるかと

784 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 18:33:40 ]
>>783
無理じゃないですか?

785 名前:783 mailto:sage [2007/07/18(水) 20:02:03 ]
>>784
エミュでやってみたらちゃんと取れたよ。実機だと機種によっては丸め込まれるかもしれないけど、少なくとも、内部表現→RGB→内部表現とすれば同じ値が得られるRGBが得られるはず。

786 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 14:06:29 ]
なんで無理だと思ったんだろうな



787 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 14:59:31 ]
>>786
getColorOfRGBがRGB88に対してほとんどの機種の画面が
RGB565だから>>785の言っているように丸め込まれるということで
無理と判断したんじゃないか?


788 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 20:50:37 ]
         ☆ チン     マチクタビレタ〜
                         マチクタビレタ〜
        ☆ チン  〃  Λ_Λ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・) < OpenGL ESの一般公開まだ〜?
             \_/⊂ ⊂_ )   \_____________
           / ̄ ̄ ̄ ̄ ̄ ̄ /|
        | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
        |  愛媛みかん  |/


789 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 19:18:25 ]
質問なんだけど
scratchpad:///x

xって何番まで使えるの?
それと、ひとつの番号あたりの容量制限とかはないよね?
0番しか使わなくても0〜3番まで使っても例えばDoja3.5では合計400KBまででしょ?
誰か教えてちょ

790 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 22:10:52 ]
開発ガイド詳細編に教えてもらうといいよ

791 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 12:09:45 ]
>>790
サンクス!おかげで詳しく知ることが出来たよ!
更にlengthオプションの存在も知った。これだよ俺が求めてたのは…!
ありがと!

792 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 19:58:56 ]
いや、ここで聞く前に自分で調べろって意味だろ

793 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 21:52:46 ]
技術系の資料はだいたいその手の資料に載ってるからね

794 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 01:52:03 ]
近所の本屋に行ってもiアプリ開発の本は全然無いんだよね
とりあえず中身確認して知りたい情報があるか確認しないといけないから
通販じゃ買えないし遠くまで出かけるのも面倒くさい
まったく近所の本屋ってリサーチしないよな
消費者が求めてる本をリサーチして店に置けっての
だから売り上げが上がらず倒産するんだよ

795 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 08:09:36 ]
いあ、むしろ消費者のニーズが細分化し過ぎてて
売上げが上がらないんだろう。

iアプリ開発本なんてほとんど読まなかったし、
今だともうネットだけで十分じゃね?

796 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 10:02:50 ]
仕事で日本の携帯電話3キャリア向けのアプリを作ってたが
本なんざ一切読まないでやったぞ。
そもそも某社のアプリはアプリ開発系の本が一冊くらいしか出てないで
ネットにも情報が少なくて死ぬかと思った。
ITmediaありがとう。



797 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 12:17:08 ]
未だにDoJa-3.5使ってるからそろそろ最新版に移行しようとおもう
何か注意とか不安定だとかないよね?

798 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 13:00:15 ]
>>792
そんなの当たり前だろw
何を見ればいいか教えてくれてるわけだから礼を言ったまでさ〜
一応自分なりに調べてみたつもりだけど見落としてたみたい

799 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 14:51:25 ]
>>797
Doja4.0以前のエミュレータとDoja4.1以降のエミュレータでは
動作が違う部分がちょくちょくある。

新しいエミュレータにした場合、作成するアプリがDoja4.0等にも
対応する場合、Doja4.0のエミュレータとDoja4.1以降のエミュレータの
両方で動作チェックを行うのを忘れないほうがいい。

なお、俺は現在DoCoMoでプリミティブ描画を行っているのだが
Graphics3D#flushにて、Doja4.0以前のエミュレータではフリーズし
Doja4.1以降のエミュレータでは正常に動作しているという現象を
食らっている。
原因追求したいのだが、他の仕事が入って全然調べられん。
同じ現象になって解決したやついたら、教えてくれ。

そのほかでは、通信の際にuid=NULLGWDOCOMOでuidを取得するあれにて
ミスで、uid=http:// なってしまったときに
通信は当然ミスったが、動作をそのまま続けたエミュレータと
通信時にフリーズするエミュレータがあった。
どっちがどっちエミュレータかは、忘れた。


800 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 15:20:49 ]
壊れたMLDをuseするとException吐かずにエミュが落ちる

801 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 02:25:50 ]
夏休みでアプリ挑戦してみようと思う大学生ですが、
ドコモのツールってJavaの5.0には対応してないんでしょうか?

802 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 08:58:28 ]
対象のバージョン、書いてあっただろ。

803 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 10:03:50 ]
>>799
どうも親切にありがとう

804 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 00:14:15 ]
資料がpdfだけというのはやめてもらえんだろうか。
使いづらくてたまらない。

805 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 00:42:53 ]
DoJaが足を引っ張ってJava5を入れられない・・・・

806 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 03:32:51 ]
>>805
Java 6のjavacでも-sourceと-targetと-bootclasspathを指定すれば、
ちゃんとコンパイルして実機で実行できるよ。



807 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 04:09:32 ]
PDFの資料なんか、最初に全部読んどいて忘れたときに開く程度だし別にいいだろ。
APIマニュアルはHTMLだし。

808 名前:805 mailto:sage [2007/07/26(木) 05:39:39 ]
>>806
コンパイルはコマンドプロンプトからオプションつけてやればいいという事でしょうか?DoJaのビルトだとオプションとかつけれなかったような。

809 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 07:42:35 ]
別にDoJaからコンパイルする必要はない。
クラスパスを指定して普通のJavaソースと同じようにコンパイルするだけ。

810 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 12:40:58 ]
つか、最新の開発ツールだと -source 1.3 付けてくれてるみたいだぞ。久々にいじったのでいつからかわからんが、これでjdk1.4とはおさらばできそうだ。

811 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 22:24:49 ]
新しいコンパイラなら最適化も素晴らしくなっているだろう……と思いきや
最近のjavacはJITの存在を念頭に置いてて、あまり最適化しない、むしろ
JITが扱いやすい型にはまったバイトコード生成をするという話も聞く。

812 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 22:56:29 ]
javacがするのは、定数折りたたみ、意味のない式や制御構造の削除とかの簡単なもの。
JITの性能が上がりすぎて、コンパイル時の最適化が効果が薄くなった。
コンパイル時の最適化を期待するにはjavac以外のツールが必要。

813 名前:805 mailto:sage [2007/07/27(金) 04:42:59 ]
>>809>>810
ありがとうございます。
そういや、最近DoJa5.0はVer3になりましたもんね。
それでできるようになったのかな?
以前は1.5だとエラー出てたけど。

814 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 11:17:31 ]
何か今時の話題のようなので報告。
JDK1.5.0_12+iαppliTool 5.0ver3.00 でコンパイル成功してます。
環境変数等、インストールした時のまんまなので標準環境だと思ふ


815 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 02:35:09 ]
DoJaの開発環境は地味ながら継続的に改良されているよね
もうちょっと宣伝すればいいのに

816 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 23:59:39 ]
DXなしでGPSを使用したアプリって作成不可?
端末の位置情報を取得するくらいならできるのかな



817 名前:名無しさん@そうだ選挙に行こう mailto:sage [2007/07/29(日) 08:31:24 ]
無理

818 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 01:53:36 ]
F904i(マーガレット機種)でjamのDrawAreaの設定について教えてください。
F904iは描画領域が240×432なんですが、
DrawAreaもそれに合わせて240×432にしたところ、
y=392〜411のあたりにソフトキーラベルが浮いて表示されると
ユーザから指摘を受けました。
で、DrawAreaを240×391にしたところ、
今度は「描画領域が相変わらず240×432になっている」と指摘されました。
F904iのDrawAreaの挙動って、何か特殊な対応が必要なんでしょうか?
なんとかソフトキーラベルが画面表示に被らないようにしたんですが。。。


819 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 02:55:07 ]
>>818
DoJa-5.x用の開発ガイド詳細編を読んでみるといいよ。
DrawAreaで検索かけて掛かったところ全部。

DrawAreaは任意の値で領域サイズを変えられるわけじゃない。
サポートしているサイズが端末ごとに決まっている模様。

ソフトキー描画を非表示にするメソッドが使える場合もあるとも書いてある。
全画面表示を指定した場合のソフトキー表示が気に入らなかったら、
ソフトキーを非表示にしてアプリでソフトキーを描画する方法になるだろうね。

820 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 03:12:20 ]
Frame.setSoftLabelVisible(false)

821 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 09:58:28 ]
さらに突っ込むなら
現時点でFrame#setSoftLabelVisible(false)を使用して全画面表示が
可能なのは、端末資料を見る限りだとFシリーズの903i以降と703i以降だ。

なお、F機はフルスクリーンにしないと端末資料に書かれている
最大画面サイズを使用できない。

822 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 21:19:04 ]
勝手直感ゲームまだー?(・∀・ )っ/凵 ⌒☆チンチンチン


823 名前:818 mailto:sage [2007/07/31(火) 02:20:57 ]
>819-821
ありがとうございます。
ずっと、任意の領域に変えられるものだと思ってました。。。

>可能なのは、端末資料を見る限りだとFシリーズの903i以降と703i以降だ。
Fと、Dの903/703もいけそうでした。

>Frame.setSoftLabelVisible(false)
今自分が作っているアプリの場合だと、
クライアントアプリ内で端末名判断してやることになりそうです。
ソースにベタで。
新しく同様の機種が出るたびにリビルド。。。



824 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 03:42:43 ]
703でも903のアプリは動きそうなんですけどダメですか?


825 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 04:21:26 ]
どちらとも言えない。アプリによって答えは違う。
そのアプリが動くかどうかは作った人に聞け。

826 名前:821 mailto:sage [2007/07/31(火) 10:08:25 ]
>>823
>Fと、Dの903/703もいけそうでした。
D端末の端末資料には全画面表示非対応となっているが
いったい端末資料のどこを見て全画面表示が可能だと判断したんだ?

俺が言っているいる全画面表示(フルスクリーン)というのは
Frame#setSoftLabelVisible(false)によってソフトキーの表示を消し
その領域まで使用できることだぞ。

240x320など、240x240以上の領域がDrawAreaで指定可能であるのと
全画面表示が可能であるのは、別の話。
F以外の903以降の端末(PとN903iを除く)の端末はソフトキーを消さずに
240x320以上の領域が使用できるということだ。




827 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 11:08:39 ]
>>822
トラステッドおんりー

828 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 11:34:52 ]
GestureReaderであれば普通に使えるでしょ?
大して面白い機能でも無いから使わんけど。

829 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 17:38:25 ]
>>821さ、誤解を招くようなおかしい文章を自分が書いといて何で噛み付いてんだい。

>Frame#setSoftLabelVisible(false)を使用して全画面表示が可能なのは、
setSoftLabelVisible()はソフトキーの表示/非表示を切り替えるためのメソッドだ。
でもあんたの説明では全画面表示の切り換えに使うメソッドのように読み取れる。

>>823が書いた「Fと、Dの903/703もいけそうでした。」はもちろん
Dの903/703でもsetSoftLabelVisible()はサポートしてるようでした、の意味だ。

830 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 20:41:46 ]
サポートしてなくても、とりあえずThrowableをcatchしとけばいいんでない?

831 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 22:31:39 ]
質問させてください。
アプリから、端末に保存している曲データ(MFiやSMFではなく、圧縮音声データ)
を再生したいと思っています。

単純に思いつくのは、MovieStore.selectEntry()でiモーションデータ取得する方法
ですが、このクラスはNとSHの端末でしかサポートされていないようです。
(今回はFをターゲットにしているので、この方法は使えません)

曲データはサイズがでかいので、アプリ同梱や通信でとってくる方法も出来れば
使いたくありません。
あくまで、あらかじめ端末に保存されている曲データを再生したいと思っています。

他に良い方法はあるでしょうか?


832 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 23:35:49 ]
偽装gifして読み込む

833 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 00:05:33 ]
903以降のFって、偽装GIFのコメントヘッダを勝手にとっちゃうから使えないって聞いたけど…

834 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 21:58:21 ]
偽装jpgという手もあるぞ
F903iXだけどgifdeladでjpg偽装したテキストが
iアプリのテキストリーダーで読めたからいけるはず

www.moeracode.net/software/gifdelad/

835 名前:831 mailto:sage [2007/08/01(水) 23:27:54 ]
>>831-834
情報dクスです。
偽装なんとかについては詳しくないので、一度研究してみます。

836 名前:デフォルトの名無しさん [2007/08/02(木) 11:18:52 ]
DoJaってLinkedList持ってないよな?
リスト構造が必要になった時って皆どうしてるんだ?



837 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 13:03:04 ]
無いなら作れ

838 名前:836 [2007/08/02(木) 15:10:32 ]
Vectorで代用することにしたよ。
使えるらしいし。

839 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 01:18:47 ]
>>838
LinkedListとVectorじゃ、計算量的な特徴は全く違うけどね。

840 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 01:38:22 ]
サスペンドイベントと終了イベント(MIDPで言うところのpauseApp()とdestroyApp())が
取れないことがわかって絶望した。
アプリ終了されたときにセーブか何かするってできんやん……

841 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 03:10:33 ]
サスペンド発生のタイミングは基本的に着信やバッテリー残量不足など
即座にアプリから端末へ制御を渡さなければならない状況。
そのためアプリに余計な処理をさせないようにしてある。

終了イベントをアプリで受け取れるようじゃ端末として問題ありだろう。
電源キーで強制終了しようにも、わざと(またはバグで)無限ループ、
バッテリー抜くまで終了できないアプリが作れちゃう。

で、セーブデータ保存タイミングだけど、アプリ実行中にこまめに保存するしかない。
ゲームなら1ステージクリアごととか、タイトル画面へ戻る度にとか。

842 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 03:23:20 ]
841だが何かズレたこと言ってるな自分
暑さのせいだ、スルーしといてくれ

843 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 04:43:50 ]
もしかしてMIDP準拠のアプリで、destroyAppで無限ループすると操作効かなくなるの?

844 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 09:23:09 ]
Maximum byte code length (32KB) exceeded
というエラーがいきなり出るようになったんですが
なんなんですかこれは?
ネットで調べても見つかりません

845 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 10:37:53 ]
英語の意味のまんま。
直訳してみ?

846 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 10:51:52 ]
バイトコードが32KBを越えた
意味不明



847 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 10:56:00 ]
だからそのままだって。
1メソッド32KBの制約に引っかかったから普通のプログラム組めってこと。


848 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 11:10:41 ]
>>843
実機依存かもしれないが、イベントハンドラから一定時間リターンしなかったら
強制終了、だったような。

849 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 11:54:49 ]
>>844
ネットで何を調べたんだ?

850 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 20:28:57 ]
>>844
っていうかこのスレくらい検索しようぜw
ソースうpしてくれ。
>>379のときは見れなかったんだ。興味あるw

851 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 15:45:48 ]
ボタンを一ドット単位で配置設定なんてことできないよね?

852 名前:379 mailto:sage [2007/08/04(土) 21:12:12 ]
メソッドのサイズを削るために
メソッド内の変数を外に出したらクラスの容量が一気に増えて
今度はクラスの容量が32KBオーバーになっちゃったみたい。
メソッドのサイズ削るよりクラス削るほうが難しそうです・・
ちょうど話題に上がってたみたいなのでもう1回うpしてみました。
zif.hp.infoseek.co.jp/tmp/tori2.zip

853 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 22:06:16 ]
クラスに32Kの容量制限があるなんて初耳だ

854 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 23:08:03 ]
500シリーズとか700シリーズの話じゃね?
30kだっけか。


855 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 23:15:05 ]
おそらく暗黙的に宣言される static {} のサイズが32Kを超えたと思われ。
単純な配列データは別ファイルにしてリソースとして読み込むようにして、
その他のものは幾つかのクラスに分散すべし。

856 名前:379 mailto:sage [2007/08/05(日) 00:32:23 ]
>>855
レスありがとうございます
リソースとして読み込むってのがよく分からないけど
とりあえず変数は別のクラスに分散させてみます



857 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 03:53:49 ]
>>856
855さんが言ってるのは、配列の初期化だと思われ。
byte[] a = { ....};
ってやつね。

858 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 09:28:20 ]
>>854
jarのサイズでなく、プログラム的に1メソッドのサイズ制限だと思われ。
どっかのpdfに書いてあった気がするが忘れたし暑くて探す気がしないから調べといて。

859 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 12:26:58 ]
>>851
できちゃうんだな、これが。

860 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 15:45:13 ]
クラスのメンバ変数は、バイトコード上ではすべて特別なメソッドに置かれる。
そのメソッドが32kBを超えたからコンパイルエラーになった。

855のリソースにして読むというのは、大きな配列はスクラッチパッドやネットワークとかのクラス外に置いて、実行時に動的に読み込めということだろう。

861 名前:379 mailto:sage [2007/08/05(日) 21:17:15 ]
>>860
普通のメソッドは3000行書いても大丈夫だったのに
クラスのメンバ変数はちょっと書いただけで32KB超えたってことは
メンバ変数にすると容量を大量に消費するってことかな

大きな配列は別クラスに移してあるのでリソースにしなくても大丈夫かな

862 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 22:07:33 ]
int[] a = { 10, 20, 30, 40 };
とかっていうのは
a = new int[4];
a[0] = 10;
a[1] = 20;
a[2] = 30;
a[3] = 40;
って書いたのとほぼ同じだから、相当に容量を食う。

863 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 22:11:59 ]
byte[] a = { 10, 20, 30, 40 };
に至っては
a = new byte[4];
a[0] = (byte)((int)10);
a[1] = (byte)((int)20);
a[2] = (byte)((int)30);
a[3] = (byte)((int)40);
と言う感じでintの即値をbyteにキャストするから、さらに食う。

864 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 23:34:03 ]
>>863
byteの配列ってそんな実装なんだ。
知らなかった。勉強になったよ。
まさか想定の4倍食ってるとは……。

865 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 00:49:26 ]
ヒント : javap -c

866 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 01:39:33 ]
どちらにせよ、データは外出ししておいた方が、管理しやすいし入れ替えやすいし良いよ。
理想的には、プログラムをいじらなくても敵キャラやステージを追加できるくらいにすべき。



867 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 12:16:36 ]
iアプリで音楽再生するプログラムを書いています。
サンプルを参考にして、MIDIから変換したMLDファイルの演奏はできました。
変換はフリーソフトを使いました。
次は効果音を鳴らしたいんですが、効果音はMIDIではないですよね。効果音は
どのように作成すればいいのでしょうか。
プログラムの話とは少し違いますが、iアプリで鳴らせる音について調べても
良く分からなかったので質問しました。

いろんなサイトを見ても、MLD形式のファイルがMIDIだと書いてあるのに、
着ボイスの拡張子もMLDだったりでよく分かりません。あと、YAMAHAのサイトで
変換するツールのようなものを見つけたのですが、NEC端末用と書いてあったので
違うのかもしれません。

お願いします。


868 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 13:17:38 ]
>>867
waveからmldに変換するツール探すといいよ。
多分殆どはシェアウェアで、
フリーのは2秒制限とかの制約がつくものが多いと思う。

mldは機種ごとにフォーマットが異なるので、
対応させる機種分mldファイルを用意しないとならない。
Nだけ対応すれば良いのなら、YAMAHAのでもいいかもね。


869 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 13:22:11 ]
>>859
どーやって?


870 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 14:23:35 ]
>>860
ちと試してみたけど、以下のケースでNGだった。
32KB制限云々に限って言えば、
メンバ変数の初期化はコンストラクタ内で実行されるのと同意なんでない?

class app{
 static byte buf[] = {0,1,2,3,4,・・・}; // ←バイトコードで16KB以上、32KB未満になる配列
 app() {
  byte buf2[] = {0,1,2,3,4,・・・}; // ←バイトコードで16KB以上、32KB未満になる配列
 }
};

>>861
前にも指摘されてるけどさ、
そもそも「3000行の普通のメソッド」なんて有り得ないから。
cだけどこの辺読んでみるといいかも。
ttp://www.pro.or.jp/~fuji/mybooks/cdiag/

まー、その場しのぎで良いならクラス2つに分けて、
変数部分だけごっそり移動すれば解決するんじゃないかね。
0から作り直したほうが早いと思うけど。


871 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 14:31:31 ]
一昔前のiアプリじゃいかにメソッドを作らないかを
試行錯誤したもんだが、随分とヌルくなっちまったな。


いいことだ(・∀・)

872 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 14:34:00 ]
インスタンス変数はコンストラクタで、static変数はstaticイニシャライザで初期化される

873 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 15:04:36 ]
インスタンス変数とコンストラクタが<init>で、スタティック変数とstatic{}内が<clinit>というメソッド名になる。
>>867
MLDは、MIDIのような情報、Wave(ADPCM)のような情報どちらも扱える。
>>863
配列の初期化のときの代入は、iastoreとbastoreの違いだけで、
バイトコード上でのキャストはなかったはず。

874 名前:379 mailto:sage [2007/08/06(月) 16:45:56 ]
>>870
メソッド少なくしたのはどっかのサイトにメソッドは少ないほうが
容量少ないって書いてあったからです。
次作るときはオブジェクトに分けるのを試してみたいです。

配列がバイトコードになったときのサイズどうやって調べたんですか?

875 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 18:41:46 ]
キーリビートってどう実装したらいいんですか?

876 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 18:59:38 ]
>>869
レイアウト管理オブジェクトを無効にして、
自分でコンポーネントの座標を設定する。



877 名前:867 mailto:sage [2007/08/06(月) 19:15:42 ]
>>868
ありがとうございます。
wav2mldというソフトを見つけて体験版を試してみたのですが、長さは
2秒もない音声ですがエミュレータ上では再生できませんでした。
そんなに高くなかったので製品版を購入してもう一度試してみようと思います。
他にも変換ソフトがあるようでしたら教えてもらえると嬉しいです。フリーじゃ
なくてもいいです。自分の端末はSOなのでYAMAHAのものではダメのようです。

>>873
ありがとうございます。
WAV形式のMLD形式(?)があって、どちらも拡張子がMLDということでよいでしょうか。
wav2mldというソフトの製品版を使ってみようと思います。

878 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 21:05:30 ]
>>875
毎フレームgetKeypadState()して、過去数フレームと見比べる。


ところで、Java->C, J2ME->BREW自動変換をうたうツールやベンチャーをたまに見かけるが、
GCをどう解決してるかについて何も言ってないのは詐欺認定でいいよな?

879 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 22:31:40 ]
>>875
俺はボタンが押されたら別スレッドでループを回して
離れたらスレッドを切るようにしてる

880 名前:831 mailto:sage [2007/08/06(月) 23:19:16 ]
>>831で質問した者です。
偽装JPEGファイル経由で音声iモーション(AACファイル)再生できたので、
やり方など残しておきます。

・ImageStore.selectEntry()でImageStore取得
・ImageStore.getInputStream()でInputStream取得
・InputStream.read()で不要なデータ読み捨て
・MediaManager.getImage(java.io.InputStream in)でMediaImage取得
・MediaManager.use()
・AudioPresenter.getAudioTrackPresenter()でAudioTrackPresenter取得
・AudioTrackPresenter.setSound(MediaImage sound)でiモーションセット
・AudioTrackPresenter.play()で再生

再度、>>831-834に感謝。

881 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 08:06:06 ]
>>880
おーすごい、レポ乙でつ(`・ω・´)ゝ

882 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 11:05:55 ]
>>880
俺偽装ファイル扱うの知らないんだが、最後から2番目の
MediaImage sound
てどこから出てくるん? MediaManager.getSoundの間違い?

883 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 11:36:22 ]
AudioTrackPresenterのリファレンス参照しる
> 動画のオーディオトラックは MediaImage オブジェクトであるため、
> setSound(MediaImage) メソッドにて設定する必要があることに
> 注意して下さい。

884 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 12:30:48 ]
>>877
>>376でも言った気がするが、PsmPlayerがあるだろ。無料で使えてwav変換も出来るぞ。

885 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 15:26:18 ]
PsmはN用に変換してもN903iで再生できなかった

886 名前:821 mailto:sage [2007/08/07(火) 15:49:06 ]
NはYAMAHAのサウンドを使っているから他と同じにしてはだめ。

今まで各端末メーカごとのサウンド作成する必要がったが
903から統一されて一つのサウンドでよくなった。
しかし、Nだけ903用のサウンドを使用しても鳴らず
N902i用のサウンドを使う羽目になった。



887 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 17:08:35 ]
IアプリからSOAP経由でWEBサービスを利用する事ってできるんでしょうか?
BREWアプリなら可能なんですが…。

888 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 17:25:00 ]
>>887




889 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 18:46:59 ]



890 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 18:54:40 ]
>>886
ごめん、それもっと詳しく教えてくほしい

891 名前:886 mailto:sage [2007/08/07(火) 20:07:50 ]
すまん、前提が違っていた。
俺がmld変換に使っているツールはpsmではなく
DoCoMoの公式CPに配信されるツールとプラグインなのよ。

ところで、俺はpsmについてはあまり詳しく知らないんだけど
これって505の世代までしか対応していないんじゃないかな?
そうだとすると、903とは世代が相当違うから
鳴る保障はほとんどないのでは?

892 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 20:42:49 ]
MFiToolsか…

893 名前:831 mailto:sage [2007/08/07(火) 22:39:16 ]
>>882
AudioTrackPresenter.setSound(MediaImage sound)の括弧の中は、
単なる引数を書いてるだけなので、AudioTrackPresenter.setSoundに
MediaImageオブジェクトを渡すってことです。
("sound"は単なる引数名)

894 名前:デフォルトの名無しさん [2007/08/08(水) 23:08:34 ]
Javaを勉強するぞおおぉ!

895 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 22:34:11 ]
やっぱりあんまりメモリ気にしなくて良いのは楽だなぁ。
自分で弄れた方が良い場面もあったが、最近は殆ど関係無いから
やっぱJavaって良いわ。

896 名前:デフォルトの名無しさん [2007/08/10(金) 13:39:35 ]
>886

>今まで各端末メーカごとのサウンド作成する必要がったが
>903から統一されて一つのサウンドでよくなった。

これのソースが知りたい…
(ソースと言ってもプログラムじゃなくて情報源のほう)



897 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 00:11:05 ]
たぶんサウンドというのはMIDI音源のことじゃなくて
PCM音源のことを言っているんだと思う
PCM音源だと機種によっては実装していない


898 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 01:03:29 ]
MFiTools(?)の吐くmldが1種類になったってことだろ

899 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 02:08:43 ]
音源がなければMLDに変換してもWAVE再生は不可能ということじゃないの?


900 名前:886 [2007/08/11(土) 02:58:10 ]
898の言っているのが正解。一種類で済むようになったって話。
ただしNは例外。
イロイロ調べてみたけど、一般の資料では、この辺の事書いてあるやつないんだな。
ってなわけで、この件について俺はもう語らん。

901 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 03:08:37 ]
>>896
903が発売されたころ公式CPにはサウンドの互換性一覧
みたいなのが公開されて滝がする。俺は部署違うので、中身
見てないし、知ってても言えないんだけどそれじゃないのかなあ。
# 知ってはいないが経験的にはN以外全部一緒で鳴る

そうでなくとも、SH/D/FについてはFUETREKのPCM音源を
積んだSH-Mobile G1だと報道発表されているので当然全く
同一の仕様で確定。NがMA-7なのは変わらず。Pだけは音源が
不明だけど、実際に鳴るってことは少なくともROHMからFUETREKの
音源に乗り換えたんじゃないのかな。と思ってる。

902 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 11:23:13 ]
ドコモとFueTrekは去年くらいに近業務提携したはずだから、それの影響?
wav2mldのサイトを見ると、903シリーズ以降は、[P F D SA]、[SH SO]、Nの3種類みたいだね。
1種類になったってことは、N以外は全部同じになるのか。
そのうちフォーマット公開されないかな

903 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 04:28:38 ]
サーバーサイドにあるPHPにアクセスして、
ネットワークごしに画像をダウンロードする方法で戸惑っています。

// PHP側
<?php
 $img = imagecraetefromgif("img.gif");
 header("Content-Type: image/gif");
 imagegif($img);
?>

// Java側
void downloadImage(String url) {

904 名前:903 mailto:sage [2007/08/12(日) 04:42:27 ]
サーバーサイドにあるPHPにアクセスして、
ネットワークごしに画像をダウンロードする方法で戸惑っています。

// PHP側
<?php
 $img = imagecraetefromgif("test.gif");
 header("Content-Type: image/gif");
 imagegif($img);
?>

// Java側
void downloadImage(String url) {
 try {
  HttpConnection hc
   = (HttpConnection)Connector.open(path, Connector.READ, true);
  hc.setRequestMethod(HttpConnection.GET);

  hc.connect();
  InputStream in = hc.openInputStream();

  byte[] data = new byte[(int)hc.getLength()];
  in.read(data);
  
  ...
}

このような関数で、引数urlでphpのスクリプトにアクセスして画像をダウンロードしたいと思っているのですが、
これだとhc.getLength()が-1で、明らかに正常にアクセスできていません。
ちなみに、urlでgif画像の直リンクを張った場合は正常に動作します。
PHPの出力方法に問題がありそうな気がするので若干スレ違い気味ですが、原因がわかる方がいましたらお願いします。

905 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 07:00:26 ]
> 原因がわかる方がいましたらお願いします。
ヘッダーにコンテントレングスをセットしていないから。


906 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 07:13:22 ]
Content-Lengthの出力はサーバ側の設定によるもの。
アパッチのコンフィグで設定するなり何なり。

一方、iアプリ側はgetLength()が-1になることも考慮した組み方をしておく。
Content-Lengthを設定しておらず、自分でもいじれないサーバではアプリ側で対処するしかない。
if ((int)hc.getLength() == -1){〜} else{〜} てな記述。
具体的な記述内容はググればいくらでも例が見付かる。



907 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 10:43:49 ]
>>904
>これだとhc.getLength()が-1で、明らかに正常にアクセスできていません。

getLength() が -1 でも正常にアクセスできててデータの中身はちゃんと読める。

908 名前:904 mailto:sage [2007/08/12(日) 12:06:52 ]
>>905
PHP側でContent-Typeを出力する前に
 header("Content-Length : " . filesize("test.gif"));
を追加してみたのですが、connect()の段階で止まってしまうのです。

>>906-907
-1でも正常にアクセスできているのは、初耳でした。
確かにレスポンスコードは200だったのですが・・・、ありがとうございます。
以下のコードで、正常に動作することを確認しました。

// Java側 hc.openInputStream()以下
 ...
 byte[] data;
 if ((int)hc.getLength() != -1) {
  data = new byte[(int)hc.getLength()];
  in.read(data);
 }
 else {
  ByteArrayOutputStream bs = new ByteArrayOutputStream();
  while (true) {
   int temp = in.read();
   if (temp == -1) {
    break;
   }
   bs.write(temp);
  }
  data = bs.toByteArray();
 }
 ...

909 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 12:17:17 ]
公式資料に書いてあるっての

910 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 14:17:20 ]
>908
そして第2のはまりポイント
in.read(data); は一度で全部読み込めるとは限らないから
-1が返るまでループ処理してバッファに追記していくこと

911 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 14:17:53 ]
ってゴメン
それはちゃんと書いてあるね

912 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 14:25:07 ]
いや、getLength() != -1 のほうの

  data = new byte[(int)hc.getLength()];
  in.read(data);

これは良くない
↓のようにするか

data = new byte[(int)hc.getLength()];
int i = 0, n;
while ((n = in.read(data, i, data.length - i)) >= 0) {
i += n;
}

面倒かったら↓で

data = new byte[(int)hc.getLength()];
new DataInputStream(in).readFully(data);

913 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 14:52:40 ]
>>908
>connect()の段階で止まってしまうのです。
こりゃ実際に出力しているデータサイズが違うんじゃないの?

たとえば
ContentLength: 100を設定しておいて、データは90バイトしか送ってないとしたら
携帯側は残り10バイトが届くまで受信待ちの状態になってるだろうさ

914 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 17:59:27 ]
だな。鯖側の処理おかしいもん。
こんなんでどうよ?

<?php
$fname = "test.gif";
$fdata = file_get_contents($name);
$fsize = strlen($fdata);

header("Content-Length: ". $fsize );
echo $fdata;
?>

915 名前:914 mailto:sage [2007/08/12(日) 18:04:08 ]
あー、ちなみに何がおかしかったかというとimagecraetefromgif()でイメージリソース
として取得したデータを、PHPで出力時にGIFに再変換しているから元のデータと微妙に
変わっているということ(画像としては同じになるけどヘッダとか違う)。
で、出力サイズは元ファイルのを出しているから、正しいサイズになってない。
そもそもgd呼ぶような面倒なことはしないで、そのままバイナリ吐いてやればよかった。

916 名前:914 mailto:sage [2007/08/12(日) 18:05:49 ]
ごめ。2行目の引数は「$fname」な。
 - $fdata = file_get_contents($name);
 + $fdata = file_get_contents($fname);




917 名前:904 mailto:sage [2007/08/12(日) 21:18:41 ]
>>912
ネット上で調べた文献の多くがこの方法だったので・・・、迂闊でした。
一回のread()で読み切れない場合があるってことですかね?
今ひとつ理解できていませんが、直しておきます。

>>913-916
この方法を使ったら、普通にgetLength()で取得できるようになりました。
file_get_contents()でリソースを取得すれば良かったのですね。

ありがとうございます、おかげ様で理想通りに動作するようになりました。


918 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 21:24:49 ]
>>917
InputStream#read は 「1バイト以上読む」 っていう仕様なので。
1バイトでも読めたらそれで返ってくることが許されてる。

919 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 23:44:44 ]
女の子にもてもてになるiアプリの作り方を教えてください。

920 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 23:51:52 ]
エロゲーでも参考にして作ればいいと思うよ

921 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 02:30:50 ]
>>919
女の子にモテモテになってからiアプリを作ればおk

922 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 04:41:14 ]
俺の女性の知り合いはみんなau_| ̄|○ il||li

923 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 05:46:13 ]
じゃあ、オープンアプリを作ればいいじゃない

924 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 06:01:14 ]
オープンだとウイルス入ってそうで怖い

925 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 01:03:27 ]
スクリプトのパースメソッドだけで500行行きそうです

926 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 18:09:32 ]
質問させて下さい!
ショートタイマーを使ったリアルタイム処理のゲームを作っています。
複数の端末で実機テストを行った所、一切エラーは発生しなかったのでユーザに配布したのですが
同じ機種でもエラーが発生する場合と発生しない場合があり、しかも特定の箇所ではなく毎回違う
場所でエラーが発生するそうなんです。
携帯側に処理を渡してないからかなと思い、至る所にスリープ処理を入れたのですが、それでも
エラーが発生するそうなのです。

そこで一つ質問なのですが、現在のソースを見るとショートタイマーの発生時間は20に設定しています。
ループ内のスリープ時間の合計を見ると上記の20を超えておりました。
例えばショートタイマーイベントでの処理が終わっていないうちに次のショートタイマーのイベント発生時間に
なった場合、強制的に2つの処理が同時に行われてしまうのでしょうか?
それが原因でエラーが発生しているのかな?と思いましたので。
自分の端末でエラーが出るなら確認しやすいのですが、なにせ自分の端末ではエラーが発生しないので…。

長文で申し訳ありませんがよろしくお願い致します。



927 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 18:41:13 ]
ループ内のスリープ時間ってなによ
何かループしてんの?

928 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 19:39:41 ]
while(true)で回して中でsleepじゃなくて
timerでタイマーイベント取得して、更にその中でsleep?

929 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 21:26:36 ]
個人の携帯の使い方に問題があってエラーが出る事も多いから、
いちがいにプログラムが悪いとも言えない。


930 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 22:34:28 ]
タイマー分解能やタイマー精度、CPU負荷の問題で、きっちり20msecずつwaitすることはまずない。
タイマーイベントは同時に起こらないはず。心配ならsynchronizedすればいい。ただしイベントがたまりすぎると変になる機種もある。

931 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 22:39:37 ]
とりあえず何のExceptionが出てるんだ?
それはそうと、リアルタイムのゲームを作るならタイマイベントで
処理するよりも、while()ぶん回したほうがいいと思うけど。

932 名前:926 mailto:sage [2007/08/16(木) 03:55:22 ]
説明が分かりにくかったようで申し訳ありません…

えっと、while(true)でぶん回す事も考えたのですが参考にしたサイトでは
ショートタイマーでイベントを取得するように書かれていたので、そのようにして
おります。20msecおきにタイマーイベントを取得して処理を行っているのです
が(その事自体をループと書いてしまいました)そのタイマーイベントの中で
Thread.sleep()を含んでいます。この合計が20msecを超えてしまっている
という事です。というか書きながら思ったのですが、タイマーイベントを使用して
いるのにThread.sleepを入れる必要性はないですね…。while(true)で無限
ループを作っている訳ではないのに…(汗)
ただ、どちらにしてもそのタイマーイベントの中で時々forループで約5秒程の描画
処理が入る場合があるんです。なのでタイマーイベントの処理が20msec以内に
終わらない事が多々ある事は変わりません。
とりあえず質問したかった事はタイマーイベント処理が終わっていない時に次の
タイマーイベント発生時間が来た場合、後ろをすぐ追いかけてくるような感じで
同時に処理が行われるのか?という事だったんですが930さんのご回答で
解決したように思います。


933 名前:926 mailto:sage [2007/08/16(木) 04:02:25 ]
連投&回答&再質問させて下さい…
>>931
それがエミュレータでも自分の持っている実機でも一切エラーは発生しないんです。
なのでどこでどうエラーになっているのか皆目検討もつかないという感じです。。
ただ、友達の端末で試した所、エラーにはならないものの、画面のチラつきが激し
かったんです。描画時には必ずlock〜unlockをかけているにも関わらずです。
なので、もしかしたら処理が同時に行われてて描画→描画が変なタイミングに
なっているのかなぁなどと思った次第です。もちろんエミュレータや自分の持ってる
実機では一切画面のチラつきなどはありません。
とりあえずタイマーイベント処理の中から意味不明なThread.sleepを外して、イベント
発生時間を1000msecとか極端に伸ばしてみながら確認してみようと思います。
皆さん、色々ありがとうございました。

934 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 13:37:23 ]
だからエラーってなにさ。


935 名前:926 mailto:sage [2007/08/16(木) 16:01:17 ]
>>934
だからわかんねぇつってんだろハゲ!
もっと文章読めや
ソース公開してもいいかと思ったが
ひとつ上のレスすら読めねえんじゃ無駄だわ

936 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 16:24:57 ]
今日も暑いねぇ。



937 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 16:35:30 ]
>>935
読み難い長文書いておいて、「もっと文章読め」ってのは、質問する
立場としてどうよ。
>>934は、お前さんの書き込みじゃ情報不足だってことを指摘してるだけでしょ。

大体お前さんは、ユーザーのところで起きている「エラー」というのがどういう
現象なのか、それを把握しているのかどうかを書いていないと思うが。

938 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 16:39:27 ]
別人じゃろうて。。。

939 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 17:30:31 ]
しかし説明するか泣きを入れるかどっちかにして欲しいのは確か

940 名前:926 mailto:sage [2007/08/16(木) 19:01:37 ]
すみません、935は私ではありません…。
読みづらい文章を書いて偽者が発生する原因を作ってしまった事をお詫び致します。。

ちなみに、ユーザからの問い合わせでは突然「アプリエラー」と表示されて終了する場合が
あるという情報だけです。それも特定の箇所とかじゃなく完全に不特定だそうで…。
自分の実機やエミュでは一度もエラーが発生した事はありません。ちなみに数名から上記
のエラー報告を頂いたのですが機種もバラバラなんです。同じ機種でもエラーが発生する
人としない人がいるという、何とも対応しがたい現象なんです。しかも全ユーザから見る
とエラーが発生する人はほんの数名だけ…(報告してないだけかもしれませんが)

ただ今日ネットで調べまくって「もしかしたら」というものを見つけたので書いてみます。
@画面のチラつきが関連しているかもしれない
→全てPaintにぶち込んでrepaint()ではなくpaint(getGraphics());に変えてみます。
Atimer処理を一時停止した後のタイマーstart()が二重になっていないか?
→全てのタイマーstart()の前に念のためタイマーstop()を入れてみます

というか毎回情報不足&ダラダラと長文で分かりづらくて申し訳ありません。
偽者も出てきたので皆に迷惑をかけるといけないので暫く自力で頑張ってみます。

本当にありがとうございました!

941 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 19:20:01 ]
まあたぶん携帯のメモリー不足でエラーが出やすいんだと思うけど


942 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 20:11:11 ]
アプリで例外をcatchしない場合もαエラーなんじゃないっけ?

943 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 21:16:50 ]
すみません。質問させてください。

当方、iアプリでパチスロの収支管理ソフトを作ろうと思っています。
ですが、java自体初めてなものでScratchPadの保存ができても、一覧がうまくつくれません・・・
本を買ったのですが・・一覧だけはのってなくて・・
他の部分もこれでいいんだろうか・・という書き方になってしまっています。

一度、一覧を使った全体のサンプルソースを参考にさせて頂きたいです。
かなり、探したんですが見つかりません。

ご存知の方、教えて頂いたら幸いです。
家計簿でもなんでも、一覧を表示しているものであれば・・

未熟な質問で申し訳ない。宜しくお願いします。


944 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 21:26:02 ]
酔ってます(@ω@)


一覧って意味がわからんのですお。
プログラムとしてはデータを読んで、表示するだけですお。

ついでに言うなら、パチは辞めた方がいいんじゃねーか?
2ch的にも人間としても(・∀・)

945 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 23:55:18 ]
>943はiアプリのわからないところを質問するって段階以前の話だな
「初めてのプログラミング」とかそういう書籍を読むところから始めてくれ

946 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 03:06:25 ]
はじめまして、Javaを勉強しはじめて五日目になります。
wikiを見てもまだ理解が出来る次元ではないので少しお邪魔します。
理由は、ゲームを作りたいからという動機なのでお仕事でやってる方には申し訳ないと思いますが
初心者歓迎の文字を見て入らせていただきました。
(ソフトはiαppliTool DoJa-3.5を使っております)
現在iアプリを作成中で、音楽を鳴らしているのですが音量を再生する場合に
SoundPlayer.playTrackSound( 0, 0, 100 ); //トラック,リピート,音量(100max)
と、置いているのですが、音量を変える時にソフトキーから切り替えで
Int volを作りvolに数字を代入して
SoundPlayer.playTrackSound( 0, 0, 100 - vol);
としたところ、音楽が最初から再生されてしまいました。
これを現在流していたところまでの音楽から音量を途中で切り替わるようにしたいのですが
どうしたら良いでしょうか、説明不足でしたら申し訳ございません。
どうか宜しくお願いします。





947 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 10:57:07 ]
SoundPlayerって自分で作ったクラス?

948 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 11:38:53 ]
>>947
そうですね、サウンドの管理は別のクラスでしています

949 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 11:49:12 ]
>>943
収支管理かぁ昔つくったなぁ・・・練習作品としては悪くないけどな。
他の人も言ってるが「一覧」ってのが一体何を指すのか判らんからアドバイスはできないぞ。
画面に並べて表示する仕方がわからない!って意味なら表現方法なんて無限なんだから誰にもわからん。
ソース晒した方がよっぽどアドバイスもらえるかと。
ついでにいえばスロはもう終わりだから辞めとけw依存症になるまえに!

>>946
まず誰もSoundPlayer.playTrackSound()ってのが何なのか判らないとおもうが。
自作メソッドなら中身見ないことにはどうにもならんが・・・どこかから拾ったものか?
頭から再生されるのはそのメソッドが内部でplayメソッドを使っているからだと思うが。

音量の設定はAudioPresenterクラスの
setAttributeメソッドで音量を指定してセットする。

950 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 12:26:16 ]
>>949
ありがとうございます。
setAttributeだけをいじったら音量だけ変わりました。
別のファイルで作っていたので見落としていたみたいです。
私の為にお時間いただいてありがとうございました。

951 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 19:17:35 ]
>>944
よってらっしゃる・・
ありがとございます。
すみません。一覧っていうのは縦のグリッド表示の意味だったんですが、
iアプリじゃ無理のようですね。
わかりにくくてすみません。
パチスロは確かに2ch的には完全になかったかもです・・
でも、他に作れそうなものが、思いつかなくて・・;;

>>949
ありがとうございます。
ソースはとてもじゃないですが、晒せるほどのものじゃ・・
実際DOJAで動かしてみたら、

ラベル1 □□□□  ←テキストボックス
ラベル2 □□□□
ラベル3 □□□□


となるはずが

ラベル1 □□□□ラベル2 □□□□ラベル3
 □□□□

みたいな画面になって散々でした;;
HTMLLayout を使ってるんですが、何故か改行されませんね・・
DOJAじゃ反映されないのかな・・
この業界も長いので、ついサンプルに頼りがちで申し訳ない
勉強になるとおもってもう少しがんばってみます。
パチスロは実は5号機になってからほとんどいってません


952 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 00:21:54 ]
サウンドの話を蒸し返して申し訳ないですが…
結局waveから変換したmldを再生させるゲームを作るには
@各端末用のmldデータをネット上に置く
Aアプリ内で端末情報を取得して、それに応じたmldをダウンロードして再生する
っていう感じになるのかな?
そもそも端末情報(機種)って取得出来るの?

953 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 00:29:43 ]
できるよ。

954 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 19:50:01 ]
System.get…なんだっけ?
開発資料PDFの後ろの方にまとめてある

955 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 21:43:16 ]
System.getProperty("microedition.platform")

ただしdoja2.0以降だったと思った
まぁADPCMなMLDな時点でdoja3.0以降ぐらいになるとは思うけど

956 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 23:33:32 ]
アプリゲットのダウンロード数ってどうやって調べてるんですか?



957 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 23:43:20 ]
>>952
あらかじめjam/jarごと機種別データを用意しておいて
ダウンロード時にUserAgent見て判別したほうがいいよ
場合によっては、アプリ本体も機種別処理を書かないと
いけない場合があるから。NとかFとかDとかな…orz


958 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 02:40:14 ]
リソースを変えるだけなら、アプリ側だけで済ます方が簡単だろ

959 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 22:03:12 ]
ちょっと皆に質問!
ボタンの連打対策ってどうしてます?

例えば無限ループで回してるシューティングゲーム等の場合なんだけど
一時的なアニメーション処理をforループで表示させてるんですよ。
その場合、forループでの処理中にボタンが押された場合、ループを抜けた直後に
ボタンのイベントが開始されてしまいますよね?
ループ前とループ後にフラグを立てて、ボタンイベントの入り口でフラグ判別を
してみたんだけど、ループ中のフラグじゃなくループ後に拾うはずのフラグの方に
分岐してしまう。。
これはforループ中は「ボタンが押された」っていう情報を待機させておいて、実際に
ボタンのイベントに飛ぶのはループを抜けた直後からって事だからだと思うんだけど。

要するにforループでの処理中はボタン押下の処理を行わせたくないって事なんだけど
皆はどういう感じで組んでるのか教えて下さい。。

960 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 00:51:29 ]
getKeypadState

961 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 02:02:52 ]
ループの中にスリープを入れてますかぁ?




962 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 06:27:36 ]
>>960
早速getKeypadStateについて調べてみます!
ありがとうございます。

>>961
それが入れてるけど駄目なのですよ(T-T)
ループ中にガンガン連打してみると、ループ明けに3回分くらいのボタン押下処理が行われた形になってしまう…

963 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 12:19:21 ]
イベント処理の中でループしてんじゃないでしょうね?

964 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 17:40:19 ]
質問させてください。

「Illegal protocol」と出てしまいサーバに接続できません。
どのように対処したらよいのか全くわかりません。
どこかにプロトコルを設定する箇所があるのでしょうか。
ご存知のかたおりましたら、アドバイスをお願いします。

以下、設定内容
・UseNetWorkのhttpチェック済
・PackageURLにサーバからのパスを設定済
・トラステッド動作設定で通信許可URLに「*」設定済
・通信部分ソース
HttpConnection conn = null;
conn = (HttpConnection)Connector.open(サーバURL, Connector.READ, true);
conn.setRequestMethod(HttpConnection.GET);
conn.connect();


965 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 18:26:03 ]
URLが「http://」とか「https://」で始まっていないとか

966 名前:964 mailto:sage [2007/08/20(月) 18:35:02 ]
早速のご回答ありがとうございます。

>始まっていないとか
packageURLを""で括っていたので、もしやと思い外したらうまくいきました。
非常に助かりました。ありがとうございました。



967 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 21:17:00 ]
>>963
えっと、こんな感じです。

void paint{
  メイン描画処理
}
processEvent{
  ショートタイマー{
    repaint();
  }
  決定キー{
  分岐にて各種処理
  ※ここで場合によってfadeout()へ飛ばしています
  }
}
void fadeout(){
  forループで描画処理
}

かなり簡略化して書いてみました。
自分は元々Cから入ったのでついつい関数と呼んでしまうんですが
fedeout()関数の入り口と出口にフラグを立てて決定キーイベント中で判別しても
ループ中に溜まってたボタン連打分がループ抜けしてから一気に押し寄せる感じです。
もちろんループ中にスリープは入れているのですが…


968 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 21:51:34 ]
スリープ入れるとか関係ないし
あるイベントを処理してるあいだ次のイベントが飛んでこないのはあたりまえ
イベント処理の中でループしないというのが正しい方法

969 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 05:58:47 ]
SDカードへの保存について質問です。

MediaManager.getImage("www.〜〜"); で取得したMediaImageをSDカードに保存したいのですが、
StorageDevice sd = StorageDevice.getInstance("/ext0");
Folder folder = sd.getFolder((AccessToken)DoJaStorageService.getAccessToken(0, DoJaStorageService.SHARE_APPLICATION));
File file = folder.createFile("test.jpg");
FileEntity fe = file.open(File.MODE_WRITE_ONLY);
OutputStream os = fe.openOutputStream();
とし、OutputStreamを取得できるのは分かったのですが、ここへMediaImageを書き込む方法が分かりません。

writeメソッドでは、byte配列を書き込むようなのですがMediaImageをbyte配列へ変換する方法があるのでしょうか?

970 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 11:20:23 ]
>>968
まぁまぁ、知らないものはしょーがない。

>>967
processEventは大半が単一スレッドで実装されているものなので、
スリープすると他のイベント処理も一緒に停止する。
Win32の実装も同じだったと思うけど、そういうもの。
なので、根本的に作り変えないとダメ。

メインループ作るなら、IApplication#start() が別スレッドなので、
ここで無限ループ作る方法が楽だよ。
タイマーなんて不安定なもの使うより確実。

>>969
httpでダウンロードできるファイルなら、
素直にhttpConnectionでダウンロードすりゃいいんでない?
MediaImageから変換する方法が無いでも無いけど。


971 名前:970 mailto:sage [2007/08/21(火) 15:24:54 ]
970踏んだのでテンプレ更新してるんだが・・・
>>1のまとめサイトが全く更新されてないので消しても良いだろうか。
wikiさえも役に立ってねぇ


972 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 15:38:27 ]
とりあえず残しておいた(´・ω・`)
次スレ

iモード携帯電話用Java(iアプリ) Part15
ttp://pc11.2ch.net/test/read.cgi/tech/1187677946/


973 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 23:32:06 ]
>>969
970さんが言っているように、HttpConnectionでjpgファイルをダウンロードするのが吉。
もし、どうしてもMediaImageからbyte配列にしたいんだったら、
MediaImageからgetImageでImage取り出して、それをImageEncoderにぶちこむ。
結果として得られるEncodedImageからはInputStreamが取れる。

974 名前:967 mailto:sage [2007/08/22(水) 00:48:14 ]
>>968 >>970
ありがとうございました!
根本的な作り方がよろしくないようですね。。
とは言え、なんとか自己解決しました!
解決方法はこの間のソースを例にとると…

void paint{
  メイン描画処理
}
processEvent{
  getKeypadState();で決定キー押下の場合{
    keywaitフラグが0ならばkeywaitフラグに"1"を立て、メイン処理を実行    ←追加
      分岐にて各種処理
      ※ここでfadeout()へ飛んだりする    ←移動してきた
    }
  }
  ショートタイマー{
    repaint();
    keywaitフラグが"2"の場合に"0"に戻す  ←追加
  }
  決定キーRELEASE
  keywaitフラグに"2"を立てる    ←追加
}
void fadeout(){
  forループで描画処理
}

このような感じで問題ありませんでした。多分、相当な回り道だと思いますが(笑)
これなら、ループ中にいくら連打しても"一度タイマーイベントを通らないと"次の決定キー
が有効にならないためうまくいきました。

975 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 02:57:29 ]
>>970 >>973
ご教授ありがとうございます。
MediaImageで取るほうが楽に見えて、HttpConnection使おうとすらしていませんでしたorz
何でもやってみないとダメですね。
お手数おかけしました。

HttpConnectionで取得しようとした際に、
setRequestMethodでHttpConnection.GETを指定し、
setRequestPropertyでContent-Typeにimage/jpegを指定してconnectすると、
Illegal headerと言われてしまいうまく取得出来なかったのですが、
setRequestPropertyを消すとちゃんと取得できました。

>>973
MediaImageで取得した際の方法も教えて頂いてありがとうございます。

976 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 10:44:27 ]
umeるか



977 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 11:25:33 ]
うめ

978 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 11:35:38 ]
うめ

979 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 11:40:02 ]
public class ume extends Canvas{

980 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 11:57:04 ]
ただうめるのもつまらんな。
なんか情報残して埋めるか。

Doja5.0のエミュレータを起動する際に -u オプションを使用して
ADFへのURLを設定する際、そのURLが有効でないと起動時に落ちる


981 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 11:58:16 ]
Doja5.0のVer3.0.0のエミュレータはコマンドプロンプトから
起動した場合、DOS画面にSystem.out.printlnの出力を吐き出さないため
デバッグ情報が見れない。
なおVer2.0.0以前なら見れる。


982 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 12:40:48 ]
んじゃ俺も。

processEventのトラブル多いので、Canvas継承クラス貼り付け。
見た目の都合、全角スペースを沢山含んでいるので要削除。
多少問題もあるけどそこそこ動くと思う。
有識者の方適当に修正よろ。


983 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 12:44:04 ]
class appMain extends Canvas {
  private int  keyDown; // キーが押された瞬間にビットが立つ
  private int  keyArea; // キーが押されっぱなしならビットが立つ
  private int  keyUp;  // キーが上がった瞬間にビットが立つ

  public appMain() {  // コンストラクタ。お好きにどーぞ
  }

  // TODO IApplication#start()で以下を呼ぶ
  public void appStart() {
    try {
      while(true) {
        keyUp = keyArea;
        keyArea = keyDown | getKeypadState();
        keyUp = keyUp & (~keyArea);

        mainLoop();

        keyDown = 0;
        paint(getGraphics());

        Thread.slepp(100);  // 好きな時間で調節
      }
    }catch(Exception e){
      // TODO 強制終了前に何か一言
    }
  }


984 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 12:46:15 ]
  public void paint(Graphics g){
    // TODO 描画処理
  }

  public synchronized void processEvent(int type, int param) {
    if (type == Display.KEY_PRESSED_EVENT ){
      keyDown |= 1 << param;
    }
  }

  public void mainLoop() {
    // TODO キーイベント処理など。以下例
    if(keyUp & (1<<Display.KEY_UP) != 0 ) {
      // 上キーが上がった
    }
  }
}

今使ってるものからかなりいじってたんで、
コンパイル通らなかったらゴメンナサイ。


985 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 13:19:27 ]
ファイル名を指定してリソースを読み込むメソッド

byte[] loadResFile(String file) {
  byte[] b = null;
  
  DataInputStream dis = null;
  ByteArrayOutputStream out = null;
  try {
    dis = Connector.openDataInputStream("resource:///" + file);
    byte[] buf = new byte[10 * 1024];
    out = new ByteArrayOutputStream(buf.length);
    int ret;
    while ((ret = dis.read(buf)) != -1) {
      out.write(buf, 0, ret);
    }
    b = out.toByteArray();
  } catch (Exception e) {
  } finally {
    try {
      out.close();
    } catch (Exception e) {
    }
    try {
      dis.close();
    } catch (Exception e) {
    }
  }

  return b;
}

986 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 13:38:54 ]
スクラッチパッドの番号を指定してそのデータを全て読み込むメソッド

byte[] loadScratchpad(int num) {
  byte[] b = null;
  int size = 0;
  try {
    DataInputStream dis = Connector.openDataInputStream("scratchpad:///" + num);
    int ret;
    while ((ret = (int)dis.skip(100 * 1024)) > 0) {
      size += ret;
    }
    dis.close();

    b = new byte[size];
    dis = Connector.openDataInputStream("scratchpad:///" + num);
    dis.read(b, 0, size);
    dis.close();
  } catch (Exception e) {
    try {
      dis.close();
    } catch (Exception e2) {
    }
    return null;
  }

  return b;
}




987 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 14:27:35 ]
/**
Jarファイルからの画像のロード
@param fname ファイル名
@return Image 失敗の場合はnull
*/
private Image LoadImage( String fname )
{
Image img = null;

//バイナリデータのロード
try{
//Jarサイズの取得
DataInputStream din = Connector.openDataInputStream( "scratchpad:///0;pos=" + OFFSET_JAR_SIZE );
int size = din.readInt();
din.close();
//JarInflaterの取得
din = Connector.openDataInputStream( "scratchpad:///0;pos=" + OFFSET_JAR_DATA + ",length=" + size );
JarInflater ji = new JarInflater( din );

//画像の読み込み
MediaImage mi = MediaManager.getImage( ji.getInputStream( fname ) );
mi.use();
img = mi.getImage();

ji.close();
din.close();
}
catch( IOException e ){ DBGPRINTF( "Load " + e ); }
catch( Exception e ){ DBGPRINTF( "Load " + e ); }
return img;
}


988 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 14:52:44 ]
>>985
動かしてないけど・・・10KBまでしか読めない?


989 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 14:54:01 ]
ごめん、気のせいだった。
10KB単位で読み込むのね、りょーかい。


990 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 15:35:14 ]
FPSを保つコード需要ある?

991 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 15:41:04 ]
張っておけば喜ぶ人もいるんじゃない?


992 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 15:44:47 ]
ある
つか急激に良スレ化

993 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 16:00:01 ]
えらそうなこといってあれなんだが、実機ではいまいち正確に保ってくれないんだ
まぁ一応置いておく、誰か改変きぼう

public class FPS {

private static final int FLAMERATE = 30; //フレームレート。
private static final int FLAMETIME = 1000 / FLAMERATE; //1周期あたりの_秒

private boolean isFix; // FPSを固定するか
private long oldTime; // 一つ前の時間(Control)
private long beforeTime; // 一つ前の時間(Draw)
private long fpsCount; // 計測用FPS
private long fps; // 表示用FPS(1秒に一度更新)

FPS()
{
isFix = true;
beforeTime = 0;
oldTime = 0;
}



994 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 16:00:34 ]
あ、コンパイル通らねぇw

>>984
× if(keyUp & (1<<Display.KEY_UP) != 0 ) {
○ if((keyUp & (1<<Display.KEY_UP)) != 0 ) {

他にもありそうだなぁ(=´∇`=)

で、残り7レス。


995 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 16:01:09 ]
続き

/**
* スレッドのループ内に置くとFLAMERATEを調整してくれる
*
*/
public void control()
{
if(!isFix) return;

long nowTime = System.currentTimeMillis(); //経過時間。

long difTime = nowTime - oldTime;

if( difTime >= FLAMETIME ) //時間が余っている場合。
{
oldTime = nowTime;
return;
}

difTime = FLAMETIME - difTime;

//余り時間分待つ。
try
{
Thread.sleep( difTime );
}
catch( Exception e ){};

oldTime = oldTime + FLAMETIME;
}

996 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 16:01:43 ]
ラスト
/**
* FPSを計測して描画する
*
*/
public void draw(Graphics g)
{
long time = System.currentTimeMillis();

// FPS の計測
if(time - beforeTime >= 1000)
{
// 1秒経ったところで表示用のFPSに代入
fps = fpsCount;

// 初期化
beforeTime = time;
fpsCount = 0;
}
fpsCount++;

g.drawString("FPS:" + fps, 5, 15);
}
}




997 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 16:04:54 ]
余り時間計測する前に
Thread.yield();
を呼んで、他のスレッドの処理を入れてやるのが吉

998 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 16:09:24 ]
さぁうめるざますよ!

999 名前:345 mailto:sage [2007/08/24(金) 16:17:39 ]
>>993
こんな感じでメインループを空回ししてフレーム固定させてる。
ダイアログ出したりサスペンドの処理は長くなるので割愛。
  public void appStart(){
    long bt = System.currentTimeMillis();  // 処理基準時間
    long nt = 0;   // 次に処理する時間
    long t, ct = 1;
    while( true ){
      t = System.currentTimeMillis() - bt;
      if( nt > t){
        try{
          Thread.sleep( 1 );
        } catch( Exception e){}
        continue;
      }
      // スキップしたフレーム数分メインループを回す
      for(int i = (int)(( t - nt ) * FLAMERATE / 1000); i >= 0; i--)
      {
        keyUp = keyArea;
        keyArea = keyDown | this.getKeypadState();
        keyUp = keyUp & (~keyArea);
        mainLoop();
        ct++;
        keyDown = 0;
      }
      nt = ct * 1000L / FLAMERATE;
      paint( getGraphics() );
    }
  }


1000 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 16:18:51 ]
345って・・・orz
983でした。ってことで1000


1001 名前:1001 [Over 1000 Thread]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<254KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef