iモード携帯電話用Java(iアプリ) Part9
1 :
デフォルトの名無しさん :
2005/07/04(月) 02:22:33 NTT DoCoMoのiモード携帯電話用Javaに関する話題を扱うスレッドです。
3 :
デフォルトの名無しさん :2005/07/04(月) 06:43:11
3ま
5 :
4 :2005/07/04(月) 06:54:00
iモードは無いがM1000ってどうよ?
話題がないのか?
バイトコード減らすコーディングのガイドラインとか、どっかに無いものですかね。 Zip圧縮がかかる以上、単にバイトコード減らせばアプリのサイズも減るってわけじゃ ないだろうけど、それでも30KBの壁は時としてテラキツス(´・ω・`)
オブファスケート→7zip様 でダメな時は諦める。
諦めたらそこで試合終了やんけ! proguard 様と 7zip 様の神通力には本当助けられてるが、コードこねくり回すのも 結構馬鹿にならない数字…数百バイトとか…を捻り出せる場合があるので、 結局最後の最後は人力勝負ですよ。 とりあえず ・forループは可能な限り逆方向に回してゼロ比較。 ・switch〜caseは様子をみながら、時にはifだだ並べも辞さず。 ・一時変数テラキモス。どうでもいいループカウンタなんか全部メンバ。スレッドでの裏読み込みテラコワス。 ・try 〜 catch 〜 finally も省けりゃ全部省いて例外なんか投げっぱなしジャーマン。 ・もちろん class は極力少なく、少な過ぎは流石に可読性落ちるし使い方次第では 返ってコード量が増えるだけなので、それなりにバランス見つつ減らしたり増やしたり。 ・int だろうとなんだろうと初期化済み配列なんて存在しないので根絶、 全部スクラッチパッドに追い出して後読み、後付け。文字列定数以下同文。 くらいはやってるんだけど、他にどうしたらいいんだかー。
クラス・メソッド・変数名を縮める
そりはProGuard様がやっておろう。
メソッド数が多いときも容量にハネ返ってくるんで、1箇所2箇所くらいで しか呼んでないやつは、メソッドやめて展開しまくり。 メソッド5〜6個ぐらいまとめて処理して数十バイトとか稼げたような。 可読性劇悪で、見返りも少なめなんで、最後の一歩での削りこみに 使うくらいだが。
switch case は使わないほうが良い。if で書け if else よりは if を並べた方が小さくなる throws を書いても大きくはならない→大外で catch すれば良い
20 :
デフォルトの名無しさん :2005/07/06(水) 03:50:15
iアプリをPCからダウンロードできませんか? PCで作ったのをいちいちWEBへUPしなければならないんでしょうか
ちょうど今課題やってる。パスワード設定するというものなんだが・・・。 textBoxの応用だな。しかし、わからん。
>>15 >forループは可能な限り逆方向に回してゼロ比較。
これなんだが、スピードはUPしても容量は同じじゃねーか?
>>22 容量も減る。Javaのバイトコードには、大方のCPUのインストラクション・セットと同じように
0との比較用の命令があるので。逆アセしてみるよろ。
>>18 それはZipのウインドウ圧縮の性質のせいなのかな。
漏れはJavaのByteCode詳しくないんで当てずっぽうなんだけど、
インライン展開した方がJarサイズが縮む場合は確かに多い。
classファイルはデカくなるのに。
そろそろ504を切り捨てたいのだが…。
切っちゃえ切っちゃえ! 切れない現実… しかも最大普及端末がN504…タイマ分解能100msのN504…ヒープ無い無いのN504… …(´Д⊂グスン
この前電車でN504操作してる人いたからなぁ。
>>24 単にメソッドの定義が文字列で.classファイルに書き込まれるからだろう。
pubic限定ではあるけど。
Felica関連のiアプリの経験者はいる?
どっかのサイトでStringをStringBufferで使用した方が減ると書いてあった。
32 :
30 :2005/07/06(水) 19:06:41
>>32 おおう、サンキュー!
…ふと思ったんだが、その辺を最適化するProguard様のオプションが無かったっけ?
呼び出されるメソッドは、呼び出すメソッドより コード内の前の方で宣言すると サイズが小さくなる。 Eclipse でメソッドを抽出すると後ろに来るんだよなあ……。
なにやらサイズ節約ネタ大会ですか? 知らないネタがいくつか出てきたんでお礼。 つ 初期化の省略 int a = 0; boolean b = false; のように初期化する値がJavaの変数のデフォルト値に等しい場合は、 int a; boolean b; にすれば、冗長な代入のバイトコードがなくなる。
この辺の情報って、思ったよりも共有されてないよね。 プロの人とかにすれば常識なんだろうけど。 こういう情報が集まってると、良スレだなあって思う。
39 :
デフォルトの名無しさん :2005/07/07(木) 03:01:18
PCでつくったプログラムをダイレクトに携帯に入れれませんか? 課金がもったいなくて
>>39 無理!いや、冗談抜きで仕様上無理なんだわ。
他のキャリアでも条件付きだったり、キャリアが許可を下ろした
専用端末じゃないと駄目だったりするぞ。
気持ちはわかるが、じっくりチェックしてから動作確認しる。
今なら一次チェックはFOMA端末でする様にすれば、大分マシになるし。
定期的に
>>39 みたいな質問でるな。
テンプレに入れた方がいいんだろうか?
java.awt.Choiceに相当するクラスって、iアプリにある?
>>34 いま手元で試してみたんだけど、ProGuardはその辺最適化してくれるみたいだね。
サイズ変わらないや。
45 :
デフォルトの名無しさん :2005/07/07(木) 17:23:52
サイズ大きめのファイルを取得する際に、 同じ場所で同じ処理なのに時間かかったり かからなかったりするんですが、 現在の電波状況や通信時の速度って 取得できるもの(方法)ってありませんか?
つPhoneSystem 電波強度は取れる。 速度は無理だにゃー。
つ[byte per second]
48 :
デフォルトの名無しさん :2005/07/07(木) 19:41:17
>>定期的に
>>39 みたいな質問でるな。
>>テンプレに入れた方がいいんだろうか?
だからできないんですよね?
出来たらとっくの昔にみんなやってる。
50 :
デフォルトの名無しさん :2005/07/07(木) 19:50:54
>>出来たらとっくの昔にみんなやってる。 いかにドコモの技術がすごいかですね クラックできないから
する価値がないというか…。
して誰が嬉しいってもんでも無いっつーか…。 いや、殿様商売大概にしやがれとは思うけどね。
54 :
デフォルトの名無しさん :2005/07/08(金) 02:05:38
48と40が馬鹿なだけ。 できると思う。PCからDLしない分通信費用がかからん
勝手におもっとれ。
携帯アプリ板にも変な奴が沸いてたが、同じ輩か? せっかくこの所いい流れだったんだから、勘弁してくれよ、本当… 知らないのは別に罪でもなんでもないんだからさあ
57 :
56 :2005/07/08(金) 02:21:06
…なんか
>>54 に曲解されそうだから、あらかじめ
俺がレス入れたのは
>>55 じゃなくって
>>54 にだから
PCにDLするなら好きにしろ、サーバ側の設定次第なら落とせるし
落としたならエミュ上で動作させることも、あるいは可能だろう
商用アプリは携帯電話の識別情報元に認証入れるわけだから
事実上無意味だが
自前アプリならエミュで我慢しろ
そこから先は好きにしろ
実機とエミュの挙動の違いに泣くのは、素人には関係のない話だ
58 :
デフォルトの名無しさん :2005/07/08(金) 05:20:40
>>そこから先は好きにしろ おまえにいわれる筋合いは無い。
なんか
>>54 以降変じゃね?
なんでPCから直接携帯にDLできるか?って話が、
>>57 でPCにDLして
エミュで動かすって話になったんだ?
>>54-57 を何度読み返してもそんな流れになった理由が分からないよママン。
>>32 のページおもしろいな。
教えてくれた人Thx。
俺も
>>32 のぺーじは結構お気に入りなんだよね。
説明とソースとかしっかりしてるし。
探せば結構良いページはあるのだけど
見つけるのは結構大変なんだよね…
常に + より StringBuffer を使うべきなんじゃなくて,
一つの式で書けるなら + の方が効率がいいですね。
(って最適化をコンパイラーがおこなうことは言語仕様では
義務づけられてないけど少なくとも JDK はおこなってくれる)
例えば
>>32 の最後のサンプルなら
int m = 10;
String str = "test" + m + '#' + " OK";
って書いた方が効率がいい。
あと JDK は String(とプリミティブ型)のリテラルの + は
コンパイル時に評価するので,
String str = "hogepiyo\nfoobar\n1234567890\n";
は行頭をそろえて見やすく書いたりしても同じバイトコードが
生成されます:
String str =
"hogepiyo\n" +
"foobar\n" +
"1234567890\n";
64 :
デフォルトの名無しさん :2005/07/08(金) 19:27:33
>>実機とエミュの挙動の違いに泣くのは、素人には関係のない話だ ここのスレは開発者だと思うが。 素人なら見ないと思うが(w
ループするサウンドをpsmplayerで作って再生してるんだけど、 どうしても演奏終了->演奏開始で100msぐらい途切れてしまう。 前に仕事で貰ったmldは上手くループしてるのに…。 psmplayerではダメなのかな?
>>64 言ってる事が素人だって話じゃないの?
つーか、もはや何の話なんだかわかんねーよ。
あんたも一々上げてないで仕事しろ。
67 :
デフォルトの名無しさん :2005/07/09(土) 03:59:15
68 :
素人 :2005/07/09(土) 08:26:16
勝手アプリ作者ですが見てますよ。
DoJaを使って アプリ使っている人はいる?
何故そんなことを聞く
71 :
デフォルトの名無しさん :2005/07/09(土) 16:39:09
iアプリ関連の書籍を買おうと思って書店に行ったのですが、 どこにも見当たらないんですよ。 店員に聞いてもドキュソ店員なのか、ないとかのたまう始末だし。 Java関連書籍のとこじゃなくって、どっか別のとこにあるんですか?
ASCIIの4100円のとか、んぱかとか、結構あるだろ。売ってないけど
76 :
デフォルトの名無しさん :2005/07/09(土) 23:11:13
amazonで「iアプリ」か「iモード Java」で検索すれば、15冊くらいは確認できる
でも大抵ろくな本じゃない罠。
>>32 のページ未満ばっかり。
switch 〜 case を if に置換するとクラスサイズが減るのは周知の事実ですが、 Java ってコンパイル時にジャンプテーブル作らないの? つまり、 ・クラスを大量に作るわけにいかないから、ゲームとか作っててもキャラの種類ごとにクラス作るなんざ論外で、 大抵最大公倍数な巨大ゲームキャラクタクラスに状態変数を割り振って管理することになる ・つーことはメインループ内は switch 〜 case だだ並べは、ある程度やむなし ・ここを if に置換すれば少なくないクラスサイズ削減になるけど、性能への悪影響が出るのは困る というジレンマ。 どうしたら一番いいのかな?
>>79 switch caseの値が連続してたら
ジャンプテーブル作るよ
>>80 thx
胸の支えが取れました。
心置きなくswitch case します。
場所によっては。
昔はサイズ削るので、大変だったんですね。 近いうちに901でiアプリ制作を始める私には、こうした心配は無縁かな。
本格的に作ろうとしたら100Kなんてスグだよ
900用に作られた企画は結局900の限界に挑戦しようとするから 結局サイズ削減は気にしないといけなくなる場合が多い。 901用って書いてあるけど、念のために言っておくが、 901用に作って900で動かそうとするとメモリ少なくて死ぬ可能性があるから、 アプリサイズとスクラッチパッドサイズが一緒だから大丈夫☆ミ という言葉に騙されないようにな('A`)ノ
まぁD900iですら、240*240の画像を30枚は読める。 よっぽど下手なコーディングをしない限り平気だとは思うが。
それが、3Dだとちょっと話が変わってくるらしいんだよ。
3Dか! 仕事で3Dの仕事くる?うちは相変わらず2Dなんだが。 やっと2DでまともなFPSが出るようになったからって感じ。
3Dの話は結構来る。 ってーか、どこのキャリアでも、サイト立ち上げとかの審査の時には 内容に関わらず3Dならスゲーっていう古い体質が残ってるみたいだから 900以降って感じだと3Dにしたがる傾向があるみたい。 505以降の場合は遅すぎて使い物にならないって断るけどね。
89 :
デフォルトの名無しさん :2005/07/10(日) 23:35:22
>>174 漏れは、クリがチンポになっちゃった!
クリもチンポもあるとなんかすごいファンタジーって感じで
タダでさえ現実感なくなりそうだから。
Eclipse+DoJaでWHOTOサイト見ながらコード書いて さぁ実行!ってやったら、 実行中(エラー:com.nttdocomo.eclipse.DoJaBuildException: Failed create jarC:\IBM_Development_Package_for_Eclipse_Win32_1.1.0\eclipse\workspace\SampleAppli\bin\SampleAppli.jar って出て進まないんです。 マジ訳わかんなくて泣きそうですボスケテください;;
SUNのJREインスコしれ。
同じプログラムをeclipseでビルドとiAppliTool for Doja 4.0 でビルドだと 後者の方がjarファイルの容量が減りますが、何故でしょう・・・
eclipseはデバッグ情報とか埋め込むんじゃなかったっけ?
デバッグ情報とかはプリべりファイアが削除するはず。 まあ、両者ではコンパイラが違うんだからそりゃコンパイル結果も微妙に違うでしょう。
Eclipseはデバッグには向いてるけど最終的にコンパイルするのはやめたほうがいいと思う。 めっさ重くなるよ。
eclipse使えば、iアプリも一行ずつ実行するタイプのデバッグできるのか? それなら即使い始めるんだが。
>>92 即レスありがとうございます。
やってみましたが変わりません・・・。
新しいバージョンじゃだめ?Eclipse3.1、DoJa4.0
う〜〜ん・・・
99 :
93 :2005/07/12(火) 17:23:57
>94 デバッグ情報消せたのでサイズが大体同じものになりました。 ありがd
100getttttttttttttttttttttttttttttttt!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>>100 10進数でゲットしたか2進数でゲットしたかでキミの価値が決まる。
初心者ですまそ iアプリでhelloworldつくろうと思ってDoja3.5落としたけど 余計なDOS窓みたいなのはなんだろう? これが出ないでシュミレータだけ立ち 上がるようには出来ないの?
>>91 さん
JDKへのパスが通っていないのではないでしょうか。
環境変数のPATHにJDKのbinへのパスを追加してみてください。
104 :
102 :2005/07/12(火) 23:11:01
>>103 説明が足りませんでした
パスは通っています、PCの環境変数にじか打ちしました
シュミレータは立ち上がって、かんたんなテストアプリも出来ますた
デモも出来ます
うんぱかを参考にしてます
質問は
余計なDOS窓みたいなのをやっつける方法をお聞きしたかったのです
ドコモのマニュアル見ても書いてないのか、探し当てられませんでした
ここのレベルからすると、超初心者の馬鹿みたいなレベルですみません
>>104 できない。
なんであのウィンドウが出るかは、
MS-Windowsのアプリの仕組みがわからないと無理だが、
要は作者が手抜きしてるだけ。
>>104 もっと良いやり方があるとは思いますが、とりあえずは
そのコンソールウィンドウが出ている間に、
・ウィンドウ左上のアイコンを右クリック、メニューからプロパティを選択
・レイアウトタブを選び、ウィンドウのサイズを1x1に、ウィンドウの位置を0,0に変更
・「OK」ボタンを押し、プロパティの適用ダイアログで「同じタイトルのウィンドウに適用」を選択、OKボタン。
とでもしておけば、とりあえずあまり邪魔にならなくなると思います。
>>104 CTRL+Cでエミュレータを強制終了できるから、便利だと思うけど。
108 :
102 :2005/07/13(水) 00:34:39
109 :
102 :2005/07/13(水) 00:40:00
>>107 その技も使わせていただきます。さらにサンクス
110 :
デフォルトの名無しさん :2005/07/13(水) 01:01:42
Dojaの開発環境からではなく、コマンドラインからビルドしようとして以下を実行しました。 > javac -g:none -target 1.1 -classpath c:\iDKDoja4.0\lib\classes.zip;c:\iDKDoja4.0\lib\doja_classes.zip -d c:\idkDoja4.0\apps\\Hoge\temp c:\idkDoja4.0\apps\Hoge\src\Hoge.java > c:\iDKDoja4.0\bin\preverify -classpath c:\iDKDoja4.0\lib\classes.zip;c:\iDKDoja4.0\lib\doja_classes.zip -d c:\idkDoja4.0\apps\\Hoge\temp\output c:\idkDoja4.0\apps\\Hoge\temp > jar -cfM c:\idkDoja4.0\apps\\Hoge\bin\Hoge.jar c:\idkDoja4.0\apps\\Hoge\temp\output すると、Dojaからビルドした場合と比べ200バイトぐらい大きくなり、エミュレータ、実機ともに java.lang.ClassNotFoundExceptionというエラーになります。 コマンドのパラメータの指定などおかしいとこがあったら教えてください。
111 :
91 :2005/07/13(水) 01:38:51
>>103 ありがとうございます。
PATHを設定したら問題なく出来るようになりました。
ほんとありがとうございます。
にしてもEclipseももうちょっと親切なメッセージを
出してくれればいいのに・・・。
すいません、教えてください。 メッセージを表示してSELECTキーを押すと次のメッセージを表示するということをしています。 で、完全にメッセージを表示するまではSELECTキーが押されても無効にしたいため、 SELECTキーが押されたら、repaint()しpaint()メソッド開始と同時にフラグをたて、その描画が終わったら フラグを外しています。#processEventでこのフラグが立っていない場合は弾いてます。 ところが、P900iだとこのやり方でうまくいくのですが、F900iだとこのやり方でうまくいきません。 メッセージ表示中(描画中)にSELECTキーを押してもF900iだとprocessEventに入ってこないのです。 メッセージ表示後に押した分だけのキーイベントがいっぺんに入ってきます。 そのため、SELECTが連打されるとメッセージが次々変わるようになってしまいます。 コレを回避するにはどうしたらいいでしょうか?
paint()とprocessEvent()はテンプレ行きだな。 ↓まかせた。
おっしゃ!w
これで、よろし?
↓
-----------------
907 名前:デフォルトの名無しさん 投稿日:2005/06/20(月) 19:28:40
アドバイス頂ければ幸いです。
現在、メッセージを表示する時にタイマーを使用して
一文字一文字表示しています。ドラクエのメッセージのような感じです。
ex.こ(sleep)ん(sleep)に(sleep)ち(sleep)は、、、こんな感じです。
この間、SELECTボタンを押されるとまずいので、フラグを立てて、メッセージ表示中は
入力を不可にしようと思ったのですが、表示部分のコードを通過しても
実機ではまだ表示の最中ですが、表示部分のコードは通過しているので
キー入力を受け付けてしまいます。
これはどうやったら回避できますでしょうか?
909 名前:デフォルトの名無しさん 投稿日:2005/06/20(月) 21:38:38
>>907 ソースを提示していないから誰も的確なアドバイスはできない。
当てずっぽうで答える。
キー入力の判定と描画を非同期で処理しているとそうなる。
描画にrepaint()/paint()を使っているならやめて、
別のメソッドで描画するようにし、キー入力判定の処理と同期を取ればよい。
すでにそのようにしているなら、フラグを監視している場所(タイミング)が悪い。
911 名前:デフォルトの名無しさん 投稿日:2005/06/21(火) 12:46:25 レスありがとうございます。 原因がわかりましたが、まだ解決できません。 描画中にキーイベントは一切processEventに入ってきていませんでした。 ただ、描画中にキーを押した分は、描画後に一気に流れてきます。(自前の描画関数だから?) てっきり描画中もprocessEventに来ているものだと思っていたのですが、、、 これでは、描画前にフラグを立てても、意味がありませんでした。 キー情報初期化とはどうやるのでしょうか? 描画後に溜まっているキー情報をクリアできたら、非常に助かります。。。 912 名前:デフォルトの名無しさん 投稿日:2005/06/21(火) 12:57:38 度々、恐れ入ります。 自前ではなく、repaint()に処理を書き込んだところ、 描画中も、processEventにてキー入力を拾うことができました。 自前で書き込んでる場合は、拾えず、 repaint()ないなら拾える。 まだまだ、勉強が足りないようです。。。ご迷惑をおかけしました。 914 名前:デフォルトの名無しさん 投稿日:2005/06/21(火) 13:08:15 自前の描画って、processEvent()内で行なってないか? もしそうなら、描画が終わるまでキー入力は受け付けない。 (正確には受け付けないというより、バッファに溜まっていく) repaint()は別スレッドで描画されるから受け付ける。 ソース見ないとわからんが、たぶんこれが原因じゃないかな。
915 名前:デフォルトの名無しさん 投稿日:2005/06/21(火) 13:39:42
>>914 イベントで描画するとそうなるのか・・・ってか
普通イベント内は簡潔に短くってのが基本だろうw
根本的に組み方がまずいんじゃないのか・・・。
916 名前:デフォルトの名無しさん 投稿日:2005/06/21(火) 14:44:25
>>914 おもいっきりprocessEventの中で描画しています・・・
え、でも、例えば、メッセージを表示してSELECT押されたら、
二回目のメッセージを表示するときなんて、
if( Display.KEY_SELECT == param )
MyPaint();
こんなやってやりません?
これダメな例ですか?
917 名前:デフォルトの名無しさん 投稿日:2005/06/21(火) 14:52:45
>>916 それしかしないならかまわないが、基本的にダメな例じゃないかな。
キープレスイベントではグローバル変数にキー取得データを代入するようにすべき。
イベント内部ではキー関係以外でも呼び出される為余計な処理は入れないのが基本。
ゲームなんかで色々多岐に分岐する際そいう作り方だと
呼び出されるたびに無駄なメモリの確保やら色々されてしまい結果的に容量不足になる。
処理速度を安定させることも難しくなるし、根本的に作り直しをすべきだと思う。
918 名前:デフォルトの名無しさん 投稿日:2005/06/21(火) 15:12:35
>>916 >>917 の言うとおり。
processEvent()内で描画などの「重い」とされる処理をしちゃだめ。
プログラミングガイドに書いてあるでしょう。 ←重要
他に例えばスクラッチパッドのアクセスや通信もここに書いてはダメ。
「あまりやらない方がいい」ではなく「やってはダメ」と覚えて。
processEvent()はケータイ本体側(システム側)からユーザー入力などのイベントを
プログラムの動作とは非同期にプログラム側へ通知する役目を持つメソッド。
通知を妨げるような処理をやってはいけない。
やるのは、押されたキーの値の代入とか、フラグの上げ下げとか、その程度で。
イベント内でリペイントもダメ??
119 :
112 :2005/07/13(水) 18:16:24
すいません、質問が重複しますが、 processEventでrepainもダメですか?
やってみれば?
121 :
112 :2005/07/13(水) 18:25:11
上の過去ログの914さまの書き込みだと、repaint()だとオッケーな様な気がします。 NGでしたらごめんなさい。 P900iだと processEvent(SELCT押下)→repaint()→paint()(フラグON、メッセージ表示開始) (表示中にSELECT押下)→processEventでフラグの確認、フラグで弾く paint()終了時に、フラグ外す。 (SELECT押下)→次のメッセージ F900iだと processEvent(SELCT押下)→repaint()→paint()(フラグON、メッセージ表示開始) (表示中にSELECT押下)→processEventに何も入ってこない、フラグの判定すら出来ない状態 paint()終了時に、フラグ外す。 再描画完了後→processEventに一気に連打したぶんのSELECTイベント メッセージが表示されたらもう次のメッセージの描画開始 となってしまいます。 追加ですが、SHとDとNでも連打しても平気でした。
>>112 paint とかのシステムから呼ばれる関数内で時間のかかる処理を
するという設計がダメ。(startとかrunは別として)。
メインのループを作って、その中でCanvas#getGraphics で得た
Grapchics に普通に書けば良い。こうした普通の処理の間には
processEventはちゃんと呼ばれるので、そこでテキトーな変数に
キーコードを入れておく。
メインループではぐるぐる回りながらキーコードを見て、
何か入っていたら0に戻して対応する処理をする。
0のときには電池がもったいないので10msecくらいSleepしておく。
そんな感じで。
今までテキストエディタでソースを書いていたのですが、Eclipseを使ってみようと Eclipse2.1.2をインストールしてDojaのプラグインも入れました。 HelloWorldのような簡単なアプリは出来ましたが、 GIFファイルをresフォルダに入れて読み込もうとすると実行時に com.nttdocomo.io.ConnectionException: Unexpected I/O exception のエラーが出ます。 iAppliTool for Doja 4.0だと実行できるのですが、なぜなのでしょうか?
124 :
デフォルトの名無しさん :2005/07/13(水) 22:13:31
iアプリで電話発信を使ったプログラムを作ろうと思っています。 エミュレータ上では実行できると思うのですが実機(docomoの携帯電話)では 電話発信できるのでしょうか? いろいろ調べて「トラステッドiアプリ」の関係で使えないと思ってるのですが、 詳しい方教えてください。 参考になりそうなURLも教えてください
電話発信ってのは、電話をかける機能のことか? あれはトラステッドじゃなくて普通のでもいけるよ。
そろそろ期末テストが終わった頃かな。
127 :
デフォルトの名無しさん :2005/07/14(木) 08:19:37
>>125 電話をかける機能のことです。
詳しく書いてあるところ教えていただけませんか?
公式のAPIリファレンスミロ。 Phoneクラスだ。 っていうか Phone.call("177"); で天気予報にかけられるよ。これだけだ
>>122 追加。
実機検証した限りだと、その通りにやっても、明示的に sleep() かけないと
processEvent()が呼ばれず、入力がバッファリングされてしまうパターンに
遭遇したことがある。
これは半分以上機種依存の話だと思うんだけど、P505でそうなった。
メインループ中にThread.yield()入れることで緩和できるんだけど、
どうもある程度まとまった処理時間をprocessEvent()発行部分に
「明示的に」渡してやらないとならないと、やっぱり少しずつ
キー入力情報とかをバッファリングする様になって、最終的には
2〜3秒の入力遅延を引き起こすようになった。
yield() だけじゃなく、Thread.sleep() で、ある程度の時間
メインループを眠らせるようにすることで解決できた。
参考まで。
130 :
デフォルトの名無しさん :2005/07/14(木) 10:30:14
>>128 公式のAPIリファレンスってどこにありますか?
ヒント:テンプレ
第2ヒント:DoJaはどこから?
>>121 そもそもイベント内でフラグ判断して
処理分岐させる考え方を変えたほうがいい。
アプリの規模にもよるがその内癌になるぞ。
プレスイベントを使ってキー入力を処理したい場合
そこではgetKeypadState等を利用してデータ取得するなどだけで
極力記述の量を減らす。最低限の処理しか入れない。
その取得したデータをメインループで参照する形を取る。
この方法だとそもそも
>>112 のような症状は出ない。
すれ違いかもしれませんが・・ imodeで動くのはjavaだけなの? 他の言語はうごかない?
>>134 他の言語?
ネイティブアプリはメーカーの開発部門に就職しない限り無理
flashで遊んどけよ
>>134 どんな言語でも動くよ。
自分で実行環境作ればw
Flashでいいんじゃね?
Perl入れてUNIX機にw
>>134 MARQUEE使えば、iモードで日本語も動くよ。
もう夏だな('A`)y-~~ 夏季商戦みたいな盛り上がりもないし、 携帯バブルもはじけたのか最近は新機種とか新機能とか 静かだねぇ。
902iが出ても申し訳なさそうに容量がちょびっと増えるだけだろうなぁ。
700isシリーズがもうすぐ出るがアプリ的にはあんまり変化ないしな。
>>110 漏れはこうやってる、
$javac -target 1.1 -g:none -bootclasspath ../../../lib/classes.zip -classpath ../../../lib/doja_classes.zip
../../../bin/preverify -classpath ../../../lib/classes.zip\\;../../../lib/doja_classes.zip @class
cd output; zip -9 -m -D -X ../$jar @class
当然だが、クラスの順番が変わるとサイズも変わる
>>142 いいじゃないか、余計な仕事が増えなくて。
しんどくてしんどくて、体がだるい。
夏バテなのか、冷房病か・・・ううぅ
>>124 まずはADFの設定で
電話に関するキーがある筈
キーを設定しないと動かないぞ。
次にDoJaのJAVADocに
Phoneクラスに電話をかけるメソッドが
あるから目を通しておくれ
146 :
デフォルトの名無しさん :2005/07/16(土) 11:53:37
最近、久々にiアプリを作って見ようかと思ってます。 Doja1.0時代に、メモ帳とDoComoの開発ツールだけで1本作った経験がありますが、 最近は何かメジャーで便利な開発ツールがあるのでしょうか? ググっては見ましたが、昔と今の情報が混ざって、 何を使えばいいのかあまりわかりません。 ちなみに、Eclipse関係はキライなので、勘弁してください。 コンパイル支援ツール、デバッガ、エミュレータなど、 最近は、どんなものが定番なんでしょうか?
>Eclipse関係はキライなので、勘弁してください。 エー 後学のために、嫌いな理由を教えて欲しい。 マジでeclipse一択だと思うんだが。
そのあたりは進化してないよ。 好きな総合環境を持ってくるが吉。 俺はVCのmakefileの変わりにbatを割り当て、ビルドできるようにしている。
eclipseってプリプロセッサついてる? ついてるなら一択なんだが。
150 :
デフォルトの名無しさん :2005/07/16(土) 12:15:16
EmacsからEclipsに進化できない人間なのれす。
EmacsとMakefileで開発してまつ。 特に不便を感じませんw
ドコモの開発ツールでコンパイルとかって、Doja4.0のやつでも、 Doja1.0相当のJavaしか使ってなかったら、503iでも動く?
なるほど、さんくす。 でも、古いプログラムを最新版の環境でコンパイルしてみたら、 容量増えてしまって10k超えてしまった…。 ハンドオプティマイズしまくっていた10236バイトのバイナリが、 10280バイトになってたよ、ママン…。
そろそろアプリサイズ10kは伝説になりつつあるので無問題。
DL料だけでパケ料金は要らないオススメのiアプリなぃか?
( ´ー`)つ[自作]
>>150 >>151 藻前らは漏れでつか
データ変換のツールとかかませるから
Makefileないとちょっと辛い
Javaならantだろ
バッチファイルで十分
>>161 擬似局でDLする方法もあるけど、これ面倒。
USB接続でアプリ書き込んじゃう方が簡単でいいと思うけど、
メーカーによっては書き込みツールが存在しないのかも。
ソフィアなんちゃらって最適化ソフト、誰か使ってますか? ProGuard+JoGA+7Zipでもまだ足りず、結局手でクラスマージして 無理矢理30KBに押し込めたりの作業が相変わらず憑いて回るんだけど、いい加減もう疲れた…。 1クラス1万行とか、二度と読み返せないほど汚染されきったソース残すくらいなら、 会社に買ってもらった方がいい気がするんだけど、それも性能次第。 1クライアント35万は安くないし。 試用版申し込んでみたけど、どのくらいの性能なのかな…。 もし今までのハンドオプティマイズの苦労を鼻息で吹き飛ばすほどの 性能発揮してくれたら、今までの苦労の無駄さ加減に泣けてくるけど、嬉しくもあるな…。
>>164 プリプロセッサを使ってガンガンに書いたコードだと4%〜5%くらいは減った
というか7zipの威力が大きい
普通の書き方はしたことないので判りません
が、結局コード実行の正当性を確認する時間がとれなかったので未使用のまま仕事が終わった
あれ? 7zipとは併用できないの? 出来上がったjarを解凍->再凍結してjamのサイズ書き換えるだけだよね? 7zip様の圧縮効率の良さには本当助けられてるけど、やっぱりclassファイルが どれだけ縮んでくれるかも大きいし、この辺はハンドオプティマイズだと 限界があるっつーか、面倒くさ過ぎ。 JoGAがうたってるclass mergeの機能がちゃんと働いてくれれば、 この種の苦労は大分減るんだけど…。 Canvas継承の共通フレームワーク->を継承してfinal宣言した アプリ実体クラスのmergeすらしてくれない。 ゲームとかみたいに音を積極的に使おうとすると、MediaListner分で さらに余計にクラス消費しちゃうし、ロード中をスレッドで待機させようと すれば、さらにまたクラスを食っちまう。 こんな中で、クラス数を減らせるのは即容量に跳ね返ってくるので 自動化できると助かるんだけど…。 プリプロセッサ使っちゃうと、もうJavaでもなんでもない「なんでもあり」の 世界に逝っちゃうしね。…使うんだけどさ、結局。
ソフィアのクラスマージは 稀にとんでもない実行速度低下を引き起こすんだわ 俺が昔やってたのが偶々そうなって焦った
>>166 ああ書き方紛らわしかったかなスマン
SophiaCompressだけの最適化 -> 2%〜3%
さらに7zip使って圧縮してもらう機能 -> 4%〜6%
もちろん普通なプリプロ気にせずに書いたコードなら 20%くらいは平均縮んだんだけどね
ただもうドングルを管理者に返しちゃったから検証することできんなあ
でもさ、最近BREWとのマージをやりやすくするために、
あえてプリプロをガンガン使うコードになってきたんだけど、俺
>>168 >でもさ、最近BREWとのマージをやりやすくするために、
>あえてプリプロをガンガン使うコードになってきたんだけど、俺
俺も。
そういう人多いな…つか、仕事でやってればそうなるか。 iアプリってどうなっちまうんだろ、これから。
アプリCPUのマルチコア化
消費電力・・・
とりあえず、電話機能をなくしてもいいからアプリ機能をもっと豪華にして欲しい。
static final intな定数を置換するスクリプトにかけただけで3k縮んでびびった
そもそもdefineでやってないのはいかがなものか。
メールの保存量が限界に近づいたら、 警告だすような機能つけたいんですけど iアプリから、携帯のそういう情報を参照することってできますか?
OBEX(赤外線)→FeriCaと来て 次はBluetoothか? 余談だが、噂には聞いたけど 外部メモリーカードと連携のサポートもありえるとか・・・
>>175 そういうのってproguardとかがやってくれないか?
>>175 ほんとに??
そもそもstatic final intはシンボル名を埋め込んではいけないとJLSで決まってるので、
static final int HOGE = 4;
の時に、HOGEと書いても4と書いても結果は変わらないはずなんだが。
>180 ソース中の HOGE を全部 4 に替えて static final int HOGE = 4; の宣言自体を削除ってことでしょ
参照が有ろうと無かろうと、 private static final int HOGE=4 の宣言そのものは依然としてclass内に残ってるので、 それが削れればサイズが減るのは自明。 ProGuardとかは、この種の定数宣言をある程度まで削除してくれるみたいだけど、 100%ってわけではないみたい。
>>180 ああ、そういうことか。
頑張ってDoJa APIで定義されてる定数を置換してるのかと思ったよ。
それなら納得。
185 :
184 :2005/07/19(火) 00:30:06
結論として、SophiaCompressは、フリーで使えるProGuard、JoGA、JavaBlender、(と7-Zip)みたいなツール達が提供する機能を覆すほどの 性能的アドバンテージはなさげ、ということでよろし? 話は飛ぶんだけど、別クラスのメソッド呼び出す時、JavaのVMって 関数名検索かけるよね? Aクラスから「ごくたまに」しか呼び出さないBクラスのメソッドがあったとき、 一部端末でその呼び出しが目に見えて遅い〜マジで1秒近く止まる… 単にprivate final static で宣言されたString返すだけなのに…という怪現象に 見舞われたことがあって、その辺の実装が端末ごとに異なるなら、ますます class mergeの自動化を、どこかの誰かにお願いしたかったんだけど、 容量面でも、速度面でも、Zip圧縮の辞書の有効性稼ぐ意味でも ・1クラスにぶっこめるだけぶっこめ は永遠の真理ってことでFAなんでしょうか? プリプロセッサ使って外科手術的にコトに当たるのが最良でしょうか?
187 :
デフォルトの名無しさん :2005/07/19(火) 12:11:59
プログラミンをするのは全く初めてなんですが、 どうしても作りたいアプリがあったので、独学で始めました。 アプリはjavaらしい、ということで取敢えず「やさしいJava」を買って来ました。 で、一応全てをマスターしまして次は「やさしいJava 活用編」を買って来て実地訓練を積もうかと考えていたのですが…。 ここに来て気づきましたがiアプリはJ2MEなんですよね。 「やさしいJava」はJ2SE向けじゃないですか。 ここは活用編を買うよりも、J2MEの入門書→iアプリの解説本といった方が宜しいのでしょうか。 iアプリ以外でのjava知識の活用は考えておりません。
>>187 別にそのまま勉強して良いかと。
基本がしっかりマスターできればちょっと言語変わっても
対応はそこそこすぐ出来るようになる。
ただ、iアプリは制限や癖がきついので
プログラム的にはあってても正常に動かないことがしばしば。
iアプリの実験的な簡易プログラムの数をこなすのをお勧めする。
つーか、初心者に携帯アプリやらせるのってどうよ? 携帯アプリってイロモノ曲芸みたいなものだと思うんだが。 メモリとCPUに余裕が無いと動かないアプリしか作れないってのも困るけど、 いきなりJavaじゃないJavaの書き方覚えるようでも困るんじゃないかと思うのだが・・・
音の再生で細かく調べてないのだけど こんな症状がでたので報告。対象はD900i。 結果から言えば、同じサウンドを同時に鳴らせない。 オーディオのポートを2つ作る。 MediaManager.getSoundでa.mldからサウンドを作成してbに格納、初期化などする。 ポート0にbをセットして再生。(正常に鳴る) 再生されてる最中にポート1に同じbをセットして再生しようとすると ポート0の再生を停止(内部でstopを呼んでる?)して、 しかもご丁寧にポート0にセットしてたのをはずして(内部nullになる?) ポート1にセットしてポート1の再生が始まる。 比較対照としてN900iで同じことをしたがこっちは同時に再生される。 ちなみにa.mldからcを作成してポート0でb、ポート1でcとすると どっちも正常に鳴る。 ポートの数だけサウンド持たないと同じ音は同時にならないっぽい。
きちんと2つ作成すればいいじゃない
>>191 そりゃそうなんだが、メモリ少ないDで
複数作成はきついなぁって思ったまでw
仕様なんだろうがきついのぉって思って報告したまで
音楽はほとんどメモリー使わないから、気にしなくていいよー。 ほとんどはグラフィック用メモリーの問題(´・ω・`)
>>193 なぬ・・・そうなのか。
空きメモリー計ってやったことないから知らなかったよ。
>>189 やりたいと思ったものからやればいいんじゃね?
嫌々やっても仕方ないだろうし。
いきなりVC++をやってる人もいるし。
それ俺だ。>VC++
Component already added to other Panel このエラーから、一つのメソッドで実装した画像やらラベルは 他のメソッドからは参照できない仕様なんでしょうか? 回避としては、別に複製するしか無いのでしょうか。
>>197 複製というか、コンポーネントのインスタンスを
Panelに貼り付ける分だけ作ればいいだけだと思うけど。
>>198 ありがとうございます。できました。
iアプリ初めてだったので、ビビってしまいましたが
何のことはない、newしてませんでした。
>>186 その遅くなる一部の端末ってどれのこと?
いくらなんでもメソッドの検索がそんなに遅いとは思えない。
>>200 iアプリからはそういった情報を参照できないんですか…残念でつ。
ありがとうございました。
>>186 > 結論として、SophiaCompressは、フリーで使えるツール達が提供する機能を覆すほどの
> 性能的アドバンテージはなさげ、ということでよろし?
サイズを小さくする、ということにだけ着目するならそうでもない。
FOMAの100KBという制限ならば、結構普通に(詰め込まないで)書いて
最後にSophiaCompressとしたほうが、楽だしメンテ性も維持できて
結構メリットでかいよ。
元が大きい分、圧縮率が同じでも得られる利益の幅が違うってことかな。 その分動作速度が落ちるとか?
205 :
デフォルトの名無しさん :2005/07/23(土) 13:44:08
下記のようなiアプリはないでしょうか? 受信したメールの内容を読み取り、電話帳に登録するとか、 スケジュールに登録するとか。
メールの内容はトラステッドでないと取得できない。 また、トラステッドでも取得して中身を解析することができない。 (XStringというデータで取得する。詳しくはリファレンス読め) どういうものを求めているのか知らんが、上の条件のもとでも大丈夫か?
207 :
デフォルトの名無しさん :2005/07/23(土) 15:31:36
>>206 ありごとございます。参考にしてみます。
PCで電話帳・スケジュールを管理して、必要時に携帯にメールして利用したい。
携帯でいろいろ操作するのがめんどくさいので・・・
システム関係で公表されてないクラスが相当あるんだろうな。 勝手アプリで悪用されても、ドコモの信頼問題になっちゃうわけだからしゃーないか…。 そう考えると、システム系まで公開したボーダフォンは自由度高そう。(無謀?)
家の環境でやろとして DoJa3.5をDLしてコンパイルしたら・・・ 「javac: ターゲットリリース 1.1 がデフォルトのソースリリース 1.5 と競合しています。」 って出てました・・・ DoJa4.0だと・・・ 「エラー: サポートされていないエンコーディングです: SJIS_i」 って出ているので 保存している文字コードを変えても状況は変わらず… 当方JDK1.5と組み合わせで使ってるんで 解決策教えて、エロイ使途(つД`)・゚・
>>210 JDK1.3.1をインストールするのが一番楽じゃないかしら。
「Sun.tools.javac.mainを使う」をチェックしる。
>>210 メニューの設定から、Sun.tools.javac.mainを使う、にチェックね。
>>211 つりじゃないとしても、かわいそう。やめれ
214 :
211 :2005/07/24(日) 21:01:32
>>213 いや、釣りじゃないよ。
ドコモが「1.3.1_09でした動作保障しないよ」って言ってる以上、
そのバージョンを入れるのが一番すんなり行くでしょ。
そうは言っても現実的じゃない罠。
1.5でビルドしても何も変わらないんだし、いいんじゃまいか。
ということで
>>212-213 の言うとおりにすれば解決するので、頑張れ
>>210
えらい言われようだな 1.3.1系使ってるのは負け組みか
俺も。1.3.1がこんなにバージョンアップしてるのに!!
おれも 1.3.1 使ってるよ。 今のところとくに不自由ないから下手に新しいの入れたくない。
古くても別にかまわんが、新しいの入れててもDojaの使用には問題ないって話じゃねーの? 段々スレ違いになってきてる罠。
あー、なれてれば1.5でもいいけど、やめたほうがいいよ。 1.4から追加されたString#split()と使って「エミュで動くのに、実機だとうごかねー」とかはまるから。
夏場名物の学生が質問っす。 現在の携帯の通信って赤外線とかHTTPとかが主っぽいけど、 未だiアプリでBluetoothを使った外部機器との通信って実現できないんですか? Bluetooth搭載器があるとは聞くけど、利用しているという話が聞こえないもので。
Canvasクラスを二つ使っているのですが、 setCurrentで切り替える時に、どうしても画面が一瞬白くなってしまいます。 lockしたたまま切り替えたりしたりしてもダメでした。 解決策はないでしょうか? ご存知の方いらっしゃいましたら、よろしくお願いいたします。
>>222 機種によるが、基本的にダメ。
Canvasクラスを1つで作るしかあるまい。
>>223 レスありがとうございます。
ガーン。。。ダメなんですか。。。
今、カードゲームを作っていて、カード対戦中、対戦キャラとの会話移動、
部分を分けて作りました。
キー入力などが整理しやすい、ソースの移植がラクといった理由からです。
一つにまとめるの面倒ですが、チカチカされても困るので
一つにします。ありがとうございました。
iαppliTool for Doja-3.0で、少し前まで全く問題なかったんですが、 突然音が出なくなってしまいました。 多分、音声ファイルの形式をガチャガチャ変えた(ちょっと実験していたんで) ときからだと思います。 PC自体の音(音声ファイル)は出ていて、エミュレータ内のみ出ないんです (実機では音出ました)。 プロジェクトを新規作成したものもダメ、 再起動しても、再インストールしても直りません。 何か原因か対処法に心当たりありませんか?(つд`)
[コントロールパネル] の [サウンドとオーディオデバイスのプロパティ] の [オーディオタブ] にある [MIDI音楽の再生] の [既定のデバイス]は何になってる? そこ調整で直る予感
既定デバイスはMicrosoft GS Wavetable SW Synthになってます。
>224 キー入力は、きちんと変数に一旦プールしているかい? PRESSされたところとかで処理しようとすると、ぐちゃぐちゃしたソースになりやすい。 キーの入力部分(PRESSイベント)と、キーのチェック部分は切り分けよう。
229 :
210 :2005/07/25(月) 20:46:03
みんな豚クス。 とりあえず、コンパイル問題は解決したが 必要が有ればJDK1.4にデグレードしてみるよ これで自分のSO504iと F900iとF901iCで実験が出来る…
230 :
デフォルトの名無しさん :2005/07/25(月) 22:38:12
iアプリでナビゲーションシステムを作るため、図形の回転・拡大のプログラムを作成しています。 画面の中心を基準に回転・拡大をさせようと思っているのですが、 どういう風に回転・拡大させればいいか分かりません。 画面の左上を基準にしたのは、できそうなのですが。 どなたかプログラムやサイトを教えてください。
>>222 setBackgroundでごませられる
>>230 その質問ではどういう風に答えればいいか分かりません。
回転・拡大させようとしてるのは何? Image? Sprite?
233 :
デフォルトの名無しさん :2005/07/26(火) 08:32:46
自分で定義した画面上にある長方形とかの図形です。 プログラムを教えてください
234 :
232 :2005/07/26(火) 09:18:04
>>233 長方形「とか」って何?
ふつうに自分で座標計算して、Graphics#fillPolygon()で描けばいいんじゃない?
そのやり方がわかんないなら、もっと勉強してから来い。
235 :
デフォルトの名無しさん :2005/07/26(火) 09:24:18
アフィン変換でも使ってろ。2〜3FPSしかでらんが。
アフィンは遅すぎるよなー。
>>235 とりあえずアルゴリズムスレにでもいくといいよ。
そういうサンプルがテンプレにあるだろうし。
>>231 即座に画面が切り替わって欲しいんだと思われ。
setBackGroundは好きな色をつけられるが、単色だしね。
アフィンってそんなに重いのか・・・しらなかったぜ。
>>235 左上を基準としたのはできるのなら
左上から計算した結果を保持して
画面中央へずらせばいいんじゃね?
みんなが返答できないのは君の定義したというデータがどんな形なのかとか
一切みえないからなんとも言えないんだよ。GIFとか決まった形でなく
自分で定義したものを見せないでどうにかしろって言うのは不可能。
少なくともこう言う事やってるというのはわかるソースの一部を見せないとな。
他人に0からソースつくって見せろというのはあつかましいにも程があるぞ。
>>235 2Dに限定されるなら自前で透視変換ぐらいすればいいんじゃないか?
sin cosがわかってればベクトルすら知らなくても出来るだろ。
わかんなかったら、中学の算数を再履修することだ
241 :
デフォルトの名無しさん :2005/07/27(水) 14:05:49
>>240 iアプリコンテンツ開発ガイドの詳細編の「com.nttdocomo.systemパッケージ」のページ。
>このパッケージにはトラステッドiアプリにしか使用が許可されない
>クラスやメソッドが多く含まれています。
>ここではそれらの機能については解説しません。
つまりそこに載ってるのがトラステッドでないクラス。
>>241 移動機の上部にある
「α」マークが「DX」に変ればトラスデットiアプリ。
トラスデットでいじれる機能は
住所録/電話帳のようなプライバシーに関わる機能
のようなデータを編集できるそうな。
トラスデットアプリの試験を実機でやるならば
シグナリングテスタがなければ出来ないぞ。
ちなみにFeriCaでも
関係はあるらしいそうだ。
//まぁ、トラスデッドでなくても
//FeriCa機能の一部は使えるけどさ
iアプリの自作ゲームが作りたくてJavaの勉強始めたものです。
内容以前の超初心者質問で微妙にスレ違いかもしれませんが、どうかお許しください。
プログラミング経験はVisualBasicだけです。
基本的にサーバーサイドやデスクトップアプリケーションではなく、
iアプリ作ることが目的でJavaを始めたのですが、基本書を何回か読み終えて次に
何したらいいかわからず迷っています。。
『独習Java』と『Javaで学ぶアルゴリズムとデータ構造』という本でJavaの基本は掴めたつもりなのですが、
これからいきなり
iアプリゲーム開発テキストブック
http://www.amazon.co.jp/exec/obidos/ASIN/4839917361/ みたいな専門の本に手つけちゃって大丈夫ですか?
iアプリ専門の本やる前に、やっぱAWTやSwingなどGUIの知識が必要になるのでしょうか?
iアプリの前にJavaのこの分野は知っておけ、みたいな
急がば回れ事項などありましたらアドバイスください。おねぎします。
>>245 現実的に糞役にたたないAWT、Swingを学ぶくらいなら、
いきなりiアプリのGUIを学ぶことに時間をかける、というのが俺の感想
そのあとデスクトップPCのアプリをJavaでかきたい、というならやってもいいかもしれんけど
JavaGUIの知識はあってもなくても違いはそんなにないよ。 VBやってたなら基本はJavaの本を読めばオッケー。あとはDoCoMo公式サイトのPDFを読んでAPIリファレンスを用意して、いきなり本でもいいけど、まずiアプリの情報サイトがいくつかあるから感じだけつかんでからでもいいと思う。 俺もJavaに詳しくなくてiアプリから入って4200円で本を買ったがよく分からなかったよw サイト回ってこんなふうに書くのかぁー、と覚えた。それから本読んだらすごく分かりやすくなった。 長文スマソ。
まず、テトリスでも作ってみろ。 作ってく途中で「描画はどうするんだろう」「画像は〜」「データファイルを〜」と沢山疑問が出てくる。 そうしたらネットで調べる。 とにかくいったん完成までこぎつけ、実機で動かす。 多分動かない。 原因を探る。直す。 次にゲームを作る時は効率的なプログラムができる。 机上の空論より、まずはやってみる。勉強はやりながらする。
習うより慣れろってやつですね
この業界って、俺含めて学校じゃなくて趣味で覚えた人が多いから、 新人とかに教えろって言われても何を教えればいいのか悩むんだよな・・・ 特に携帯アプリはプログラムの分野でも曲芸に近いからなw
曲芸だよねぇ。 自分で書いてて、時々イヤになるもん。 うはwwなにこの汚物みたいなソースwwOOPって知ってる?wwwwww みたいな。 1クラス1万行オーバーとか有り得ねぇよ。 あまりにも王道が通用しないっつーか、正直者ほど馬鹿をみるっつーか。
プログラミングという技能は、絵描きとか語学とかに近い。 知識だけじゃ何もできない。とにかくコードを書くべし、書くべし!
253 :
245 :2005/07/31(日) 18:32:03
みなさん、アドバイスありがとうございます。 めっちゃ参考になりました。 今のところデスクトップアプリケーションのJavaには興味ないので AWTとSwingには手をつけず、いきなりiアプリ作成始めたいと思います。 iアプリのためだけにJava始めました、ってのは実は後ろめたかったりもするんですが やっとやりたいことをできるので嬉しいです。 Javaの基本も知らないで、『うのみとばし』っていうゲームを作るiアプリ本に挑戦して 一度挫折してるので、急がば回れで着実にゴールに近づきたい…。
むしろJavaを始めるなら、iアプリ(DoJa/3.5あたり)からが良いんじゃなかろうか。 100Kもあれば、大規模なものを書こうってんじゃなきゃ 普通に書いても大丈夫だし CLDCとかコンパクトで非常に見通しが良いから。
だね。 ついでに手持ちの携帯電話で自分の書いたアプリが動くってのは、ちょっと感動する。
ネットワークに接続中にキーイベントで中断する時の手順を教えていただけませんか? ネットワークに接続するためのスレッドを作って、殺すというところまでは考えたのですが、その殺す方法が分かりません
>>245 >>253 最初から『独習Java』や『Javaで学ぶアルゴリズムとデータ構造』だなんて、
硬派な優等生だなぁ…
と思ってたら、手始めにちゃっかり萌え本手つけてたんだなw
まぁガンガレ
>>256 connectは能動的に切断できない。
読んだ瞬間にその部分で処理がブロッキングされる。
>>256 アドバイスが不適切だった。すまん。
殺さなくても「この通信はもう無効だよ」というフラグでも持たせておいて、通信に成功しても失敗しても無視するようにすればいいんじゃないかな?
>>258-259 なるほど…
つまり、その通信(datを読み込みたいのですが)をストップさせるのではなく、フラグを使って、結果が返ってきてもなかったことにするということでしょうか?
iMona等でも「中断しました」と出ますが、実際には無視していたんですね。
ありがとうございました。
>>260 漏れは別スレッドでcloseしてる。
それですぐ中断できてるかどうかは知らんが、
一応通信側のスレッドには例外が上がってきてくれる。
>>261 なんか危ないなぁ(;´Д`)
即中断できるのは魅力だが、全機種でその動きができるかは謎。
JAVAなんだから全機種で同じ動きしろって思うんだがね!
>>254 Java始めるならiアプリからってのは、どうかと思うけど。
現場にいる自分が言うのもなんだけど、
初心者がアプリのプログラムから始めると
かなり悪いコードの習慣がついてしまうのではないだろか。
本人がiアプリ以外に興味ないって言うんだから仕方がないけど…
せっかくVBから巣立って、アルゴリズムの勉強までこなしてJavaはじめてるのに
なんかもったいない気がするなー。
264 :
254 :2005/08/03(水) 23:08:02
>>263 それは昔ながらの携帯Javaプログラムを想定しているから、じゃないかな?
ちゃんと基本クラスやインターフェース作って継承して、って言う普通のJavaの方法でやるなら
CLDCを始めランタイムがコンパクトにまとまっている分、全体が把握しやすくて
J2SEよりもJava学習には向いているんじゃないかという話なの
# もちろんJ2MEでも良いんだけど
容量もDoJa3.5以降は100Kあるから、ある程度のものなら普通に書いてもだいたい入っちゃうしね。
だねー。
凝った内容のゲームを詰め込もうとかしだすと、途端に修羅道逝きだけど、
そこまでしなければいいだけのことだし。
素で書いた30KBでも、相当量のコードが入る。
Javaの勉強の素材として、携帯電話は悪くないと思うよ。
>>264 の言うとおり、シンプルだしね。
うむ。iアプリを作ることで、自分が普段持ち歩いてる携帯の上で、 自分が作ったプログラムが動く。これは非常におもしろいこと。 新しい言語(Java)を学ぶモチベーションとして大いにアリだと思う。 言語に対するモチベーションは、初心者からある程度のところまで 行くのに重要だしね iアプリで、ある程度の規模のお手本になるような(綺麗な|巧妙な) ソースコードってどこかにないかな
アスキーの入門本シリーズにあるサンプルは?
素直にん・ぱかはどうだろか。 サイトデザインが非常にナニでアレなので、抵抗ある人もいるかもしれないが。
269 :
デフォルトの名無しさん :2005/08/04(木) 21:06:36
すみません。盛り上がっている所申し訳ないのですが、 ちと音まわりについて、お聞きしたい事があります。 今、容量を節約する為、一括にBGMデータを読込まず、 個々のステージ単位でBGMデータを読込むような形で 処理しようとしているのですが、なぜか最初に読込んだ BGMデータが他のステージでもずっと再生され、 肝心のそのステージのBGMが再生されなく困っています。 やってる事は、クラスAudioPresenterを使用してplay()で BGMを再生し、BGMとなる元はクラスMediaManagerを使用し、 getSoundで、BGMデータを入手しています。 このgetSoundを利用して、他のステージに行く度に getSoundで新しいデータを入手し、 クラスAudioPresenterでのsetSoundで、 再度設定するようにしています。この際、古いデータは System.gc()で消去しています。 そこで懸念に思っている個所が、AudioPresenterで 最初にsetSoundを設定したデータアドレスをずっと見ている ような気がしてならないのですがどうでしょうか?
>>269 間違いなくおまいさんのプログラムがおかしい
>>269 素直に音の数だけMediaSoundを用意しなさい
272 :
デフォルトの名無しさん :2005/08/04(木) 22:30:56
・・・あぃ(´・ω・`)
>>269 同じことやったことあるがそんなバグはでなかったぞ?
なんか手順飛ばしてるんじゃね?
セットしたアドレスを見てるって言ってるがんじゃ再セットしてない??
2回目以降のスクラッチのJAR内のデータからの場合。
この処理の前に音はちゃんと止めておく。定義書いてないけど判るよね
sound.unuse();
sound.dispose();
in = Connector.openInputStream("scratchpad:///0;pos="+位置+",length="+ファイル容量);
jar = new JarInflater(in);
in.close();
sound = MediaManager.getSound(jar.getInputStream("ファイル名"));
sound.use();
bgm.setSound(sound);
jar.close();
274 :
273 :2005/08/05(金) 11:16:35
書いてないけど、
上のソースはtryで囲ってやるように。
gcもつかってないけどどっかでやればいいw
というか
>>269 のソースがどうなってるのか見たいな。
unuseやdisposeしたデータを読みに行く・使用するとエラー出ると思うんだが。
鯖の転送量を減らすのにJarInflaterを使うのは正しいですか?
>>275 転送量だけ減少させるならまぁ、間違いじゃない。
圧縮してでかくならなきゃねw
でも展開時、多少遅い機種もあるから
スピードが必要となる部分のデータには向かないこともある。
>>276 ありがとうございます
P505が特に遅いようですね。
2kBのDATを20個ですが様子を見ながら使うことにします。
MediaImage.use()し、MediaManager.getImage()し、Image.getImage()するとnullが返ってきてしまいます。 この場合、変な画像を使うんじゃねぇ!ということでしょうか?
>>278 変な画像ならExceptionとかがでるんじゃね?null返して終わりとか有るかの?
初期化したImage変数(最初はnull)でuseやgetImageでException出してるのに
try-catchで例外処理してないままで変数を参照してる希ガス
>>277 目安にしかならないけど、8KBのテキストデータを
1KBに圧縮したZipの展開に、P505で1秒前後だった。
これが許せるかどうかは、状況次第だよね。
裏スレッドで展開する等して誤摩化す手もあるし。
>>278 >MediaImage.use()し、MediaManager.getImage()し、
うーん?
MediaImageはMediaManager.getImageしなきゃ作れないはずなんだが。
ソフトキーのラベルって左右だけしか設定できないんでしょうか 決定キーのラベルとして中央に設定したいんですけど
processEvent内で重い処理(たとえば通信)を やっては駄目だという話についてですが 業務アプリとか、完全にイベントドリブンで処理してる場合はどうしたらいいんでしょうかね? 別途スレッド立てて、その中で処理?
>>285 当然。
システムコール内で時間のかかる処理をするなんて愚の骨頂ですわ。
P901i でお知らせランプ点灯、アプリを作っているのですが、 着信ランプがどうしてもプログラムで点灯してくれません。(つ_T) 他の 505 だと点灯するのですが、 P901i は着信ランプを制御出来ないのでしょうか?
>>285 喪前が業務やってるとする。客から電話で商品の注文がある(イベント)。
伝票処理して商品を手配してトイレ行って昼ごはん食べてうち帰って寝て
次の日出社して客に「届きましたか?」って聞くまで、ずっと最初の電話を
繋ぎっぱなしじゃまずいだろう、というのがスレッド化の発想。
>>288 ずっと最初の電話を繋ぎっぱなしじゃ
「別の注文(イベント)を受け付けられないから」
まずいだろう
と書かないと混乱させるだけだぞ。
(電話は1本しか引いてないと思いねぇ)
290 :
285 :2005/08/12(金) 19:17:47
みなさんサンクス! 正直面倒ですがー、仕方ないですね
イベントドリブンで思い出したんだけど。 IApplication#resume()ってあるよね…サスペンドからの復帰の時に呼ばれる奴。 あれ、AudioPresenterのMediaActionにSTOPイベントが 飛んでくる「前に」呼び出しやがる端末が結構な数あるのな…。 ある日のこと。STOPが飛んできたら、その時点での再生時間を控えて、 resume時にplay(time)とかしてやることで、サスペンド直後の位置から 音を再生しなおす、復元処理を仕込もうとしてたんですよ。 てっきりサスペンド発生直後か、最低でもresume()呼び出し前には AudioPresenterのSTOPは飛んできてるものかとばっかり(実際にエミュレータはそう動く) 思い込んでて、resume()の中にAudioPresenterの復元処理を入れてたんだけど、もうトラブル続発。 調べたら、resume()の呼び出し完了後にSTOPが飛んでくる端末の多いこと。 腰が砕けた。 結局、STOPイベントが飛んできたらフラグを立てて、resume()が呼び出された時も別のフラグを立てて、 双方のフラグが立ってるAudioPresenterだけを復元、とかして解決。 フラグをチェックするタイミングは、イベントとか一切関係なしのメインループん中。 一応これで問題なく動いてるけど、納得いかねえー。 resumeかかった後にSTOPが飛ぶって普通おかしいだろ! resumeの中で文字通りのレジューム処理できなくてどうすんだよ! その辺どー考えてんだ携帯屋さーん! と思った。 いいんだけど。
292 :
デフォルトの名無しさん :2005/08/13(土) 16:02:18
iアプリでゲームを開発したのですが、F506iでテストしてみたところ どうしても途中で動作がおかしいところがあります。 他の機種だと、正確に動くのにF506iだと、途中でフレームがスキップ してるというか、急に一瞬画面描画がとまって、先の方へ進んでしまいます。 ちょうど、時間が飛んだ感じです。 フレーム間の時間がその瞬間だけ、3倍以上になっていて、間の処理が 飛ばされているようですが、それが起こるタイミングが完全にランダムです。 (特定のメソッドに依存しません) いろいろ原因をネット上で調べてみたのですが、何が原因かさっぱりわからず・・・。 誰か助けてください。orz
>>292 N505iだとその現象に良く遭遇したね
原因が同じかどうかはわからないけど
N505iで解決した方法は、runメソッドとpaintメソッドの
処理回数を1ループ一回ずつにするという方法で解決したよ
1処理1描画っていう感じかな
あと考えられるのは、paintメソッド外で描画してるとかかなぁ
私は試したことないのですが、あまりよろしくないらしいです
あまり大した助言になってないね・・頑張ってくだされ
>>292 293がいってるがN505だと描画パイプラインが非同期だからおきる症状らしいね
unlock()する手前か後でgetPixelsでもやって、描画パイプラインを一旦ストールさせてみると良いかもしれん
>>291 サスペンド前にSTOP飛ばないのは携帯のバグくさいなw
296 :
291 :2005/08/14(日) 05:47:55
>>295 それが結構な数の端末でそうなるんだ。
少し前のことなんで、ちょっと具体的な端末名は思い出せないんだけど、N900とかが
多分この口だったと思う。
他のメーカーのにも散見された。
絶対数はそれほど多くないけど、優等生のP506なんかもそうだったかもしれない。
いま確認取れる環境にいないので、濡れ衣の可能性もあるから、断言はしないけど。
落ち着いて考えると、サスペンドはアプリの処理に優先する絶対的な割り込みなんで、
STOPイベントの応答待ってられないというのはわかるんだけど、せめてresume()前に
全部のイベントキューは片付ける実装になってて欲しかった。
俺はこのことを「普通こうだろ」と勝手に思い込んでて、確証持てるまでに随分時間が
かかっちまったよ…時間返してって感じだ。
それと直接は関係ないけど、AudioPresenterがらみで
>>292 に。
ひょっとして、AudioPresenterのstop()呼び出し直後にplay()かけてない?
Docomoの資料にもあるんだけど、F506固有の問題で、stop()呼び出しから
30〜40msecあけてからじゃないと、play()が誤動作することがある。
漏れもゲーム作ってて、原因不明のストール(突然3秒程度止まる!)に悩まされた。
解決方法は2つあって、ひとつはstop()呼出し後に少しウエイトを入れてからplay()を呼ぶようにすること、
もうひとつは、STOPイベントを監視して、完全に音の再生が停止したのを確認してからplay()を呼ぶようにすること。
前者はリアルタイム系のゲームだと厳しいので、漏れは後者のアプローチで突破した。
F506を叩き割りたくなった記憶があるよ。
何かの助けになれば幸いです。
そういやF505〜は、待ち受けアプリのスリープからの復帰の際、 活性化イベントが飛んでくるより先にメインスレッドが動き出したなぁ…。 他の携帯が全て逆だった(理屈的に考えてもそうだろうに)から、原因さっぱりわからなくて難儀した。 仕様バラバラすぎだっての。
へぇーすげえー
あれ? 待ち受けってMApplication#sleep()の直後から実行が再開されて、 そこを抜けた後でイロイロあるんじゃなかったっけ?
a++; sleep(); b++; sleepでまず止まる。 普通の端末は、復帰イベントが飛んできて、それの処理が終わった後b++;が発動。 F505i〜は、さきにb++;が処理されたりとしばらくしてから復帰イベントが飛んでくる。 結構飛んでくるの遅い。100msは超えてると思う。 理由として、私がこういう処理をしていたから。 ・100msごとの毎フレームで「非活性になってからのフレーム数」をチェックし、50フレーム以上経っていたらsleepさせる処理を組み込んだ。 ・復帰イベント側に「非活性(略)フレーム数」を0にリセットするコードを書いた ・F505iだけ、復帰した直後にすぐにsleepしてしまう(カウンターがリセットされず、毎フレームチェックがもう一度きてしまっている)
待ち受けはワケわかんない仕様に振り回されることが多いよね…。 特にF505のそれはアホかって感じだった。
302 :
299 :2005/08/14(日) 15:52:49
>>300 > 普通の端末は、復帰イベントが飛んできて、それの処理が終わった後b++;が発動。
> F505i〜は、さきにb++;が処理されたりとしばらくしてから復帰イベントが飛んでくる。
iアプリコンテンツ開発ガイド for DoJa-3.0 〜詳細編〜 第3.1版 のP121には
> sleep()メソッドを呼び出したスレッドは、休眠状態から活性化状態に遷移すると
> sleep()メソッドから復帰し、それに続くロジックの処理を再開します。sleep()メ
> ソッドからの復帰は、MODE_CHANGED_EVENTの通知に先立って行われます。
「通知に先立って」ってことなのでb++が処理されてからイベントが発生するF505iの
実装の方が正しいんだ、といえるでしょう。またスレッドは活性化と同時に再開する
とあるけど、どのタイミングで再開するかは規定されていないと思った。
もしかしたらMODE_CHANGED_EVENTのprocessEvent()直前もしくは直後に再開するタイ
プと、本当に活性化直後に再開するタイプがあるんじゃないかな。その辺に300のロ
ジックとの間に不整合が起こっている、とは考えられないか?
エミュで変な動作を確認したのでメモ。 コマンドラインで doja.exe を動かしているんだが、 ImageStore.selectEntry() を呼んでファイルを選んだ後、 スクラッチパッド (hoge.scr) が保存される場所が %iDK%\lib\multimedia\sp になる。 ファイルを選ぶダイアログでキャンセルすると発生しない。 iDK3.5と4.0の doja.exe, doja_g.exe で確認。 .\sp に保存するって仕様で、 selectEntry の呼び出しでカレントディレクトリを変更してると勝手に予想。 で、カレントディレクトリからファイル選べばいいのでは?と思ったけど、 %iDK%\lib\multimedia 以外から選べないし… 誰か対策しらない?
ドキュモにゴルァする
305 :
292 :2005/08/15(月) 00:42:52
レスありがとうございます。 試してみましたが・・・直ってないですorz どうも、タイミングを計ってみたら、しだいにずれていって 時間が飛ぶタイミングで一気に補正されているようで・・・。 まさにフレームスキップがおきてるみたいです。 他に同じ現象起こってる人いないですか?znorz
>>302 仕様書上ではそう書いてあるんで、F505iが悪いわけじゃないのは分かるんだ。
だが、他の携帯が全てやりやすい方法で統一されていたのに、唐突にF505iだけが裏切りおったのが(´・ω・`)
>>303-304 ドコモゴルァで思い出したが、setPixelsが異常に重いの治してくれんかなぁ<エミュ
240*240のsetPixelsするだけで30秒近く止まるんだが…。
>>302 sleepのメソッドからの復帰
と
MODE_CHANGED_EVENT
の順番が規定されていても、ほとんど意味ないんじゃないの?
sleep()からの復帰
<コンテクストスイッチ>
MODE_CHANGED_EVENTの通知
<コンテクストスイッチ>
b++
という動作をする可能性は、依然として排除されてないと思うんだが。
308 :
302 :2005/08/15(月) 10:03:03
>>307 > という動作をする可能性は、依然として排除されてないと思うんだが。
その可能性はあるけど、それが何か意味があるか?
302で言ったのは、300の方法ではDoJaの仕様上うまく動かないことがある、ということだけ。
「いや仕様上は必ず上手く動くはずだ」という証明ができなければ
F505iで動かない300の方法が「正しくない」ことには変わりないよ。
sleep()の直後は、CHANGED_EVENT内で立てるフラグの同期待ちをいれりゃ済むことじゃないのか
310 :
303 :2005/08/15(月) 21:38:26
jam を相対パスで指定するのがよくなさそうなので、perl で応急処置してみた。 --- doja_g.pl --- use File::Spec; $emulator = 'c:\iDKDoJa4.0\bin\doja_g.exe'; for (0 .. $#ARGV) { $n = $_; $ARGV[$n+1] = File::Spec->rel2abs($ARGV[$n+1]) if $ARGV[$n] =~ /^-[ij]$/ && $ARGV[$n+1]; } system $emulator, @ARGV; -------------- %projdir%> perl doja_g.pl -i .\bin\hoge.jam とかする。 ところで、エミュレータだと ImageStore.addEntry で画像を保存できないのは仕様?
311 :
305 :2005/08/15(月) 22:13:14
問題自己解決しました。 毎フレームSystem.currentTimeMillisで時間をとっていたところを AudioPresenterのgetCurrentTimeに変更したところ、問題が消えました。 また、同じ問題に遭遇する方がいたときのために一応ご報告しておきます。
>>311 ちょいまち。
getCurrentTimeって、演奏中のAudioPresenterの
再生カーソル取ってくる奴だろ?
あれって任意の場所から音を再生するplay(int)とかのための
関数であって、それで音以外の処理の同期取るのって
何かおかしいと思うぞ。演奏終了したらゼロに戻るんだし。
音の同期処理に使ってるなら、一向に構わないとは思うんだけどさ。
313 :
305 :2005/08/16(火) 03:30:27
自分の場合は短期的に時間差分が取れればよかったのと、曲が長めだったのが 助かりました。まあ、0のときだけ例外的にSystemのほうを使ったりしてます。 でも、考えてみたらそういう使い方じゃない限りは根本的な対策になってないですねorz
>>292 repaint()で再描画される仕組み(paint()内で描画する)だと、1回の描画に
かかる時間が長いと機種によっては画面の更新がうまくいかない。
(描画が別スレッドで回るからだと思う)
基本的な質問で申し訳ないのですが、サウンドに関してです。
勝手アプリに音楽をつけたいと思っているのですが、うまく音がなりません。
対応させる機種は900i,901iとなります。
http://www.saturn.dti.ne.jp/~npaka/ibook2/izon.html ↑ここにあるPSMPlayerを使って変換しているのですが、
MIDIからMLDは実機で確認できたのですが、
WAV(効果音)からMLDにした場合鳴りません。
出来上がったMLDをPSMで再生すると「声」にチェックが
入っているのですがこのためでしょうか?
またDojaで扱えるサウンド形式はMLDのみなのでしょうか?
上記サイトには、WAVも利用できるように書いてあるようなのですが、
試したところなりませんでした。
よろしくお願いしますm(_ _)m
316 :
307 :2005/08/17(水) 02:34:05
>>308 いや、だから「意味がない」って言ってるんだけど。
仕様上「先だって」と規定してあるとしても、何の順番も保証されていない、ってことが言いたいだけ。
だったらそんな規定するなと。
で、漏れらは「先だって」なんて幻覚に惑わされてはいけないと。
>>315 そのページのPSMPlayerの次に書いてある
WAV2MLDを使ったほうがいい。
ちなみにNは、さらに下に書いてあるYAMAHAの
変換ツールを使う。
機種によってWAV2MLDの音質劣化が酷いときあるので
部分的にPSMPlayerを使うといいかもね。
900以上だとPSMPlayerに対応する着声メーカーないんじゃなかったかな?
同じメーカーの505用で変換できるかというと、PCM音源が505と900で異なる
メーカーがあるので注意。
318 :
315 :2005/08/17(水) 13:46:45
>>317 ありがとうございますm(_ _)m
WAV⇒MLDの場合は機種別に作る必要があるのですね。
機種依存が強そうなので、テスト実機が1つしかないからつらいなぁ・・・。
MLDの効果音って探したのですがなかなかないんです(T-T)
>>318 900/901iだけで10機種以上あるからね。
505、506、700入れると50種類くらいになる。
新機種が発売されるたびにその機種用の音データを用意する必要があるし
機種依存を気にするならMIDIで効果音を作るか、効果音を諦めるかだね。
有料は別として無料iアプリでBGMと効果音の両方が鳴るのは
あまりみたことないな。
>>315 に便乗です
私もP901i用に勝手アプリを製作しております。効果音を入れたいと思いWAV2MLDを使ってWAVEをMLDに変換しましたが、このソフトではP901i用に変換する際サンプリングレートの上限が8kHzになってしまいます。実機で再生したところ酷い音質でした。
大手企業が提供する有料のアプリでは綺麗に音がでてるのもあるのにどうしてこうも違うのか分かりません。
やっぱMFiToolの力は絶大ということなのでしょうか?
謎のスーパーツールMFiToolsをnyに流してくださいo(><)o
>>311 System.currentTimeMillisで毎フレーム制御してるが同様の症状は出ない。
原因として考えられるのは
1:描画命令呼び出しをrepaintで呼び出してる。
2:単純に描画が重過ぎる
3:処理のどこかでフラグが立つまで永久ループ、みたいな処理がある。
4:希望しているフレーム速度が速すぎる。
などなど。
midiをヤマハのツールで変換しても糞音悪いね…
>>324 それはツールの問題ではなくて
携帯に搭載されてる音源の問題だよ
スピーカーのしょぼさもあるから、イヤホンで聞いてみそ。
327 :
デフォルトの名無しさん :2005/08/19(金) 00:42:52
デバッグ待機にならないというのがまずわからないけど、 待機のメッセージ自体がそもそも出ないの? それとも、その後のリモート接続がうまくいかないの?
329 :
デフォルトの名無しさん :2005/08/19(金) 13:39:26
>>328 待機のメッセージがコンソールに表示されません。
DO-JA4.0+Eclipse2.14で駄目でした。
Eclipseで設定したのはDO-JAのパスだけです。
>>327 普通にエミュレーターで実行はできたんだよね?
331 :
327 :2005/08/19(金) 19:32:59
>>330 はい。エミュレータでの通常起動はできます。
Eclipseを3.1にしましたけど同じ現象でデバッグ待機できませんでした。
332 :
デフォルトの名無しさん :2005/08/20(土) 12:08:30
待ち受けiアプリを作成しています。待ち受けアプリで、電池残量を取得し て、電池が少なくなってきたら、待ち受けアプリを終了、停止、もしくわ 電池を消費しないような状態にしたいのですが、terminate()でアプリを 終了しても、また待ち受けアプリなので起動してしまいますし、休眠状態 へ移行させてもシステムイベントがあれば、再び動作してしまい、どのよう にしたらいいか困っています。どなたがご存知でしたら、ご教授願います。 ダイアログ表示中は、アプリの動作は停止しているのかはわかりませんが、 停止しているのなら、ただ電池が少なくなったとのダイアログをだせばいい と思っていますが、よくわかりません。
333 :
デフォルトの名無しさん :2005/08/20(土) 12:45:08
>>332 >電池が少なくなってきたら
すみません。電池がフルか、フルでないか、充電中の3つしかありません。
334 :
328 :2005/08/20(土) 16:01:15
J2SEをインストールし直したら、デバッグできました。 お騒がせしました。
JavaでWeb開発をやっていたものなのですが 携帯開発って敷居が高いですか? 専門学校がゲーム系だったのでアルゴリズムみたいのはわかります。
337 :
デフォルトの名無しさん :2005/08/20(土) 22:15:26
SH901isで使えるiアプリを作ろうと考えています。。 どうしたら作れるのでしょうか。。 すごく初歩的な質問ですいませんが、教えてくださる方はお願いします。。 リンクを教えてくださってもありがたいです。
338 :
デフォルトの名無しさん :2005/08/20(土) 22:16:51
>>337 なぜドコモのHPに行かないんだ?
技術資料ダウンしてよく読め
話はそれからだ
ちなみにJava知らないとキツイゼ
こんにちは AudioPresenterのplayとstopを同じボタンに割り当てて 演奏中に押せばstop、演奏してないときに押せばplayとしているのですが、 連打すると、音が止まらなくなります。 どうしても止めたいのでまったく別のボタンに、 stopを割り当てたのですが止まらなくなります。 これはなぜでしょうか? 再生したオブジェクトを他のボタンに割り当ててもstopが効かなくなるのは不思議です。
stopに失敗してるはずなので、catchしたエラー内容をまず調べるべし。
>>340 ん〜〜〜〜それだけでは・・ちなみにエミュの話?実機?
とりあえず連打する事によって出るバグってことは
連続でストップと再生を短い間隔でやってるからだと思う。
実機の場合、基本的に連続で再生したり止めたりするとエラーになる。
try〜でエラー出てないか拾ってみるといい。
後エラー出てしまうと正常動作しないことも良くあるし。
もし再生中かどうかを自作のフラグで制御してる場合は
エラーが発生した場合にフラグをちゃんと処理してるか。
とりあえずサウンドを操作する場合は短い間隔で
操作しないようにプログラミングしないとダメ。
グハァ! try catch必要だったんですね。。。 試してみます。 できたら報告いたします。
344 :
340 :2005/08/23(火) 17:55:41
すいません、try、catchで拾えません。 stopとplayでやったんですけど、ダメでした。 拾う場所間違ってますか? ちなみにエミュじゃなくて実機のみ発生します。 AudioPresenter.AUDIO_STOPPED: 辺りを利用してフラグたててやってみます。 結果をまた報告します。
345 :
340 :2005/08/23(火) 20:13:37
すいません。解決しました。 やったこと、ボタンが押されたらフラグをたてて mediaActionにて、停止、再生が確認されたらフラグを外すという処理をいれました。 このフラグは、ボタンが有効かどうかのフラグです。 今までは、playかstopした、直後にフラグを立てていたのでうまくいかなかったようです。 ありがとうございました。
報告お疲れさん。 即座に止まるかどうかは保証されてないからね。安全策でいこう。
HTMLからiアプリを起動する場合にパラメータを渡したいです。 しかし、たとえば下記のように同一アプリをリンクによって別パラメータで 起動するやり方がわかりません。 link1(Param1で起動) link2(Param2で起動) link3(Param3で起動) 上記の場合複数の<OBJECT>タグを同一ID(アプリ名)にしないといけないことから、 1ページ内で3つの違うパラメータを配置できないことに気が付きました。これをやる と、どこをクリックしても一番初めのOBJECTタグが有効になってしまうのですが、 回避策はあるのでしょうか?
ページを分ける。
アプリをコピーする。
350 :
347 :2005/08/24(水) 19:03:33
解決しましたDATA値とID、ISTA値は必ずしも一致してなくていいようです。お騒がせしました。
>>346 音関連は端末ごとの動作が本当にバラバラで困り果てるよ…
もう安全なこと以外したくない…
iアプリDL元以外との通信って出来ないんでしょうか? 以前、505i辺りの頃に「出来るようになった」と見た記憶があるんですが Doja4.0のガイドには >HttpConnectionに渡すURLのプロトコル、ホスト名、ポートは、 >iアプリのダウンロードもととなったURL(ADFのPackageURLキーでの指定) >と同じでなければなりません。 と書いてあるので。 私の勘違い? それとも仕様逆戻り?
>>352 トラステッドiアプリ(iアプリDX)ならできる。
公式の資料に載ってる。
354 :
352 :2005/08/28(日) 03:40:44
>>353 なるほど。
出来るといっても限定つきだったのですね。
謎解決。アリガトンです。
厨房以下のレベルだにゃ DXトラステッドと、そうでないものの区別も知らないとは、(゚д゚)
おっと悪口言ったら、先に出てたか(゚д゚)
大丈夫か?
誰でも始めたときは厨房以下。
ちょっと出来るようになるとすぐ調子にのる。 それがプログラマークオリティ。
エスペシャルなプログラマクオリティの俺様が降臨あそばされましたよ。 ところで、505iまでは「機種ごとの問題点」がPDFになってるけど、 それ以降は放置プレイされてるよね? これまでのものも、必ずしも資料として充実していたわけじゃないけれど、 900、901の特定機種でしか出ない問題とか、マイナーな506端末でしか出ない問題とか、 相変わらず山ほどあるので、その辺の情報が公開されないと、こっちで 蹴躓きながらノウハウを蓄積するしかないので、非常に困る。 今からでも復活してくれないかなあ。 ていうか、そもそも何で消えたんだろ。 ・メンテナンスに秋田 ・以降の端末にはバグなんてないと信じてる ・以降の端末のバグの多すぎさを理解してるので、藪を突付いて蛇を出したくない さあどれだ!
・バグのことを仕様と呼ぶようになった
・公式アプリの会社にだけ資料を渡して、勝手アプリに圧力をかける
公式アプリの会社にも、901以降の機種バグきてねーぞ。
・めんどくさくなった どうせ実行環境統一されるんだろ?
でも、まだ先の話だし。 漏れらにとっては、今が大事な訳だし。 700iSでしか出ないバグとか、知らねえよって感じ…。 誰かたすけてぽ…。
んぱかさんなら…んぱかさんならなんとかしてくれる…!(AAry
布留川大明神様にお頼みするのじゃ 本も買えよ ちょっと高いけど
ちょっとぐらい自分で努力したら?
>>368 中間鯖通らないんだったら、2chの各鯖で配布しないと駄目じゃん。
中間鯖使うなら、既にあるし。
>>370 0chとかのスクリプトに使う個人用じゃないの?
話それるがiアプリベンチ見てたらSA700isきてたな。 スペック・ベンチ結果だけ見てる分にはDとNの悪いところだけ引き継いだ機種だろこれw な〜〜〜〜〜んか嫌な機種依存がありそうな匂いがぷんぷんしてますが・・・orz
近いうちに、見たらアプリ屋は卒倒するような携帯が発表されるから覚悟しておいたほうがいいよ…。
>>373 何気に楽しみだが、今作ってる携帯だとすると
出るのは来年の夏頃かね?
>>373 予想できるのは・・・507、701、902か?
もしや・・・・・・・・・1000シリーズが本格始動とか?!
あれ…か。 悪夢再来 だろ?
質問なんだけど自作iアプリを携帯のブラウザ使わずに 実機にインスコする方法って無いの? とりあえずカードリーダーと赤外線通信用のUSBデバイスはあるんで 一応写真などはPCと受け渡しできるんだけど。
ないーよ。 少なくともそういう建前。
>>368 技術的には可能だがやる気的に不可能('A`)
381 :
378 :2005/08/31(水) 15:44:34
>>379 ありがと。
やっぱ無理か。イタい・・・
>>368 技術的には確かに可能だろうがこれって掲示板のシステム
そのものも作れって事だよな?既存のものでなくて。
よっぽどの暇人でないと作らないと思うけどな。
俺は技術的に出来るとは確信できるが、自分の技術がそれに追いついてないから無理w
讃岐見てたのかよ JaneMobileマダァー?
>>377 Yes.
やっと居なくなった過去の亡霊が復活…。
>>384 それに近いこと、去年仕事でやってたわ
ボタン1つで新着記事全部ダウンロードしたりナ
讃岐に、iアプリの知識があるとは思えんな
過去ログはほとんどdat落ちだったので質問したいのですが、 Doja2.0以前の画面サイズ(120x120)のアプリをDoja3.0以降の 機種で走らせたいのですが、何かプロパティとかスイッチとかで 240x240のサイズに簡単に変更できる方法はありますでしょうか? つまり画面が1/4になってしまうので、フル画面で見られないか ということですが。
DojaにVodaみたいな画像拡大機能は無い。
オフスクリーンで描画して drawScaledImge 。 どうしてもやりたいならだが。
2.0で動いてたアプリなら、3.0でdrawScaleImageかけても きっと十分な速度で動くだろね。 Vodaの拡大機能、あれは羨ましかった…。 今は昔の話とはいえ、最初から標準でつけといて欲しいくらいだったよ…。 120x120と240x240じゃ雲泥の差だもんねぇ。
395 :
デフォルトの名無しさん :2005/09/02(金) 02:14:21
どっちにしろ拡大したらクオリティがた落ちだわな…
まあ、それでも遊びたいゲームはあるわけで。 ドット絵ガタガタなのも、味があっていいんじゃん?
2.0の制限ギリギリまでがんばってつくったアプリを 3.0で240*240でつくろうとすると大抵アウト。 画像を単純に2倍して持たせようとするとメモリーが足らないし 拡大縮小を使うと補完方法が機種依存なため見た目が変わるし かなり処理速度が落ちる。画像を大量に使うソフトは特にだめだな。
398 :
391 :2005/09/02(金) 14:01:32
みなさん、どうもありがとうございます。 やはり簡単にはいかないようですね。 まあコツコツと変換作業をするしかないようですね。
>>398 やるかどうか判らないが120か240かは
画面サイズゲットしてそこから判断すれば良い。
携帯の画面サイズに合わせてアプリそのものを2個つくるほうが良いとは思うけどな。
N504とかFoma2000番台のは160とか中途半端にデカイしな画面。
こだわりだすとキリが無かったりする。
メモリー量は2倍にしかのびなかったのに、使う画像の表面積は4倍になったからな。 単純に考えて半分のクオリティー(´・ω・`) あと、504シリーズの場合128*128を求められることが多かったので 移植する際座標を単純に2倍にするだけではダメな罠。 悲しかった。でもおかげで移植料金がきちんととれたわけだがw
Vodaも他に問題があって、単純に拡大するだけでは駄目だと聞いたが…
いちいちアプリ側のJADファイルに「拡大しますよ」という設定を埋め込む必要があった。 携帯持ってる側が自由にできりゃよかったのに、結局アプリUPしなおしですよ。 VodafoneはそれでなくともUPめんどいのに。
>>402 > いちいちアプリ側のJADファイルに「拡大しますよ」という設定を埋め込む必要があった。
「拡大しないでよ」って書かないと、勝手に拡大じゃなかったか?
どちらにしてもそれだけで済むんだから楽だよな。
実機がなくて確認できないので質問。
アプリのダウンロード数をCGIでカウントしたいんだけど、jam に
PackageURL = count.cgi/foo.jar
てしといて、CGIで
print "Location:
http://#######/foo.jar\n\n ";
とかで飛ばした場合、ちゃんとダウンロードされる?
んー、そういう少しでもトリッキーなことは、最初から動かない端末があると考えて手を出さない。 iアプリに関してはすべての意思決定をめっちゃ安全サイドに振ってる。 とりあえず、普通にアクセスログを取れるサーバを利用するのはどうだろう。
408 :
406 :2005/09/05(月) 19:59:03
>>407 やっぱりダメかな…
アクセスログは定期的に取りにいく必要がでてくるのがきつい。
リダイレクトじゃなくて、CGIで直接出力するんだったら大丈夫かな?
jar取得時のキャッシュの値を見た限りだと、
EZアプリみたいに partial content 要求してくることはなさそうだし。
409 :
バックス :2005/09/05(月) 21:11:44
宣言します! 自分は『盲目者用文字情報音声読み上げ携帯電話操作アシストJAVAアプリケーション』の制作を時間がかかろうとも完成させDoCoMoに無償提供することをここに宣言します。 現在構想している機能は 『ウェブ文字情報読み上げ』 『送信内容の音声読み上げによる確認』 『受信内容音声読み上げ』 『壁紙、着信音及びアラームなどの設定の音声アシスト』 『電話帳相手先名称読み上げ』 これらの機能です。 操作方法は音声ガイダンスに従い、ボタンプッシュで各機能を使えるようにします。 これが自分の最終目標のアプリです。 これで自分は逃げられなくなりました。 何年かかろうともここに『宣言』したので制作します。
>>409 ドコモの仕様が変わらない限り一生ムリだよ?
できるだけエロい声で読む奴にしてくれ('A*`)
>>410 ウェブ制作板では「普通に可能」って言われましたが?
DoCoMoのJAVAならば追加データをアプリ起動中にも取得できるから容量的には問題ないだろ?
いろメロのパケラジも音声データを大々的に使用しているので音声は問題無し。
ブラウザは2chブラウザimonaが存在しているのでおk。
残りは文字読取りのプログラムだね。HTMLソースを読取ることはCGIで可能。
文字認識は色々と頑張れば何とか…
あとは色々なものを応用統合、機能追加すれば実現可能だと考えているのですが?
簡単にはいかないでしょうが…
『送信内容の音声読み上げによる確認』 『受信内容音声読み上げ』 『電話帳相手先名称読み上げ』 このへんはトラステッドじゃないと無理そうだな。 まぁ、認められるまでがんがれ
>>411 レス忘れ
ん〜……却下!
音声はテキトーに女友達の声を使うさ。
うーん。応援しよう。 しかし音はサーバーに生成してもらう必要があるな。 通信がガンガン発生しまくるからDOCOMOから警告くらいそうだが、勝手アプリなだ大丈夫だろうか。
声は能登な
芳ばしくなってまいりました(゚∀゚)
SA701 が出るよね サンヨーの初ドコモ機 アプリの処理系にヘンな癖がないか心配 中身が N か P か SH なら楽なんだが
>>412 氏の周りには盲目の知り合いがいるんかね?
俺は周りにはいないからそういったアプリの発想は無かったよ
がんがっていいのを作ってくれ
iアプリの立ち上げそのものは手動なのかな。。。
421 :
バックス :2005/09/06(火) 01:54:03
レス付いてますね
>>413 その辺は色々と試してみます。
>>415 応援ありがとうございます。
音声はそうなるでしょう。
音声の母音をイジって使うか、50音全てに当てはめるかで通信量が変わりそうなんで実際に音声データを作ってみないと何とも言えないです。
完成後、最終的にはDoCoMoに無償提供依託するつもりです。経年でのバグ修正は個人では追いつかなそうなので。
iメニューあたりで無料配布してくれたり、機種に標準搭載なんかしてくれたら本望で逝ってしまいますねw
ほおっておけばBREW版も制作されると予想しています。
>>416 声の事を考えていたのですが「男性」「女性」の両方あった方が良いかな?と思ってきました。
通信量が恐ろしいことになりそうですがw
むしろ2chの声優志望辺りにでも声をかけようかな?
>>417 香ばしいですねw
>>419 まぁそうですね
身近にいます
自分が先駆者となるのでしょうか?
もしそうなら少し恥ずかしいですね〃〃
>>420 良いところをつきましたね。自分もそこをどうするかで悩んでいます。
何か良いアイディアある方は言ってください。
>>406 ホンモノのjarを bar.jarにリネームして、
foo.jar というCGIが
カウントしたら
bar.jarを呼んで吐けば問題ない。
423 :
410 :2005/09/06(火) 06:58:19
>413 その辺は色々と試してみます。 何を試すんだ?個人でも仕様書何百枚か書けば認められるもんなのか?
正直俺がやるわけじゃないからどうでもいい。 作るんだとしたらトラステッド必須の部分は認可貰うか、 アプリの方で実現することになるだろうな。 後は外に置ける機能は外部サーバに置くってのも重要かも。 基本的にアプリ部分は文字入力機能とサーバ通信のみになる予感。
馬鹿が居るな。 そんなもん、制限の緩いSymbian端末でやればいいだろうが
言われてみれば糞仕様のiアプリにこだわる理由が見つからねぇΣ('A`)
忠告しとくけど、ドコモは個人なんか相手にしないよ? 責任問題でうやむやに出来ない、ちゃんとした法人限定。 たとえ無償でも相手にされない。
音声合成+読み上げ技術なんて研究され尽くしてるしな NTTなんてその最先鋒みたいなもんだ
> 何年かかろうともここに『宣言』したので制作します 壮大な釣りが始まりましたね
あのさ、
>>409 は、ちょっと調べればわかる技術上の問題なんて、そんなの当然わかってんだよ。
だから「色々と試してみる」とか言ってるのは、プログラム技術上の問題を指しているんじゃない。
トラステッドの認可を得るために法人を作ります、
現状の仕様で不可能な点は権力と発言力をつけてDoCoMoに仕様を変更させます、
そういうことを試してみようと言ってるわけ。
だから俺らがとやかく言うことないんだ、見守ってやれって。
↓次の質問ドゾー
今日のお昼ご飯は何ですか?(゚Д゚ ) それと、701ってもう使った人いる? いるとしたらどうよ?700と同じようなもん?
いいものができれば、それを法人に持ち込むって手もあるしな。
>>418 驚くような糞癖があってクレーム入れておいたよ。
直ってるといいけど('A`)
思いっきりレベル低い内容だが報告。 オプションAPIのMathのatan2。 D900i滅茶苦茶遅い・・・。 テスト内容は適当な引数を入れたatan2を256回 連続して計算させて経過時間を計測した。 D900i:2370〜2380ミリ秒 N901i:1〜2ミリ秒 差がありすぎるので自作して回避。 何かつくるとDで実験するのが日課になったなぁ・・。 以下その際のソース o = System.currentTimeMillis(); for(i = 0;i < 256;i++) j = com.nttdocomo.opt.ui.j3d.Math.atan2(-555,340); n = System.currentTimeMillis(); System.out.println(n-o);
これだから実装主義は(´・ω・`) 最低速度くらい決めて欲しいよなぁ。
iアプリはウインドウズでしか作れないんですか?
一体どんなコードを書けば固定小数の逆正接1回で10ミリ秒近くも費やせるんだろう。 ゲームとかだとそこそこ使う機会が多い関数なのに。 やっぱDはボイコットしようぜ。何か開発陣の体質面に深刻な問題があるとしか思えん。
>>406 jarを.htaccessのAddHandlerとかでCGIなりPHPなり呼び出す。本体をオープンして出力、カウントアップ。
ブラウザからjarがうpできたり、一定数でストップできたり、ごにょごにょできる反面、負荷がかかる。
あるいは初回通信。
>>436 俺はMacで最近iアプリの勉強始めたけど(Java未経験)、ビルドまでは
やろうと思えば出来るんだよ。でも、肝心のエミュレータでのテストはどうも無理っぽい。
不細工だけど、VirtialPCいれて今はやってる。
つーか俺も知りたいよ。Mac環境の快適な環境…
Macを捨て(ry
マカーに何を言っても無駄だというのが俺の持論。
441 :
406 :2005/09/06(火) 22:59:30
>>422 ,437
thx
カウンタ回すためだけに初回通信するのは面白そうだな
.cgi 以外を cgi-script にするのは抵抗があるから、
とりあえず、PATH_INFO つかって counter.cgi/foo.jar で CGI から出力することにする。
>>441 別に拡張子がjarじゃなくても大丈夫だよ。
なんでそんな苦労してんの?
444 :
406 :2005/09/06(火) 23:38:19
>>443 counter.cgi に引数渡したいだけ。
counter.cgi/foo.jar で ${JAR_DIR}/foo.jar を出力してくれた方が嬉しいでしょ。
何で
>>406 みたいな質問したかっていうと、
EZアプリのダウンロードカウンタ作ったときに
ヘッダに Range 指定してきて少しずつ取りに来るんで
直接出力するよりリダイレクトさせた方が楽だったから。
で、iアプリの場合、リダイレクトすると ADF に書いてある PackageURL と
実際の URL が違ってくるのでどうなるか知りたかった。
445 :
443 :2005/09/07(水) 01:02:01
>>444 ああ、そういうことね。理解しました。
昔やってみたことで、ちょっと記憶があいまいだけど、確かJARのリダイレクトは出来たと思うよ。
>>409 音声読み上げに関しては,auでHVってのを搭載している端末が有って
そういうのがFOMAとかに標準で組み込まれれば割と楽そう。
HVに関してはYAMAHAとかでぐぐってみて。
ただ,どうみてもブラウザとかメーラーとか外部と連携必要っぽいから
勝手アプリでは無理ぽ。全部1アプリに統合すれば可能かな?
ProxyVoiceというアプリがあるのだが…
448 :
デフォルトの名無しさん :2005/09/07(水) 19:01:37
画像ファイル名を、英数字→日本語交じりにすると 読み込めなくなるのですが、 リソースには、日本語ファイル名は使えないのですか?
確かめてはいないが、普通ファイル名に二バイト文字は使わない。
450 :
406 :2005/09/07(水) 22:18:54
>>445 むしろ商用のサービス提供してるところは大抵そうしてるね。
入り口が同じページでも、機種判定を間にかまして、必要なJamとJarを提供する形にしてる。
機種依存と個別対応は避けて通れないのがJavaアプリの世界だから、至極当然な対応だと思う。
失礼いたします。 カメラ機能を使うiアプリを作成して、それをネットから<OBJECT declare〜〜で起動させようとしているのですが、 SH901iでiアプリが起動してからカメラが起動しません。 他のP901iやN901iでは起動しますし、 SHでもアプリから立ち上げると正常にカメラが起動します。 単体では正常に動くので、どこが間違っているのか分かりません。 どなたか、救いの手をお願いします……
まず、起動しないというのは何なんだ。 エラーが出るのか? エラーが出るならそのメッセージは何だ?
454 :
名無しさん@そうだ選挙に行こう :2005/09/10(土) 21:36:15
Panelを使って遷移するアプリを考えているのですが、 一度生成したPanelオブジェクトは破棄することはできるのでしょうか? 遷移するときに破棄したいのですが・・・。
>>4 53さん。
452です。
エラーは出ません。アプリそのものは起動するのですが、カメラ起動のキーを押してもなんの反応も無いのです。
(もちろん単体でこのiアプリを起動させた時はカメラ起動のキーを押せばカメラが立ち上がります)
他のキー、アプリを終了させるキー等は正常に動いています。
あと、蛇足ですが、上記のカメラ起動キーはアプリ内のキー割り当てですので、携帯本来のカメラボタンとは違います。
(アプリを終了させるキーも)
3.5のエミュ使ってるのだが、imeOnがブロック動作になってる…
>>454 破棄できるが、何故かN504などの糞機種は破棄したのにメモリーが解放されない。
むかつく。
459 :
名無しさん@そうだ選挙に行こう :2005/09/10(土) 23:03:50
454です。 オブジェクトの破棄の方法を具体的にお教えていただけないでしょうか。 参照をなくしてgc待ちなのでしょうか。
>455 そこで catch した内容をさらせ。 話はそれからだ。
461 :
456 :2005/09/11(日) 00:54:54
>>458 DoJa3.5のAPIマニュアルによれば
> このメソッドはブロックしないメソッドです。 IMEでの入力が完了するまで待つことはありません。
とのことで、非ブロック動作。実機でも確認したよ。
これか。 -------- 4.2.6 Canvas におけるIMEの利用 Panel を用いた画面ではTextBox のユーザー操作によりIME を起動することができ、 ユーザーが入力した文字列をiアプリに与えることができます。これに対しCanvas を 用いた画面では、DoJa-3.0プロファイルにて新設されたAPI を使用してアプリケーショ ンプログラムからIMEを起動することができます。これらのAPI を利用することで、 Canvas使用時もPanel使用時と同様にユーザーが入力した文字列をiアプリに与える ことが可能となります。 アプリケーションプログラムがCanvas.imeOn()メソッドを呼び出すとIME が起動さ れます。このメソッドは非ブロック型であり、IME の起動が完了するとアプリケーショ ンプログラムに復帰します。 ユーザーがIME の操作を完了(確定またはキャンセル)すると、アプリケーションプロ グラムはIME イベントの通知を受けます。開発者はCanvas.processIMEEvent()メ ソッドをオーバーライドすることにより、IME の処理結果を受け取ることができます。 -------- この文の中の「非ブロック型なのに起動が完了すると復帰」というのが解せないんだけど、 この起動までブロックされてしまうことが問題というオチではないよね?
463 :
456 :2005/09/11(日) 03:13:35
>>462 > この文の中の「非ブロック型なのに起動が完了すると復帰」というのが解せないんだけど、
> この起動までブロックされてしまうことが問題というオチではないよね?
違う違う。
エミュレータでは「ユーザーがIME の操作を完了する」までブロックしてる。それが問題。
正確にはprocesssIMEEvent()を抜けてからimeOn()が終わってるよ。
実機はちゃんとその説明どおり「IME の起動が完了する」まででブロックが終わってるッポ。
エミュはなぁ…。 setPixelsが実機の100倍遅いとか、結構問題があるんだよなぁ
465 :
名無しさん@そうだ選挙に行こう :2005/09/11(日) 11:44:51
ミニロト向けの(1〜31の数字から5個選ぶ宝くじ)数字選出アプリを作りたいんですが、 このコードはもう少しスマートにならないでしょうか。また、重複排除はどうしたらいいでしょうか。 まだ初心者も初心者です。 ボタンを押すとlabelに乱数から発生させた数字5つを表示させてみました。 ご教示お願い致します。 java歴 :3週間 プログラム歴:3週間 コード作成歴:初めて
466 :
名無しさん@そうだ選挙に行こう :2005/09/11(日) 11:47:32
public class MiniLoto extends IApplication implements ComponentListener { Panel p; Label label; Button button; public void start() { p = new Panel(); label = new Label(); button = new Button(); p.setComponentListener(this); p.add(button); p.add(label); Display.setCurrent(p); }
467 :
名無しさん@そうだ選挙に行こう :2005/09/11(日) 11:48:11
public void componentAction (component c, int type, int param) { if (type == BUTTON_PRESSED) { p.setTitle("多分当たります。"); Random R = new Random(); int mini[] = new int[5]; int mini2[] = new int[5]; for (int i=0; i<5; i++) { mini[i] = Math.abs(R.nextInt()); if (mini[i] >= 1 || mini[i] <= 31) { mini[i] = Math.abs(R.nextInt());} else { mini2[i] = mini[i] / 31; if (mini2[i] >= 1) { mini[i] = mini[i]-mini2[i]*31+1; } } } label.setText(mini[0],mini[1],mini[2],mini[3],mini[4]); } } }
>>465 こんな感じでいけるんでないか。
・要素数31の配列を作る
・配列に1〜31の数字をぶち込む
・ランダムに配列の要素を2つ選んで入れ替える処理を適当な回数繰り返す
(1000回もやればいいかしら)
・配列の頭から5個の数値を選ぶ
ちなみに、アルゴリズムの話はスレ違いだ。
>>465 今回は手短に答えるけど、アルゴリズムの話は専用スレがあるから、以後そちらでな。
>>467 の部分をこうする。
int mini[] = new int[31];
for (int i = 0; i < 31; i++) mini[i] = i + 1; //配列に1〜31が順にセットされる
for (int tmp, n, i = 0; i < 5; i++){ //先頭の5つを順次どれかと入れ替える(自分自身になっても構わない)
n = Math.abs(R.nextInt() % 31); //nは31で割った余り(0〜30)になる (これが入れ替える相手の配列のインデックス)
tmp = mini[i];
mini[i] = mini[n];
mini[n] = tmp;
}
label.setText(mini[0],mini[1],mini[2],mini[3],mini[4]);
DoJaはやはり「どうじゃ」と読むのでしょうか.
>>460 さん
452です。
それが、どうもエラーが出ていないようなのです。
try catchで捕まえようとしましたが、捕まりませんし。
(Exception e)ではカメラ関係のエラーは捕まえられないのでしょうか?
AppTraceをonにしてトレース情報を見てみたりもしましたが、こちらも異常は見受けられませんでした。
正直、もう何が原因なのか分かりません○| ̄|_
>>471 それならインスタンスの生成と設定タイミング周りをミスってて、タマタマ動作してるってヤツじゃね?
たとえばキャンバスコントラクタの中でsetCurrentするような、一見動いているように見えるタイプの
まあ452を実際に試したことないので確証はないが、本当に端末不具合だったら泣いていい
。・ ゚・。* 。 +゚。・.。* ゚ + 。・゚・(ノД`)
475 :
デフォルトの名無しさん :2005/09/14(水) 13:07:57
アホな質問かもしれませんが非常に悩んでおります。 パネル型で作った場合に、 TextBox tb = new TextBox(); Panel p = new Panel(); int a = 1; tb.setText(a); p.add(tb); としてもテキストボックスに変数aが表示出来ないのです。 何故なのでしょうか。
まずAPIリファレンスのTextBoxを読め。話はそれからだ。
477 :
475 :2005/09/14(水) 15:25:33
Stringクラスで文字列に変換する必要があったんですね。 失礼しやした。
Dojaをコマンドラインから起動してヒープサイズとか設定できたと 思ったんだけど、何て資料に書いてあるんだっけ?
とりあえず簡単なアプリから作りたかったら何読んだら良いでしょうか?
リファレンスマニュアル
サンプルコード
空気
>>479 まじめに答えると
プログラム経験アリで理解もある:iアプリコンテンツ開発ガイド
プログラム経験なし:書店にある初心者むけプログラムの参考書。
ここの住人って、みんなeclipse使ってるの? 俺はあのちょっとごちゃごちゃしてるのが苦手でterapad使ってるんだけど、見出し機能みたいなのが無いから最近不便に感じてたり・・・ 何かオススメのエディタってある?
VisualStudio6.0
>>484 はっきり言う。
携帯アプリ書きにとって、eclipseはよほどの理由(親の遺言とか)が無い限り、ベストかつマストな開発環境。
使わないのはよほどの理由(親の遺言とか)が無い限り、ただの阿呆。
悪いことは言わないから、とっとと移行しる。
>>487 eclipseにはプリプロセッサが無い
>>485 それを買うお金がなひ・・・
学生時代にCDをこpうわなにをするやm
>487
なんてこった('A`)
そこまで優れてるのかえくりぷすよ。
前のPCにインストールした時やたら時間かかった覚えあるから抵抗があったんだけど、そこまで言うならまた導入してみるかー
ありがとうよ!
>>488 そのくらいなら何とか・・・
俺3年くらい携帯アプリの開発してるけど、eclipseなんて使ったこと無いよ('A`) 書いてるのもCだかJavaだかわかんないようなソースだしな'`,、('A`) '`,、
俺も使ったこと無いな、開発環境は 秀丸+DOJAだけっす。 規模が小さいから処理内容は頭の中で大抵片付くし、 問題になるのはバグというよりも機種依存の方だからなぁ。 作ってるもののレベルの違いなんだろうなw俺低レベルなのしかつくらんしw
492 :
488 :2005/09/16(金) 11:24:20
>>489 趣味アプリなら、eclipse最強。これは間違いない。
だが仕事でカッツカツのプログラムを要求されると、eclipseの良いところをまったく享受できない。
俺は仕事なもんで、VCとVCのプリプロセッサ(コンパイラのプリプロセスオプション)を使ってるよ。
VCと〜じゃねーや。VS6.0ね。
趣味でVS.NET
別にeclipseでもビルドシーケンスのカスタマイズできるから プリプロセスだろうがポストプロセスだろうがなんだって できるんだけどね。
>>487 ふーん
漏れはEmacsで書いてるけどナ。
俺メモ帳
まあ、ビルドさえ通ればなんでもね。 Emacsちゃんとカスタマイズしてる人なら、それでいいんじゃないかな。 普通にある程度攻めるまでなら、素のeclipseが最適解。 さらに攻めるならeclipse+ANT他。 それで駄目なら神頼み。 そんな感じでいいんじゃないかな。 エディタその他に悩むくらいなら、素直にeclipse入れるのがいいと思うよ。 特に携帯アプリはあまりコードを贅沢に書けないので、CVSとかの支援があると 開発効率が格段に変わってくる。 で、eclipseのCVSクライアント機能は業界トップランク。 こんな幸せな結婚はそうザラにはないし、悩むくらいなら入れなされって感じかな。
>>495 そうなんだけどさ、定数やるとき
#define _MAX_ITEM 4
って書くじゃん、カツカツの仕事アプリって。
でもeclipsだと支援機能考えると
final int MAX_ITEM = 4;
って書きたいよね。
例えばそういうところで、せっかくeclips使ってるのに機能が生かせなくて(´・ω・`)しょぼんだなぁと。
>>499 final int 使うとBREW移植で面倒(´・ω・`)
>>499 いいたいことはよくわかるけど、定数定義やifdef程度ならeclipseでも
テクニックでカバーできるんだよね。もちろんマクロにばりばり依存するような
プリプロセスになると難しいけど。そのへんトータルなコストで判断して
俺はeclipse使ってる。
VS.netでiアプリ開発できるんですか?
失礼します。 パネルで文字を入力し、その文字列をキャンバスクラスで表示させ、文字列をキーで移動させる iアプリを作りたいと思い、以下のように作ったのですが、 パネルクラスからキャンバスクラスを呼び出すとキー入力を受け付けてくれなくなります。 文字をキャバスクラスの中で決めて、 キャンバスクラスを起動させるとちゃんとキーを押すと文字が移動してくるので、 パネルクラスからキャンバスクラスへ移動する時の処理がおかしいと思うのですが、どこがおかしいのか分かりません。 どうかどなたかご指南下さい。
クラスは以下のようになっています。 public class Main extends IApplication{ Canvas_class Cc=new Canvas_class(); public void start() {Display.setCurrent(Cc);} キャンバスクラス public class Canvas_class extends Canvas{ Panel_class Pc=new Panel_class(); //プログラム本来の処理 //キープレスイベント if(PUSHKEY==Display.KEY_SELECT){PUSHKEY=-1000;Display.setCurrent(Pc);} } パネルクラス public class Panel_class extends Panel implements ComponentListener{ Canvas_class Cc=new Canvas_class(); //プログラム本来の処理 //キープレスイベント public void softKeyReleased(int arg0) {if(arg0==Frame.SOFT_KEY_1){Display.setCurrent(Cc);} //↑これで呼び出すとキャンバスクラスでキー入力を受け付けなくなってしまいます。 }
インスタンス作りすぎ。。
>>506 キー入力を受け付けないとか言う前にクラスの構造がめちゃくちゃ。
最初に↓ここでキャンバスクラスのCcを生成して、
>public class Main extends IApplication{
>Canvas_class Cc=new Canvas_class();
次にそのCc内でパネルクラスのPcを生成してて↓
>public class Canvas_class extends Canvas{
>Panel_class Pc=new Panel_class();
さらにそのPc内で新たにキャンバスクラスCcを生成してて↓
>public class Panel_class extends Panel implements ComponentListener{
>Canvas_class Cc=new Canvas_class();
そのCcをDisplay.setCurrent(Cc);している。
「一番最初のCcはどうなった?」とか気付いてないでしょ。
それからキャンバスの中でパネルを生成するなんてこと、まずやらない。
最初の段階↓でパネルも生成しておいてから、互いに切り替えるよう改造・整理して。
>public class Main extends IApplication{
>Canvas_class Cc=new Canvas_class();
>Panel_class Pc=new Panel_class();
エー?ちょっと入力するだけなら >キャンバスの中でパネルを生成 してもいいんじゃね?
んなあほなw Panelなんて正常に解放されるかどうかも分からんのに。
506です。
508さんのご指摘してくれた箇所を直して、プログラム部分を見直して、
それぞれをちゃんと纏めたら無事動くようになりました。
ありがとうございます。
>>509 さん
確かに私が確認した範囲ではパネル内で不審な動作はしていませんでしたが、
>>510 さんが指摘されたように、そこから別のインスタンスに移動した時は動作の保証は無くなってしまうようです。
お父さんお父さん、聞いてくださいな。 主に勝手アプリでの話しなんだけど、MLDへの変換ってどんなソフト使ってる? DOCOMOが配布してる奴は商用限定だろうし。 たまには趣味ゲーとか作ってみたいんだが、どーもコレっていう決定打が無い気がする。 オススメのコンバータとか無いもんでしょうか。
tp://www.hundredsoft.jp/wav2mld/index.html 趣味の範囲内でやってる者だけど、こんなん使わせていただいてます。
>>512 MIDIをどっかからパクってきて着メロコンバータとかで変換するとか
Doja3.0or4.0の開発にEclipse3.0又は3.1って使えますか? 仕事で会社全体に強制導入を考えてるんですけど、どれを入れるべきか悩んでます。 あと、3.x系でMIDPの開発ってできます?
漏れのPCだと、Eclipse3.xでもDoja4.0使えたよ。ビルドもエミュも動いた。 学校のPCだと、全く動かなかったけどね。 会社でやるなら、推奨環境の2.1.2を使うべきだと思いまふ。 3.xは動くこともあるけど、締め切り前にビルド/テストできないなんて現象出たら怖いですよ。
追記。 NDS2.2使用してますが、Eclipse3.xでもMIDPの開発は可能です。(推奨環境はEclipse2.2だけど) ちなみに、NDS3.0はEclipse3.0推奨してます。
ありがとうございます。 今回、3キャリア開発にエクリプスを使えるか調査しているのですが、まずはテスト導入して使い込みながら考えます。 基本はエクリプスで作りつつ、保険としてバッチ環境なりAntタスクを用意したほうが良いんですかね・・・
3.xでも特に問題ないよね。 随分長いこと使ってるが、編集の上で特別な問題が起きたことはないかな。 そもそもEclipseのJavacがコンパイルかけたJarは使わない(保証外)だから、 最終的にはDojaの環境なり自前ビルドなりするんだし、それまでの作業が快適に過ごせるなら 委員ジャマイカ。
CLDC+MIDPスレとここであまりにも反応が違うんで笑った。
しかし、今までテキストエディタ+プリプロセス使いまくりの状況で いきなりEclipse使えって言われたら効率ガタオチだな(´Д`; つーか、納期が見えてる仕事抱えた状態でテスト導入とかいわれたらキレる。
それは流石に切れていいが。 火急の様がない時には、移行を考えてもいいだろ、別に。 Java使うならEclipseのエディタ機能はピカイチだし、 プリプロセス、ポストプロセスだって、Antが使えるので思うがまま。 まあ時間が出来たときにでも移ってみたら。
VS.NET のエディタを使う俺は変り者
VS6.0使ってる俺様が来ましたよ。.NETは重過ぎる
emacsとmakeにcvsでとりあえず事足りてる
Javaにはやっぱantが剥いてるよ
JarInflaterについての質問です。 テキストファイルの展開は成功しますが、画像や音楽はNullPointerExceptionが発生してしまいます。 ji = new JarInflater(Connector.openInputStream("resource:///" + this.jarName)); is = ji.getInputStream(this.jar1); byte buf[] = new byte[(int)ji.getSize(this.jar1)]; is.read(buf); this.txtData = new String(buf); ↑までは成功 this.ms = MediaManager.getSound(ji.getInputStream("resource:///" + this.jar3)); /* ここでぬるぽ */ this.ms.use(); this.ap = AudioPresenter.getAudioPresenter(); this.ap.setSound(this.ms); JarInflater.getInputStream()を使わず直接音楽ファイルを指定すると正常に再生できます。 どのような原因が考えられるのでしょうか?
>>527 >this.ms = MediaManager.getSound(ji.getInputStream("resource:///" + this.jar3));
getInputStream()の引数が変じゃん
あぁぁーー…… ありがとうございました、助かりました
メーラーがエディタ代わりorz
Randomクラスについて。 CLDC1.0の定義によると、 同一シードであれば同一の乱数列が返ることが保証されているそうですが、 これは実機上でもそのようになっているのでしょうか? そうなっていない事例(またはそう推測される事象)などを 確認された方はいらっしゃいますでしょうか?
腐ってもJAVA。きちんと同じになりますよ。
533 :
デフォルトの名無しさん :2005/09/29(木) 23:19:22
>>531 アルゴリズムが規定されてるので大丈夫でしょう。
マニュアルには
(See Donald Knuth, The Art of Computer Programming, Volume 2, Section 3.2.1.)
とあります。
Seedを使うRandomなら全部そうだよ。 乱数系アルゴリズム知ってれば分かるけど、所詮計算式に過ぎないから。
まあ、その計算式が同一のものかという話なわけだが、 同一のようなので問題ない。
そんな心配をする俺がよく使っているランダム発生のコード 昔のアルゴリズム本からの流用だが class CRandomValue { private: unsigned int m_NextValue; public: CRandomValue(){ m_NextValue = 1; } ~CRandomValue(){} inline unsigned int GetRandomValue( unsigned int max ) { m_NextValue = m_NextValue * 1103515245L + 12345; return ( unsigned int )( m_NextValue / 65536L ) % max; } inline void SetStartValue( unsigned int start ) { m_NextValue = start; } };
ごめ。これC++版だった。でもJavaにするのもそんなにたいしたことないだろう
>>535 >>531 複数の実機で乱数列の計算式 y=f(x) が同一か?という話なのか?
……そりゃわからんなぁ。
>>533 の言うように規定はあるんだろうと願いたいが。
中身がnativeだったりしたら怖い。
でもとりあえず、
>>531 が何でそんな事を必要としているのか問いつめたい。
リプレイとかマップ生成とかじゃね? よく使うよ。
リプレイデータ作るときにSeedだけ保存すればいいというのはでかい。 というかこれを必要としないゲームというのをあまり思いつかないな…。
失礼します。複数のサウンドの同時再生について質問です。 MID音源から変換したBGMと効果音のあるアプリを制作しています。 対応は900以上です。 なぜか、N900系のみサウンドが正常動作しません。 BGM鳴る→アクションによって効果音が鳴る→同時にBGMがならなくなる その後、効果音しか鳴らなくなります。 他の機種ではサウンドはBGMと効果音が同時再生可能です。 N900系では、特殊な条件や対処方法があるのでしょうか? よろしければご教授下さいm(_ _)m
>>541 N505、N900までのN系はMIDI 1-8ch以内でデータを作る必要があるのは仕様
getAudioPresenterの引数?
多分
>>542 。
だけど
>>543 の可能性も無きにしもあらず。
ちゃんと最初に必要なチャンネル分2つ、getAudioPresenter()で確保してるよね?
ちょっと質問させてください。 DoJa4.0をインストールしている状態で、 古いバージョン(3.5を想定)用のアプリは作成できますか? もし可能であれば、 その際に注意することや、特殊な操作などがありましたらお願いします。 質問の理由: ・Eclipse3.0でプラグインを使いたい。複数のIDEは入れたくない。 ・だからといって旧バージョンに完全移行すると他のプラグイン関係で問題あり。 ・自分の持ってるケータイがDoJa3.5対応機種(900i)
4.0で追加された命令を使わなければOKだよ。
サンクスです。 JDKみたいに、特定のバージョン向けとか設定できたら良かったんですけどね。
ああ、失礼。 ターゲット指定できたのね。大ボケ。 ……インストールでコケた orz
549 :
541 :2005/10/01(土) 16:57:15
>>542 >>543 >>544 ご指摘ありがとうございますm(_ _)m
皆様のおかげで、解決いたしました。
>N505、N900までのN系はMIDI 1-8ch以内でデータを作る必要があるのは仕様
この部分において、BGMは1-8ch以上でしたが、
複数サウンドで鳴らさない場合には正常に動作するため勘違いしておりました。
1つのサウンド→1-8ch以上OK
複数サウンド→1-8ch以上NG
*NECよ、こんな風にする意味あるのか・・・orz
仕様を確認きちんと把握できておりませんでした(汗)申し訳ない。
以上、ご報告まで。
>>545 eclipse3.0でDoja3.0/3.5/4.0全部動いてるよ。
突っ込んで調べては無いけど、多分問題無いと思う。
ちなみに3.1にしたらDoja4.0以外は認識すらしてくれなかった・・・
くそがあああああ 久しぶりにアプリVerUpしてエミュで万全だったのに、実機でアプリ起動するたびに落ちてた 浮動小数使ってたのが原因だった 原因突き止めるために2000円分DLしたorz コンパイル時に警告ぐらい出してくれ
俺は乱数は、乱数の質が気になるので自前のMT乱数クラスを使う。
はいはい、スゴススゴス
日記の余白 乱数って、実はすんげぇ単純な仕組みであることを本で知りますた 基本は掛けて足すだけですた
555 :
548 :2005/10/01(土) 23:42:48
お騒がせしました。 結局、DoJa4.0のインストール時に出る「レジストリに書き込めねぇよウワァァァン」というエラーが 自分には解決できなかったので、非サポートではありますが3.5を入れることに。
556 :
デフォルトの名無しさん :2005/10/02(日) 00:14:02
完全に0からアプリを勉強しようとしてるんですが、 オススメのサイトとか本があれば教えて欲しいです。
>>556 「ん ぱか」をぐぐりなされ。
ただし後ろに会社の同僚や彼女が居る場合はドン引きされる可能性があるので、
最初は一人で見るのが吉。
いや、ん・ぱか工房のサイトには死ぬほどお世話になってるけど、
あのページ見てる姿は、どう贔屓目にも仕事してる様には…。
>>552 アプリ容量に余裕があるなら、そうしたいところなんだけどねえ。
盛れとかの場合、ライブラリ側で持ってるからいいやっつって真っ先に切り捨てるのがその辺だなあ。
ゲーム系だから言える事なのかもしれないけど。
>>557 プログラマがいまさらそんなことを気にしてどうする。
>>558 zip圧縮前の、素の.classファイルで700バイト程度。
これを大きいと見るか、小さいと見るかだな。
>>551 DoJa-4.0(CLDC1.1)からfloatとdouble使えるからな
しかしなぜ実機と同じDoJaのエミュを使わないんだ
>556 ASCII の FOMA 本でも買っとけ。 すぐ漬け物石になるけど。
これが新しい携帯だ。 どーじゃ。 ふぉー、まぁー。
iアプリ連携ってエミュでテストできる?
できる。 iアプリのエミュは優秀すぎる。 しかしsetPixelsが遅すぎる件はいつ直してくれるのかなぁ(*´ω`)
dクス、できるのか(´・ω・`) appフォルダにsampleはあるんだが args[0] = IApplication.getCurrentApp().getSourceURL() + "sample.jam"; って書いてlaunch呼ぶと java.lang.SecurityException: Illegal i-application url が帰ってくるんで困ってるんだけど、何か違うんかな?(´・ω・`)
ちゃんとアプリ間起動をJAM内で宣言してるか?
ヒント:LaunchApp、LaunchByApp
570 :
デフォルトの名無しさん :2005/10/05(水) 10:04:58
sinとかcosとかはiモード携帯電話用Javaでは使えないですよね?
571 :
デフォルトの名無しさん :2005/10/05(水) 12:48:50
すんません質問です。 アプリ開発でプリプロセッサを使う意味がいまいち解らないんですが iアプリを作る場合に、プリプロセッサを使った開発は 使わない場合と比べてどのような効率の違いがあるんですか? #defineはstatic final intで定数化すればいいし、 マクロでインライン化したいならメソッドにfinalつければいいし #if 0はコメントにすりゃいいし・・・ プリプロセッサじゃなきゃダメな理由ってあります?好み以外で。
>>571 定数とロジックを異なるファイルに分離した上で、.classのサイズを小さく、数を少なくできるんだよ。
まぁ、ポストプロセスなツール使っても近いことはできるが.classの数は、難しいな。
数はそのままjarサイズに響くから、サイズが本当にギリギリの時には効いてくる。
>>570 使えますが、自前実装したほうがいいでしょう。
>>567 >>568 ありd。
どうやらエミュレータの
「設定」「ダウンロードアプリケーション設定」
を設定してなかったのが問題っぽかった。
お騒がせしました⊂⌒~⊃。Д。)⊃
>>571 やっぱり、デバッグバージョンとリリースバージョンを簡単に切り分けられるのが嬉しい。
例えば
#ifdef _DEBUG
#define debug(x) System.out.println(x)
#else
#define debug(x)
#endif
とかね。
とは定数。
static final int は容量くうからダメ!!
>>575 プリプロセッサの有用性を否定するつもりはないけど、
>#ifdef _DEBUG
>#define debug(x) System.out.println(x)
>#else
>#define debug(x)
>#endif
このような条件付コンパイルのためにJavaの言語仕様上
次の3点がわざわざ規定されているからプリプロセッサの優位性の
例としては不適切。
1. プリミティブ定数のコンパイル時解決
2. まさに条件付コンパイルに使えるよう1.を行った際のifブロックでの
到達不能性チェックに例外を設ける。
3. 2.によってリリースコードでコードの増加がないようコードの省略を
コンパイル時の最適化に要求。
3.はmustではないけど、1+2をわざわざ条件付コンパイルのために考慮
したこともあってSunやIBMのコンパイラではまず間違いなく実装されている。
プリプロセッサの例としてはmaxやminをマクロで定義したいとか
そういうほうが適切だよね。
577 :
576 :2005/10/05(水) 15:38:02
ごめん、575をちゃんと読んでなかった。defineの切り分けだから まさにプリプロセッサの領分だね。
>>577 単に定数の切り替えだけって意味ならプリプロセス便利だけど、
575の例が意図してるデバッグコードの差込なら、576が書いてる理由でプリプロセッサは不要。
>>573 いつから浮動小数点演算が実装されたんだ?
>>570 DoJaのバージョン次第。505以降(DoJa3.0)の機種なら
オプションAPIながら全機種正常動作する。
ただ機種によっては同じクラス内のもので遅いとの報告があり
>>433 自作した方が速度的に無難。
個人的にはsinテーブル作成時のみ使用してるけどな起動時に。
>>579 ちなみにcom.nttdocomo.opt.ui.j3d.Mathのcosとsinは
どっちも浮動小数点には関係ない。どっちもint数値。
平方根も自作した方が無難?
>>576 ものすごく詳しく話を聞きたい。
1についてだが、final static intを使ってもjarのサイズが増えるんだが、これは違う?
2と3だが、少なくともドコモエミュでコンパイルする際「使ってないメソッド」すら省略してくれないんだが、何か手があるの?
>>579 sin/cosのような小数点が絡むものは、1.0を4096として実装されてるんですよん。
>>582 固定小数クラスはググレば見つかるよ。
sqrt自作は俺には無理だったんでネットで見つけた実装をパクったw
sinはテイラー展開で意外とかんたんに実装できるぞ。sin作れればcosはいらんし。
クラスサイズ的に自作が良いかオプションAPIをインポートするのが良いかは検証してないので知らん。
>>583 俺もその辺興味ある。Javaコンパイラの実装については明るくないので。。。
携帯の場合JDK1.3推奨なわけだが、それでも
>>576 のいうような賢いコンパイルってやってくれるのかな?
1+1+1+1+1すら最適化しない それがドコモクオリティー
>>583 メソッドの省略はまた別の話。
#クラスのバイナリ互換性も絡むし。IBMの製品では明示的に省略するオプションあったけど。
576でいっているのはこういう最適化のこと。
$ cat Test.java
public class Test {
private static final boolean DEBUG = false;
public static void main(String[] args){
if(DEBUG){
System.err.println("debug");
}
}
}
$ javac -g:none Test.java
$ javap -c Test
Compiled from null
public class Test extends java.lang.Object{
public Test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: return
}
>>584 該当する仕様自体はJava2が出来たときには含まれていたから1.3のコンパイラ
でも状況は変わらないんじゃないかな。少なくともIBMの1.3.1では実装されていた。
ほー。それ削ってくれるんですか。いいな。 でもstatic final booleanが容量食うのが嫌ね…。 プリプロセッサの効能としては、あとは#includeが使えるところがいいかな。
>>587 そのような心配があるときは
$ cat Const.java
class Const {
static final boolean DEBUG = false;
}
$ cat Test.java
public class Test {
public static void main(String[] args){
if(Const.DEBUG){
System.err.println("debug");
}
}
}
のように別ファイルに切り分ける。576のルール1によって定数は
コンパイル時に解決されているから、実行時にConst.classが存在
しなくても実行できる。このように1.はバイナリ互換性を乱すものだけど
必要なものとして規格に入っている。
589 :
588 :2005/10/05(水) 22:53:36
あ、もちろんstatic final booleanの容量の話ね。
プリプロセッサを用いて最適化やコーディング作業の負担を減らすというのはいいと思う。 ただ、開発チーム以外の人がそのソースを見る可能性が出てきた場合、 #defineや#includeを使った記述はJavaでも何でもない「我社の独自言語です」なので そこら変を考慮する必要はあるぞと。
企業レベルでjava使ってる香具師がプリプロセッサ知らんというのも変じゃないか
知ってる知らないの問題じゃない。 「Javaのソースでやり取りしましょう」と決めたなら #defineとか記述してないソースをやり取りするのが筋だろう。 もちろん、その相手と 「プロプロセッサ使ってます。そちらでもこのソースに合わせて使ってください。」 で話が通ってるなら好きにやればいいんだが。
結局
>>571 の疑問は解決できてるのかな。
>>572 と
>>575 いうメリットって
>>586 と
>>588 の内容を読むと
意味ないって感じなんだけど。
とくに572のいう「定数とロジックの切り分けをファイル単位で出来て、かつ
ファイル数の増加が起こらない」ってのは588よむと
static finalで宣言してインライン展開させてConst.classを配布しなければ
ファイル数も増加しないし容量もかわらんってことだよね?
594 :
593 :2005/10/06(木) 01:27:32
なんか意味違って読めるな。 とくに572のいう「定数とロジックの切り分けをファイル単位で出来て、かつ ファイル数の増加が起こらない」ってのは、588によればプリプロセッサ使わなくても static finalで宣言してインライン展開させてConst.classを配布しなければ ファイル数も増加しないし容量もかわらんし同じことってことだよね?
iアプリ仕事で組んでる人はCのプリプロセッサ使って書くのが ほとんど一般的になってない?
おまえらゲーム屋じゃないの?
いや、やっぱ#includeにかわる実践的な手段が無いってのは痛いと思うぞ。
開発やる上では、できればシステム部分とゲームタイトル依存部分は明確に分けたい。
そういう場合、やっぱり関連するメソッドごとにファイル単位で切り分けておいて#includeでまとめたくなるわけで。
こればっかりは
>>588 のやり方では無理だよね?
しかしiアプリ以外まで視野に入れ始めると588の方法には殺意を覚えるBREWプログラマ
>>588 の話を読んで、ちと実験してみた。
[Test.java]--------------------------------
class Define {
static final boolean DEBUG = false;
static final int VAL_A = 100;
static final void sysout(String s)
{
System.out.println(s);
}
}
public class Test{
public void main(String[] args){
for(int i=0; i<Define.VAL_A; i++){
Define.sysout("hello"+i);
}
if(Define.DEBUG) {
for(int i=0; i<Define.VAL_A; i++){
Define.sysout("world");
}
}
Define.sysout("test");
}
}
----------------------------
というコードを書いて、javac Test.java -O -g:none でコンパイル
んで、javap -c Test で逆コンパイルした結果。(JDK1.3.1で確認) No sourcepublic class Test extends java.lang.Object { public Test(); public void main(java.lang.String[]); } Method Test() 0 aload_0 1 invokespecial #1 <Method java.lang.Object()> 4 return Method void main(java.lang.String[]) 0 iconst_0 1 istore_2 2 goto 30 5 new #2 <Class java.lang.StringBuffer> 8 dup 9 invokespecial #3 <Method java.lang.StringBuffer()> 12 ldc #4 <String "hello"> 14 invokevirtual #5 <Method java.lang.StringBuffer append(java.lang.String)> 17 iload_2 18 invokevirtual #6 <Method java.lang.StringBuffer append(int)> 21 invokevirtual #7 <Method java.lang.String toString()> 24 invokestatic #8 <Method void sysout(java.lang.String)> 27 iinc 2 1 30 iload_2 31 bipush 100 33 if_icmplt 5 36 ldc #9 <String "test"> 38 invokestatic #8 <Method void sysout(java.lang.String)> 41 return
(連投スマヌ)結果を見ると31で定数が置き換わっているのがわかる。 また、36は最後の行に対応していることからif(Define.DEBUG)が除去されているのも確認できた。 しかし、Define.sysout()がインライン展開されない。調べてみるとfinalメソッドにしたからといって必ずインライン化されるとは限らないらしい。 JDKのバージョンによってこの当たりの挙動は微妙に違ってくるようで、いまいち信頼できない・・・ 確実にメソッドをインライン化させる手段ってないのかなぁ。 それがあれば脱プリプロセッサな開発も夢ではないんだが。(あ、#includeはどうしよう・・・)
602 :
588 :2005/10/06(木) 03:20:17
576でも書いたけどプリプロセッサを否定しているわけじゃなくて
条件付コンパイルは例としては悪いってのを言いたかったのは
再確認しておくね。
>>601 >確実にメソッドをインライン化させる手段ってないのかなぁ。
>それがあれば脱プリプロセッサな開発も夢ではないんだが。(あ、#includeはどうしよう・・・)
jxelinkをすすめとく。ポストプロセッサだからeclipseみたいなIDEとの
相性もいいし。
603 :
588 :2005/10/06(木) 03:38:09
ちなみに599をjxelinkしてjavapした結果。 public void main(java.lang.String[]); Code: 0: iconst_0 1: istore_2 2: iload_2 3: bipush 100 5: if_icmpge 41 8: new #13; //class StringBuffer 11: dup 12: invokespecial #14; //Method java/lang/StringBuffer."<init>":()V 15: ldc #16; //String hello 17: invokevirtual #20; //Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer; 20: iload_2 21: invokevirtual #23; //Method java/lang/StringBuffer.append:(I)Ljava/lang/StringBuffer; 24: invokevirtual #27; //Method java/lang/StringBuffer.toString:()Ljava/lang/String; 27: astore_3 28: getstatic #33; //Field java/lang/System.out:Ljava/io/PrintStream; 31: aload_3 32: invokevirtual #39; //Method java/io/PrintStream.println:(Ljava/lang/String;)V 35: iinc 2, 1 38: goto 2 41: ldc #41; //String test 43: astore_3 44: getstatic #33; //Field java/lang/System.out:Ljava/io/PrintStream; 47: aload_3 48: invokevirtual #39; //Method java/io/PrintStream.println:(Ljava/lang/String;)V 51: return
なんだってJavaの最適化能力はこう貧弱なんだろうなあ。 例えば代入の伝播。 A=B=C=D=0 と A=0 B=0 C=0 D=0 は意図する所は同じだが、 コードサイズは格段に左の方が小さくなる。 こうしなければならなかった積極的な理由って何だ! 乗除算が絡むと、どの瞬間(桁あふれ等の)例外が発生したか 捕まえるために、1+2*3/4-5*6/7+8-9なんて計算は全然 片付けてくれない。 笑わせてくれるよなあ。
>>604 >例えば代入の伝播。
詳しく。
>1+2*3/4-5*6/7+8-9なんて計算は全然 片付けてくれない。
言語仕様上片付けることが保証されてますが何か?
そこまでサイズを求なければならない積極的な理由って何だ! 笑わせてくれるよなあ。 とも書ける。
iアプリだから。
とりあえず604は定数リテラルの扱われ方を全然理解してないな。
orz 整数リテラルだよ...
610 :
デフォルトの名無しさん :2005/10/06(木) 04:12:54
>>602 jxelinkって何?
ぐぐるとSmartLinkerって言葉が出てくるんだけど、これってWebsphere専用の機能なんじゃないのか?
できればフリーなツールで似たようなのが有ればいいんだけど・・・
>>606 (=゚Д゚)ノ Doja3.0以降対応のRPGツクールを作ってください
>>611 それって今騒がれてるIRMではないのか?
>>612 もうあったのかΣ('A`)
仕事で作るだけで自分じゃ遊ばないから既存アプリには
とことん疎いぜヽ('A`)ノ
ウィルコムのピッチもJava対応になったってなー。 ますます仕事が増えそうな悪寒。 ユーザー少なそうだけど。 ところで、あれってノーマルJavaなのか?
詳細は判らんが拡張無しのMIDP2.0らしい。 すでにアプリ開発してるところはあるので資料があれば見てみたいけど・・・
617 :
デフォルトの名無しさん :2005/10/06(木) 17:24:42
エミュ厨死ねクズ
エミュレータ自体に罪はないんだが。 プログラマならもうちょっと落ち着け。エミュレータ作成は大抵のプログラマにとって挑む価値を感じる課題なはずだぞ。
Winny並みに糞
>>619 エミュ作成に価値を感じた事は一度もありませんが何か?
>>604 Javaの場合はバイトコンパイル時の最適化より
JITコンパイルの方に力入れてる感じだからな。
携帯にJITコンパイラが載るのはいつだろう・・・
>>619 大抵の職業ゲームプログラマにとって飯の種を奪うものですが('A`)
遊びでやってんじゃないんだよ!ヽ('A`)ノ
エミュレータ=ゲームエミュ って考えしかないのかー。
GBとかのソフトを携帯でやるんだろ? ゲームエミュじゃねえか。
まぁ落ち着け。 エミュレータ自体に罪は無いって話だ。 ゲームをエミュレートしようが、地球をエミュレートしようが、エミュレーションという事柄自体はプログラマをひきつける魅力があるだろ? ここはプログラマが集まるスレなんだから、ゲームROMのコピーだのなんだのについては語らなくてもいいんでね?ってこと。
スレ違いもたいがいにしとけ
すみません、初心者質問です。 iアプリではNumberFormatクラスは使えないのでしょうか? double 型の表示を小数2桁位で抑えたいのです。 どなたかご教授お願いします。
できないんじゃないの? java.text.*無いって言われるし
>>631 使えない。
念のため言っとくとDoJa-4.0未満だとdouble型は使えない。
>>632 ,633
レスありがとう御座います。
やっぱり無理なんですね。。困った
>634 計算前に100倍しておいて、計算後に100で割った商と余り。
String.splitも使えませんか?
ありがとうございます 自前で実装なんですね…
>>638 CLDCはJDK1.2までのAPIの一部しか入ってないと考えたほうがいいよ。
だからJDK1.3から入ったCollection APIもないし、JDK1.4で入った正規表現もない。
シリアライズがないのがきつかったです(つД`)
質問させてください. imeOnがうまく動いてくれません. どっかに書いてあったソースをパクって public String inputString(String init, int displaymode, int inputmode) { while (getKeypadState() > 0); imeflag = true; imestring = init; imeOn(init, displaymode, inputmode); while (imeflag) { try { Thread.sleep(200); } catch (Throwable e) { } } return imestring; } public void processIMEEvent(int type, String text) { imestring = text; imeflag = false; } こんな感じに書いてみたのですが,無限ループになってしまうのか,固まってしまいます. while (imeflag)のところをコメントアウトすると今度はimestringがinitのままになってしまうようです. どうすればいいのでしょうか. エミュレータだとなぜか普通に動きます(コメントアウトしてもしなくても). DoJa 4.0,N901iSを使っています.
>>641 とりあえずimgflagをvolatileにしろ。
でも、それが原因じゃなさそうだがw
sleepって呼ぶごとに加算されるとか? いやスッドレ関係はよく知らんのだけど
>>641 imeOnの呼び出しを次のものに書き換える。
final string myInit = init;
final int myDmode = displaymode;
final int myImode = inputmode;
new Thread() {
public void run() { imeOn(myInit, myDmode, myDmode); };
}.start();
imeOnはエミュレータではブロック、実機では非ブロックという、なんかよくわから
ないことになってるから、こんな風にして強制的に非ブロック動作にしておいた方が
変なところで詰まらないで済むかも。
>>642-644 返答ありがとうございます.
imeflagをvolatileにしてみましたが,どうもfalseになってくれないようです.
processIMEEventが呼ばれてないんでしょうか?
>>644 のやり方だとwhile (imeflag)のところを残した場合は無限ループ,
コメントアウトした場合はなぜかぬるぽとか言われました.
強制的にブロッキングする方法はないんでしょうか?
646 :
645 :2005/10/10(月) 14:11:13
すみません,645は説明不足です. imeflagがfalseになってくれないのは実機での場合です.エミュレータでは falseになります.無限ループも同様です. NullPointerExceptionはエミュレータで試した場合です. これはノンブロッキングにしたことから発生しているようです.
647 :
645 :2005/10/10(月) 14:36:38
ループ作戦を諦めてShortTimerを使っていろいろ弄ってたらできました. processIMEEventが呼ばれてないわけではなく,sleepの辺りが駄目だったのでしょうか. お騒がせしました.
固定少数点の扱い方とかString.splitがないとか ちょっと工夫すれば自分で実装できるだろうに しかもドキュメントに目をとおすこともしないなんて 最近レベル落ちてないか? 関係ないけど、先日サーバ側は他所に任せてる仕事で アプリとのやりとりはバイナリでやるっていったら >文字エンコーディングの指定が不明 とか言ってきやがったんで頭イタクなったよw
むしろ携帯側は文字なんでもいけるしな。
お前のチラシの裏じゃねえんだ
ここは便所の落書きだしな
>>648 UTF-8でいいのか?って確認じゃないのか?
>>648 iアプリの仕事なんざ真面目にやってられない
もうEUC-JPで統一でいいじゃん(´A`)
SJISさいこー!
>>648 「携帯はあんまりフォント積んでないからUTF-8やUTF-16,UCS2じゃ
ダメ文字があるんでそ?だったらSJISにしましょうか?」
って確認されたんじゃネーノ。
サーバ側やってる人はドコモの特殊事情なんか知らないんだろうから、
ちゃんと教えてあげなよ。
659 :
デフォルトの名無しさん :2005/10/11(火) 15:48:22
>>659 だからUCS2って言ってるじゃん・・・
あれ?byte[]から文字列取り出すときのエンコーディング指定の話じゃないのか?
俺もそう思ったんだが、どうやら 「ただのバイナリーデータで、文字列なんぞ存在しない」といいたいんじゃないかと思えた。 「テキストデータじゃないんだYO」って感じ?
iアプリじゃなくて鯖側だけの仕事がときどきあるんだが、
>>648 みたいなヴァカに当ったらどうしたらいいんだ?
PHPだとレスポンスヘッダをocter-streamにして吐けばいいのか?
tomcat使えれば簡単なんだろうけどな。
664がまずやらないといけないのは、648みたいなのと根気よく 話し合って誤解がないようにすることだな。
よっぽど割りが合わない限りは一緒に仕事したくないタイプ
質問です。 iアプリではpixelGrabberクラスやMediaTrakkerクラスは使えないのでしょうか? また代わりになるような物はありますでしょうか?
開発ガイドやAPIリファレンスを1度でも読んだことあるか?
PixelGrabberは無いなあ。 gif等のリソースから生成したわけでなく、Image#createImage(だっけ?)で作ったImageに 別Imageの指定領域を描画することはできるので、そっちで代用するのはどうだろう。 MediaTrackerは無い。 MediaListnerのコールバックとうまく同期しよう。 あまり密に同期しようとすると、端末ごとにVMのクセがバラバラなので、めちゃくちゃ地雷踏むけど。
質問です。 N504のように、currentTimeMilisの時間解像度と、ShortTimerの時間解像度が違うマシンがあるわけですが、 currentTimeMillisの時間解像度はどうやればとれるのでしょうか? ShotTimerはgetResolutionでとれるのですが…。
673 :
デフォルトの名無しさん :2005/10/14(金) 21:44:17
IアプリからサーバーにPOSTでテキストデータと写真データを同時に送りたいんだけど、 どうやるか教えてください。
>>671 無事に取れることを祈れ
long getCTPeriod()
{
long v1 , v2;
v1 = System.currentTimeMillis();
while( v1 == System.currentTimeMillis() );
v1 = System.currentTimeMillis();
while( true )
{
v2 = System.currentTimeMillis();
if( v2 != v1 ) break;
}
return v2 - v1;
}
>>674 ここって最初の1行だけでよくない?なんで繰り返してんの?
>v1 = System.currentTimeMillis();
>while( v1 == System.currentTimeMillis() );
>v1 = System.currentTimeMillis();
>>675 値取得だけならそうなのかも。てことはこんな感じでよくね?
long getCTPeriod()
{
long v1;
v1 = System.currentTimeMillis();
while( v1 == System.currentTimeMillis() );
return System.currentTimeMillis() - v1;
}
センターにメールがあることをチェックするにはどうすればいいのでしょうか? PhoneSystem.getAttribute(PhoneSystem.DEV_MAILBOX) がPhoneSystem.ATTR_MAIL_AT_CENTERであるかどうかを調べればいいのかと 思ったのですが、この方法だとエミュレータではうまくいくのですが実機だと うまくいっていないようです。 この方法ではセンターに届いているメールはチェックできないのでしょうか?
>>677 トラステッドアプリじゃないとその機能使えません
エミュレータでは動くけどね
679 :
677 :2005/10/15(土) 18:42:25
まじっすか ありがとうございました
680 :
デフォルトの名無しさん :2005/10/15(土) 20:06:35
iアプリのSSL通信で困っています。 P505iS で https(SSL)上で マルチパート形式のレスポンスが返るPOSTリクエストを 送信( connect() )しますと、 ConnectionException.SSL_ERROR が発生してしまいます。 P505iS以外の機種では発生しません。 こんな経験ある方、いらっしゃいますか。
681 :
デフォルトの名無しさん :2005/10/15(土) 20:07:23
iアプリのSSL通信で困っています。 P505iS で https(SSL)上で マルチパート形式のレスポンスが返るPOSTリクエストを 送信( connect() )しますと、 ConnectionException.SSL_ERROR が発生してしまいます。 P505iS以外の機種では発生しません。 こんな経験ある方、いらっしゃいますか。
>マルチパート形式のレスポンス のデータサイズは?(Contents-Length)
683 :
デフォルトの名無しさん :2005/10/15(土) 22:48:48
681です。 >のデータサイズは?(Contents-Length) サーバーでContents-Lengthは設定していないのです。 POSTリクエストがあったということは、サーバーにログが残っているということですね?
>>673 ちょうど、漏れも同じ事を調べてた。
これぐぐってみ。
つmultipart/form-data
>>673 ,684
てゆっか、サーバサイドの仕様による。
サーバサイドも自分でつくるなら、わざわざmultipart/form-dataなんて仕様にのっとらなくても
適当にプロトコル決めて勝手におくっちゃえばいいよ。
たとえば
1バイトめ: テキストのサイズ
2バイト目: 画像のサイズ
3バイト目以降: テキストデータ
(テキストのサイズ) + 2バイト目以降: 画像データ
みたいな感じで。
サーバサイドがmultipart/form-dataをうけとめるように作られちゃってるなら、
もちろんそれにのっとって送る必要はあるけど。
686 :
デフォルトの名無しさん :2005/10/16(日) 10:36:54
681,683です。 サーバのログをみたところ、P505iSだけHTTP/1.0 他の正常な機種はHTTP/1.1 という違いはありました。
687 :
デフォルトの名無しさん :2005/10/17(月) 10:38:50
ビルドして起動し、操作すると 「java.lang.RuntimeException: openFlag」 というメッセージが出て、アプリが終了します。 どうしてなのでしょうか?教えてください。
>>687 すまんが日本語でしゃべってくれないか?
>>688 は理解力が足りないようだな。
>>687 アプリが終了する原因は
「java.lang.RuntimeException: openFlag」
が出てるからだったんだよ!!!
たんたんとtry catch
iアプリ初心者です。 getPixelsで配列化したデータをイメージに戻したいのですが良い方法ありますか?
692 :
デフォルトの名無しさん :2005/10/18(火) 12:35:05
解決しますた
解決したのならどうやったか書いてくれると、次に同じ疑問を持った人が助かる。
まぁsetPixelsっていうそのままのメソッドがあるわけだがw
ですな。
696 :
デフォルトの名無しさん :2005/10/19(水) 10:15:01
>>689 「java.lang.RuntimeException: openFlag」 が
出る原因は何なんでしょうか?
697 :
デフォルトの名無しさん :2005/10/19(水) 10:25:06
イメージの反転を行うsetFlipMode()メソッドの回転の中心は イメージの中心なのでしょうか? また、イメージの拡大縮小を行うdrawScaledImage()の拡大縮小の 基準点はどこなのですか? 教えてください。
>>697 なぁ。一度でもいいからエミュレータで動かせよ。な?
>>697 APIリファレンス読んで判らないならここで言っても判らない。
つうか、基準点なぞ存在しない。
読んでわからないなら、作って動かせ。
>>696 >>687 なんだろうが・・・あれだけの情報で判る奴なんて居ない。
起動して落ちるとか書いてるけど、起動してどこで落ちてるかぐらい調べろ。
なんとなく
>>697 も同一人物くさいな・・・。
まずはテンプレにあるサイト回って基本となるソースの構築から勉強しろ。
いわゆる土台となるスケルトンが作れないのに画像描画とかはまだ早い。
サウンドについて質問です。 波形データのMFiとMIDIっぽいMFiの二種類があると 思うのですが、波形データのMFiを複数同時再生することは 可能でしょうか?
ピクセルのRGBの値をとりたいのですがgetColorOfRGBの使い方の例を見てみたりすると、 色を直接指定してしまっていて肝心の値をとれていないようなのですが他に方法があるのでしょうか?
>>702 もう少し分かりやすい日本語で。
とるならgetPixelがあるはずだが。
>>702 お前はgetColorOfRGBを何だと思ってるんだ。
「これはこういう機能の筈だ」っていう先入観を捨ててからリファレンスを読め。
エミュだけでやってた時代getPixelとgetRGBPixelの 違いに気付かなかった俺が居るw いざ実機で動かしてみた時に焦ったもんだw
かえって性能が上がりすぎると恐いね。 家ゲーと同じ運命を辿りそうで…
>>707 同意
解像度なんか GBAよりすでに上だったりするしなァ
おいおい504→505の画面テラチイサス再来か!?
しかしVGAになったらアプリでの使用容量が単純計算で4倍必要に なるって事だよな しばらくは無理か?
画像はでかい方が圧縮がかかりやすい傾向にあるから意外と小さくなる
質問です。 実機に対応していない機能、例えばDoja3.0のカメラ機能を使う処理がアプリ内にある場合、 それをDoja3.0以前の504iなどで実行するとその処理は無視されるのでしょうか? それともエラーで落ちるのでしょうか?
実行時例外。
駄目だ。。。1人では解決できません。助言お願いします。 Win2000 eclipse Ant で 900用のプログラムを製作中です。 spsize 409600 にして run したら Image.use 中に Uncaught exception java/lang/OutOfMemoryError というエラーがeclipseコンソールに表示され、強制終了する様になってしまいました。 検証したのですが、 spsize 204800 だと、エラー落ちせず、 spsize 307200 だと、2画像だけ use出来て、3画像目の useでエラー落ちします。 spsize 409600 だと、1画像も useが実行出来ずエラー落ちします。 どうやれば解決するのでしょうか? よろしくお願いします。
716 :
715 :2005/10/20(木) 21:44:03
すいません。 書き忘れました。 読み込んでいる画像は全て gif です。
717 :
715 :2005/10/20(木) 21:54:48
解決しました。
ttp://cgi.sinsen.org/bbs.cgi?start=1079 > スクラッチパッドを使う場合は"scratchpad:///0;pos=1024,length=512"などと
> アクセスする場所と長さを指定するとメモリ消費が若干改善されると思います。
これ試したら、嘘の様に動き始めました。
エミュレーターのメモリ不足だった様です。
お騒がせしてすいませんでした。
ああ、、、今日1日の悩みは何だったんだろうか、、、
719 :
702 :2005/10/21(金) 03:39:10
レスありがとうございます。 g.getRGBPixels(0,0,w,h,pix,0) などで画像のピクセルの抽出処理をするとします(wとhは画像の幅と高さ) それで例えばネガポジ反転したい場合、ピクセルごとに255からrgbそれぞれの値を引けば 実現出来るのは分かりますが、その肝心のrgbの値が何処に格納されてるかが分かりません。 もの凄い検討違いな事言ってるかも知れませんがよろしくお願いします。
すいません、pixはw*hの長さを持つピクセルを入れる配列として用意してみました。
722 :
720 :2005/10/21(金) 06:07:22
>>721 いや、だからさw
そのpixに入る値があんたの求める「rgbの値」だろ、って言ってんの
>>702 なあ、APIリファレンス読んでるか?それともどこかのサイトか本を読んでるのか?
APIリファレンスに「色を0xRRGGBBの形式で取得します」って書いてあるのが読めない?
それとも日本語が理解できない?
16進数とか、ビット演算とか知ってるか?知らないとRGBを取り出せないぞ?
レスありがとうございます。日本語理解出来てませんでした… 今度からちゃんとAPIリファレンス読むようにします。
って事は読んでないと?
最低限の事をやってから質問するように
すみません、iアプリでWindowsで言うところの PostMessage相当のメソットはありますでしょうか?
>>718 大画像の方がヘッダ分の誤差が小さくなるから間違ってはない
>>727 そもそもメッセージなんか飛んでない。
何をしたいんだ?
730 :
727 :2005/10/21(金) 16:48:10
>>729 できればprocessEvent()へメッセージを集中させて、
イベント管理を行いたかったのですが。
SendEvent≒progressEventを直接呼ぶとした場合、
PostEventに相当するメソットが有るといいなぁと思いまして。
漏れは直接processEvent()呼んでるw
>>730 俺も
>>731 と同じ。
だが非同期にしたいのであれば、自分でSTACKを作ってPUSHし、メインループを抜けたところでPOP&直呼びすればいいと思われ
なんか、最近の質問はすべて>702がしてるんじゃないかって気がしてきたよ・・・ もしそうだとすると、いったい何を作ろうとしてるんだろう?
質問するのはいいんだが、書き込む前に深呼吸とAPIリファレンスの読み直しをお願いしたい気持ちだ。
DoJa4.1情報+4.0機種依存情報キター
外部SP読み書きってキモいね。
はいはい、誰か4.0→4.1の変更点まとめといてね。 PDFをDoJa 4.1か何かで検索すれば良かったはず。
・0が1になった
はいはいわろすわろす
SDカードがスクラッチパッド代わりに使えるようになった
Pだけな…
ファイルシステムマダァ? 階層を表現するのマンドクセ
ファイナルシステム承認!!!
何の階層だ? ファイルシステムは管理(分類)のし易さから木構造に なってるけど、iモードじゃいらないだろ?
質問です。 CanvasとPanelを切り替えて使うアプリを作っているのですが、 Canvasでいろいろ表示した後、Panelに切替、再度Canvasに切り替えた時、 デフォルトのCanvasに戻ってしまいます。 Panelに切替る前のCanvasを表示させるにはどうすればいいんでしょうか?
32のサイトで解決しました、すいませんorz
Javaってnewの意味も知らないで書けるのか。凄いな・・・
脈絡もなくnewの話をして、何を一人で感心してるんだ?
750 :
745 :2005/10/25(火) 23:23:24
CanvasをPanelから戻るたびにnewして作り直してるからではなく?
>>745 Panelから戻ってくる時に、Display.setCurrentにデフォルトのCanvasを指定しているとか?
Panel⇔Canvasはこのスレの505近辺で話題に出てるぞ。
もっとも参考にならんかもしらんけどな。
そして俺は今から901シリーズですら描画遅れの出るクソソースをリファクタングさorz
こんなソースばっかり書いてるから成長しねぇんだ、俺。
>>751 作り直してはいないです。
>>752 あー、それっぽいです…
Display.setCurrentにデフォルトのCanvas指定してます。
どう直せばいいんでしょうか?
このスレは一通り目を通したので、505〜も読んだんですが、
最初の段階でパネルもキャンバスも生成してるので、そこら辺は大丈夫だと思います。
切替部分のソースのせてみそ
そもそも「デフォルトのCanvas」の意味がわからない。何のことだよ。 CanvasをPanelに換えて、再びCanvas(元と同じオブジェクト)に換えるんだよな。 で、そのときのCanvasがどうかなってて驚いてるんだよな。 具体的にどうなってるんだ?何に驚いてるんだ?そこを書かなきゃわからんよ。
756 :
755 :2005/10/26(水) 00:49:42
確かにわかりにくかったですね、すみません。
キャンバスとパネルは1つずつです。
あくまで切替を学ぶためのアプリで内容はあまりないんですが、
キャンバスに初めに■を描画させていて、ボタンを押すことで他にも●などを描画します。
パネルに移動し(特に処理はしません)、再度キャンバスに戻ると初めに描画させた■だけが表示されています。
これをパネルに移動する前のように、●などを表示させた状態で表示させたいんです。
>>754 キャンバスからパネルに移動する時は、
Display.setCurrent(((test)IApplication.getCurrentApp()).MyCanvas);
パネルからキャンバスに移動する時は、
Display.setCurrent(((test)IApplication.getCurrentApp()).MyPanel);
です。
758 :
755 :2005/10/26(水) 01:38:34
>>757 そういうことか。
Panelから(元の)Canvasへ切り替えても画面内容は保証されないよ。
自分で画面全体を再描画する必要がある。変数の値は保持されている。
他にも例えば電源ボタン押して一時中断して(ダイアログが出る)、
ダイアログをキャンセルしてアプリの画面へ戻ったときも画面内容は保証されない。
自分で再描画する必要がある。これは開発ガイドにも書いてある。
>>758 なるほど、そうなんですか。
みなさんありがとうございました。
失礼します。 iアプリでその携帯の固有番号を収得する事は可能なのでしょうか?
>>760 無理。あと取得しても意味ない。自分で乱数作れば良い
>>761 流石NECクオリティ。全然直す気無いのな。
>>761 お前、何をいまさらw
さんざここで対策会議が開かれたぞ。
iモード絵文字の外字ファイルって公式にはないのでしょうか?
>>765 エミュレータをインストールする時に設定できるんだから、あのどこかにあるんじゃないの?
公式にある絵文字入力ソフトを起動すると「外字ファイルのパスを指定して」とでるのですが、 その絵文字入力ソフトのフォルダの中にdocomo.tteがありました。 なぜ手作業か意味不明。
Dojaプロファイルバージョン番号は取得できないのでしょうか? 作成中のアプリにアプリ連携機能を追加したいのですが、 Doja3.0未満のユーザがやってしまうとエラーで落ちそうなので判定したいのです。 System.getProperty("microedition.platform");でしこしこやるしかないんでしょうか
>>768 APIリファレンス読んで無いんなら無いんじゃね?
少なくとも俺は聞いたこと無いし。
逆にADFに動く端末を設定できるから、そっちでやるといいかも。
ちゃんとあるよ。 エラーで落ちるならClass.forName().newInstance()を使ってtry catch。やったことないけど。
System.getProperty("microedition.prodiles") 書き忘れたorz
×System.getProperty("microedition.prodiles") ○System.getProperty("microedition.profiles") もう(ry
773 :
768 :2005/10/27(木) 22:58:00
ありがとうございます。 当方手持ちのSH505i(Doja3.0)で実行したところ、 なぜか "DoCoMoProfile-2.0" と表示されました。あまりあてにならない値なのかな
ちょっとまて、そんな馬鹿なw
775 :
768 :2005/10/27(木) 23:56:53
public static String profile = ""; (中略) profile = System.getProperty("microedition.profiles"); (中略) menu_panel.setTitle("メニュー:" + profile); これで出ました。
>>761 これって長時間アプリを動かし続けるとメモリ不足でぬるぽ?
回避策ってどうしようもないの?
コンパクションはしなくても、再利用はするだろ。
>>774 SH505は知らんけど、SO505iならDoCoMoProfile-2.0て返してくれるのを確認したぜ
>>770 floatを使っていたら、N506はダウンロードすら拒否されるのをおまいは知らないな
そもそも、Class.forName()して、newInstance()した後どうするんだよ。 Methodクラスもないというのに:-)
781 :
768 :2005/10/28(金) 01:03:15
やっぱり System.getProperty("microedition.platform"); でDoja3.0未満の機種名を全て判定するしかないようですね
N503ではInteger.parseInt("")で例外を投げる前に落ちる? 初回起動時にスクラッチパッドにreadUTFしたらまずい。 みたいな初心者の頃のメモを発見した。
ダウンロード時に振り分けろっつーの
アプリ連携機能だけoffにしたいんじゃないの? ADFで動作機種限定するのはどうかと思うが 機種ごとにアプリつくり分けるのも面倒だしな
503ではread〜がうまく行かない機種があったような。 代わりにInputStream.readでnew Stringとか。 全部数値とかフラグはintとビット演算子でちまちまやってた頃が懐かしい。
>>760 phone.getproperty(phone.terminal_id)とかでできね?うろ覚えなんでぐぐれ
>>786 String sTerminalId = Phone.getProperty(Phone.TERMINAL_ID);
とかだな。
これで端末固有のIDは取れる。
ちなみに電話番号は無理。
>>784 あぁ、以前話題になったが、
ADFの機種限定は判定ルーチンが腐ってるからやめたほうがいい
レンタル鯖のアクセスログみたら504iが0.1%しかなかった もう切り捨てていいかいな
いいよ
もう捨ててるほうが多いだろ
ゲーム類なんかは、今でも新作で504対応のものが出てて かえってビビらされるな。
504iで動くようなものは505i以降じゃフリーズしそうだw
しかし、ずいぶんと遠くに来たものだな。 N503iのタイマ精度に怒り狂ってた頃が懐かしい。
>>794 これから何処に行くのかが、段々心配にはなってきましたけどね。
505時代が一番良かったのかな。
505の画面サイズはでかいのにあちこちの容量が足りない時代に また戻りたいってのか? これからしばらくは901のスペックがハイエンドで固定でしょ。 アプリ作って売る側にしても、制作期間が延びた癖に アプリの値段がほとんど変わってないから、 これ以上容量とか増やされても商売として割りに合わないだけだし。
まったくだ。 その点では505が良かった。 今は「通信で画像とってくればいいでしょ。定額制なんだから」とか言われる。ふざけんな。
ばあさんがふともも出すなよw
>>799 15分くらい必死で考えたけど、どういう例えなのか解らなかったヨ
801 :
デフォルトの名無しさん :2005/10/31(月) 13:38:55
エミュレータで動いて実機で動きません・・・ dojaです。
>>800 ・ふとももちらり>つい見てしまう>ばぁさんにがっかり
・新機能追加>何も知らない上層部が食いつく>作成部ガッカリ
>>801 愛がないと動きませんよ
Dojaエミュレータってビルド設定でバージョン指定できるのね。 でも指定できるバージョン中途半端すぎ。
>>801 dojaです・・・
実機でサポートしてないAPIあるかもとです!
dojaです・・・
バージョンの確認しましたか・・・?
dojaです・・・
実機の独自仕様とかもあるとです・・・他の実機でも試すとです
dojaです・・・
ロクなレスが返せません!
dojaです・・・
dojaです・・・
dojaです・・・
>>805 優しい奴から死んでいく・・・
生き延びたかったら気をつけることだ、坊や。
808 :
デフォルトの名無しさん :2005/11/01(火) 20:03:00
iアプリから設定できるカメラの静止画サイズ、普通にカメラ機能で設定できるサイズと 違うと言うのは聞いていたが、640×480すら選択できないのか。 505で640×480設定出来るから、FOMAの機種でも出来るもんだと思っていたよ。
文字サイズから何も学ばないドキュモちゃん
810 :
デフォルトの名無しさん :2005/11/01(火) 20:20:27
おまいら、iアプリを今から 作る勉強をしているおれに協力してくれ。 javaとかいう言語を使うのはわかったお 具体的にどういうもんが必要なのかお ぐぐったら「市販の本を買って付属のCDからインスコ」 とか書いてたけど・・・ おすすめの本とかあるかい?
812 :
デフォルトの名無しさん :2005/11/01(火) 20:29:00
>>810 ありがとう!
ヴざったらしいかも知んないけどまた質問に来ます
お前は本買ってないのかと
814 :
デフォルトの名無しさん :2005/11/01(火) 20:40:55
>>813 金が出来次第買います。ご迷惑をおかけします。
java2 SDK Standard EditionのDLの具体的な場所がわからなく、困っています。
わが社の本を買えというSUNの陰謀でしょうか?
http://java.sun.com/j2se/1.4/ja/ ↑ここからだとどういけばDLページに着くのでしょうか?
辞書と睨めっこしてましたが無理です・・・
ここの住人は何故か質問にはとても冷たいけど的確なレスを返してくれるよ。ガンガレ。 と言う訳でまず本を買ってからにしろ。
>>814 まずはそのページ右側に注目してみようか
一瞬で見つかるな。
やばい、すげぇ釣られそうw
819 :
デフォルトの名無しさん :2005/11/01(火) 22:49:18
その次のページで 「NetBeans IDE + J2SE SDK」と「J2EE 1.4」 の絵を見てカッコイイと思った方をダウンロードすればOK
821 :
デフォルトの名無しさん :2005/11/01(火) 22:58:51
822 :
デフォルトの名無しさん :2005/11/01(火) 23:05:33
j2eesdk-1_4_02_2005Q2-windows-ml.exe 色々やってたらこの様なものをDLしましたが実行してもよかですか? WINですよスペック
その次はNoClassDefFoundExceptionだな。
826 :
デフォルトの名無しさん :2005/11/02(水) 10:45:55
ところでJDK1.3でなくていいのか?俺はとりあえず1.3にしてるんだが・・・
1.4じゃダメだろ。 推奨は1.3だ
動作確認したのが1.3で実際には1.4でも問題無く動いてる。 1.5は駄目なんだっけ?
保証されてるのは1.3。 漏れは普通に1.5使ってるけど、いわゆるひとつの自己責任という奴。
833 :
831 :2005/11/02(水) 14:46:20
いや、古いバージョンでもダウンロードはできるようだな、失礼。 過去のバージョン履歴が閲覧できてダウンロードページへもジャンプできた。
>>810 市販の本には、ろくなのがないから買わん方がいい。
市販じゃないロクでもある本とやらを見てみたいもんだ。
少なくともDoJa-4.0のドキュメント(DevGuide.pdf)には J2SE SDK 1.3.1〜1.4.2 で動作保証するって書いてあるにょ
837 :
デフォルトの名無しさん :2005/11/02(水) 17:45:22
>>823 爆発するですか・・・ リカバリしたばかりなのにそれはやんだ。
>>824 ありがとうううみてみるお・・・
他の方たちのもみてからきめるお
>>825 そういえば立ち読みで見たjava参考書にclassとかかいてました
>>826 .829
最新バージョンでは色々ちがうのですね・・・
>>827 ありがとうございますww
色々とすみませんww
>>828 マジですか
>>831 要するに今DLしろという事でしょうか?
>>832-833 ありがとうございますww
>>834 .835
要するに市販買えということですか
最新が一番心配なさそうですね
DLしてみます。
みんなありがとうwww工房の俺に新設に本当ありがとうwww
いやいや836を読もうぜw と工房の俺がレスしてみる
とりあえずwwと、わざとらしい誤字を止めろ
840 :
デフォルトの名無しさん :2005/11/02(水) 20:56:53
わかりました。
841 :
デフォルトの名無しさん :2005/11/02(水) 20:59:46
とりあえず java2最新版とdoja4.0 導入できました。ありがとうございます。 まだ本を買う金はないので javaの解説してるホームページでも見てみます。 また質問に来るかもしれないのでその時はよろしくお願いします。
>>841 いや、どうせ携帯用なのだからJavaらしい書き方されては困るので
いきなりi-modeの解説ページに行ってくれ
>>843 なんだ?このWindowsマンせー的なHPは・・・
目が痛い
文句の多い奴だ!
>>845 「かーちゃん!フランクフルト買ってくるときはカラシ買ってこいって行ったろ!?」
「これか?」
「だからこれ、『和』だよ『和』!そうでなくて俺が言っているのは、なんかプチプチ種みたいなのが入ったやつなんだよ
いっつも言ってんのになんでかってこないんんだ?いいかげんにスレよ」
「ソースでええやん」
「前に同じこと言ったときに『わかった』とかいったくせに・・・勝手こいよ早く」
「文句の多い奴だ! 」
いや、それはとーちゃんが悪いだろw
>>841 ちなみにアナタの持ってる携帯の機種は?
849 :
デフォルトの名無しさん :2005/11/02(水) 22:44:16
850 :
デフォルトの名無しさん :2005/11/02(水) 23:38:26
Hello Worldがやっとできました・・・ クラスとかがなんか引っかかりますが。何なんでしょう。 専門ページもむずかしいですねー専門用語は立ち読みで覚えた分しか わからないです。(コンパイルとか) まあ今日は寝ます。PCばかりしてる人はこんな難しい事を やってるんですね。凄いです。 また明日でもお願いします。
>>849 D900iだったらDoJa-3.5をインストールした方が良いと思う。
エミュレータと携帯のDoJaのバージョンを合わせておけば
>>551 みたく
無駄な金や時間を費やす確率が随分減ると思うので。
>>850 そりゃ、毎日10時間以上プログラム組んでる生活を何年も続けてりゃ出来るわな。
学生が数時間の勉強で「タリー」とか言ってるのとは次元が違う。
つ【PCの前に軟禁されて強制的に勉強させられてるとも言える】
質問させてください Canvasを使ってゲームを作ろうと思っているんですが、キャラクターを移動させる際 キーを押しっぱなしにしていると、キャラクターの座標(xとする)を変化し続けるようにするには どうすればよいのでしょうか?下のままでは何度も押さないといけないので public void processEvent(int type, int param) { if (type == Display.KEY_PRESSED_EVENT) { if (param == Display.KEY_UP) { x = x+1; } } }
キーを離したら飛んでくるイベントがあるよな? それがくるまでは押し続けているということ。 またはgetKeypadState
面倒なのでおまいらが作ったフレームワークください
>>854 それはわかるんですが、押されている間だけx+1を繰り返す処理の書き方がよくわからないんです。
すみません。
857 :
デフォルトの名無しさん :2005/11/03(木) 10:29:54
>>852 すごいっすねー
根性に感服です。
>>851 うわ・・・・それはいやですね。
バージョン変えてみます。
>>852 あほや、仕事でやっている奴なんてたいした事ね-やつ多いよ
一番すごいのは趣味でやっているやつら
859 :
デフォルトの名無しさん :2005/11/03(木) 10:35:29
ちょっとした疑問なのですが、 FFの様なゲージがたまる→自分のターンが来る 見たいな戦闘を織り交ぜたRPGは容量等を考慮して 実質作成は可能のなのでしょうか?
>>856 別のスレッドかタイマー起動してやるしかない
JavaはWindowsとかのイベントループが無いので
それを自分で書く必要がある
>>860 あー、そうなんですか。
タイマーもいろいろ試行錯誤してたんですが、自分の力ではちょと無理っぽそうでした。
もうちょいいろいろ考えてみます。
ありがとうございました。
>>859 出来る。
というか、そのプログラム容量とデータ容量の配分を企画と話合ってどうするかを
決めるのはPGの役目だぞ(一般的に)
ゲージシステムは容量とはあんま関係ないとは思うが
戦闘システムのコード量が嵩張ったら、30KBにおさまらないジャマイカ
話し合って決める?だって? ち〜が〜う〜だ〜ろ〜 企画と喧嘩しながらプログラム容量を"守る"のがPGの仕事だ やつら貪欲な化け物さ 油断をすれば骨まで食われる
>>864 ・タイマ1個
・個人別ゲージ格納変数
・個人別ゲージ描画
ぱっと考えて容量増になるのはこれくらい。
それ以外の判定処理などはドラクエタイプと変わらんはず。
凝ったデザインのゲージにしたいなら無視できんけど。
みんなやる気あるんだな〜 容量なんて入るものは入るし、入らないものは入らないんだから、 普通に無駄なく作って容量足りなくなったら仕様削ってくださいって 言うだけだろ。 削ってって言う時にこっちの仕様削減案を出すのもポイント。 あと、良い子は製作中にresフォルダにダミーファイル 突っ込んで軽く容量アップとかしながら容量足りない感を 演出したりしちゃいけないゾ!
>>867 作った後に仕様削るってヤバいよ
PG的にはエンバグ原因になるし、
企画的にはバランス調整やり直し、
仕様と一緒に削られたデータを作ったデザイナ&サウンドは膨れ顔
削るのにも時間かかるからこれでスケジュール遅延決定。
入りそうに無い物ははじめから入れさせない。
これ大事。
あとダミーファイルは普通にやってる。
自分への緊張感の為に。
>>868 もちろん始めから絶対入らないってわかる時は
始めの仕様を削らせるよ。
ウチのクライアントは結構慣れてる人多いから
そこまで悲惨な削り方をしなくても済んでるんだけどね。
それでも、馬鹿アーティストもどきが出てきたおかげで
今度ミーティング行かなきゃならんわけだが('A`)
ホント、採算も計算できない斜陽産業の連中は嫌だね。
PCで携帯ゲームってできますか?
>870 じゃぁまず、なぜPCでやる必要があるのか、から聞いてあげる。
公式エミュレータ使えばいいじゃん
だれも突っ込まないからいまさらだが突っ込むか・・。
>>861 散々過去にも出てるのだがprocessEvent内で処理を行う内容は最小減にしとくべき。
押されたら動かすんじゃなくて
押されたという情報を記録してその記録をメインループで見て動かすべき。
ヒントとして押されっぱなしだけを検知したい場合はprocessEventは使わないでいい。
以下上が押されっぱなしか?の例
static final int KEY_UP = (1<<Display.KEY_UP) | (1<<Display.KEY_2);//マクロ
int keydata;
//処理のメインループ
while(true){
/*ここらでウェイトの調整などなど*/
keydata = getKeypadState(); //キーデータ取得
if((keydata & KEY_UP) != 0){
/*押されている時の処理*/}
}
上の例だとちょんっと押された時に反応しないのでprocessEvent内で
押されたと言う情報を取得して組み合わせる。そこは考えてくれw
全部言ってもしゃーないしなw
件の工房じゃないがちと質問。
processEvent()内の処理を最小限に・・・って、どんな理由から?
現状、漏れはショートタイマーでメインループ、
必要に応じてrepaintコール、
paint内で全ての描画を担当させてるんだけど。
スクラッチパッドのアクセスや通信はスレッドにて。
一応コメントしておくと、ゲームではないので高精度タイマーは不要。
>>873 の例だと、スレッドでメインループ作ってるわけだよね?
その方がベターな理由があれば教えて欲しい。
他のイベントが取れなくなるんじゃね?
>>874 以下開発ガイドからのコピペ
--------------------------------------------------------------------------
processEvent()メソッドの呼び出しは、ユーザーの操作やタイマーなど
非同期なイベント発生を契機として行われます。
processEvent()メソッドの呼び出し時に、それがどのようにスレッドに
割り当てられるかはメーカーにより異なりますので注意してください。
例えばあるメーカーの機種では、同時に発生した複数のイベントに
対して1つのスレッドで処理を行うかもしれません。
processEvent()メソッド内で行われる処理は極力短時間で完結するようにしてください。
--------------------------------------------------------------------------
つうわけで禁止ではないが推奨ではないってことだな
processEvent()内で色々な処理を多数やらせるのは。
過去の例でかなりでてたのが、イベント内で描画やってたり
通信部分を書いてあったりしたので注意を促したまでだよ。
その重い処理をやってる間に何回イベントが呼び出されるかわからんし。
イベント内で作っても出来るから別に構わないじゃん!って考えだと
後々苦労する(仕事では無難なのが一番・不具合の元になりやすい)し、
今は良いが昔の機種では処理速度が極端に違ったりしたんで
昔から作ってる奴はあまりやらないと思うよ。
100番付近を読め!
878 :
874 :2005/11/04(金) 14:22:46
>>875 ,876
サンクス。
iアプリは・・・と言うかjava初なので参考になりますた。
普通やらない事をやるなって事ね。
いや、むしろGraphicsを奪い取ってスレッドで上書きする手法の方が
邪道のような気がするがw
とりあえず今のアプリはこのままでよさげなので、
ゲーム作る機会があったらそのとき作り替えますわ。
>>877 100getttt
いやスマン、このスレは全部読んだつもりだったんだが、
114以降を読み飛ばしていたらしい。
(113を読んだ記憶があr
879 :
821 :2005/11/04(金) 16:44:56
返答ありがとうございます。 FF風戦闘はなんら問題ないのですね。 まだ金が出来てないので立ち読み中ですが やっとクラスとメゾットの意味がわかりました。 俺のiアプリ最終目標は FF風RPGをフリーで出す事ですが 現時点では必殺技があるオセロを目指して作ってみます。 また質問があったらよろしくお願いします。先輩。
必殺技いらねええええええええええ
オセロとFF関係ないやん。ワロタ
>>879 簡単なアプリ作成からやるのは良い事だが・・・
オセロは決して簡単ではないと思うけどなww
ルール部分は楽勝だと思うけどCPUの思考アルゴは
やり始めの人間にはかなり厳しいんじゃね?
ま、CPUさえ除けば練習としては持って来いかもなぁ。
CPUも考えがあんまり無い奴ならすぐ作れるし。
ま、がんばれ。
>>879 描画やイベントに詰まったらまた来い。気が向いたら答えよう。
しかしオセロの必殺技・・・
盤面の1マスをランダムにひっくり返すとか、2連続で置けるとか?
最外周部のマスを時計回りに1マスずつずらす、とか面白そうやな。やられたら泣くが。
885 :
821 :2005/11/04(金) 20:07:56
>>880 ごめんよパトラッシュ、僕もう決めたんだ
>>881 なんか普通じゃない奴作りたいんですよ。
>>882 いやあ、考えると面白いんですよこういうの。
実現可能かはともかく。
CPU考えてませんでしたorz
単純なのからやってきます。
>>883 必殺技の構想(だけ)はきまってるんですが・・・
コマをひっくり返した数が何回以上で〜て感じで。
妄想案
・四隅ゲット
・台を揺らして現在あるコマをランダムに配置する
・・・まあ多分無理ですがorz
質問の際はよろしくお願いします。
>>821 後学のために企画屋とプログラマは全く仕事が違うって事を
今のうちから覚えておいた方がいいぞ。
ネタ考えるのはプログラマの仕事じゃないからな?
よく専門学校のゲーム科とかにプログラマ志望入っちゃって、
道を踏み外す奴の大半がコレ。
企画も別にネタばっかり考える仕事じゃないんだけどな
必殺技がある時点でオセロじゃね~
889 :
821 :2005/11/04(金) 20:44:10
>>886 ただ単にアプリが作りたくなっただけなんです・・・
すみません。別に専門とか行く気はないです。
ごめんなさい。
>>888 オセロに代わる名前プリーズ
>>890
おろろ
リバーシDX
かえすんじゃー
ふたりはオセロキュア
894 :
821 :2005/11/04(金) 22:08:37
オセロキュアワロスwwwwwww ありがとう。まだ出来るかもわかってないのに。 がんばるよ。
ツボにはまって鼻血がでたwww
何このフレンドリーなスレ。(゚∀゚)オレモマゼテ!!
>>894 一通りJavaの知識ついてきたなと思ったら、サンプルプログラムとかでGoogleやYahoo検索してみるといいぞ。
基礎的なiアプリのソースコードが出てくる。
参考書とか書籍が無くても、やる気になれば、HPやJavaドキュメントを見て作れるものさ。
897 :
デフォルトの名無しさん :2005/11/05(土) 00:50:55
SH506iC向け(それ以外の機種の動作はどうでもいい)の アプリをつくりたいんだけっちょも、 この場合、DoJaのどれをダウソすりゃいいかわかんね。 おせーて
つドキュメント
getRGBPixelで取得した値をR,G,Bの各要素ごとに 3つの変数に代入したいんですがどうすればよいのか教えて欲しいです。
ヒント:ビット演算子
>>901 もうちょい
(´・ω・) ヒントホシス
と、思ったけどできったぽいです。
>>901 (´・ω・) アリガタス
904 :
821 :2005/11/05(土) 14:42:57
906 :
デフォルトの名無しさん :2005/11/05(土) 18:29:55
>>905 いえ、失礼ですがこんなにややこしい物じゃなくて
オセロ+必殺技(コマの配置を換える事が出来る)て感じです。
・・・あれ?おんなじ?orz
>>906 つまり、常時じゃなくて特定(必殺技使用)の時のみ、盤面をいじるって訳ね。
オセロ以外のパズル要素が、前者はもすぬごく高いが、後者はそれほどでもない。
908 :
デフォルトの名無しさん :2005/11/05(土) 20:07:14
そんな感じです。 おバカな工房の俺にはとてもそんな常時なんて
そんな企画はいいからとりあえずCPU抜きのオセロ作ってみろ。 と、工房から作りはじめた俺が言ってみる。
910 :
デフォルトの名無しさん :2005/11/05(土) 23:12:47
ウヒィ ムズカシス
911 :
821 :2005/11/06(日) 00:23:28
コンパイル後の入力ミスを探すコツを教えてください。 Dojaの表示じゃよくワカンネ 慣れしかないと書いていますが 意味もよくつかめません・・・
>コンパイル後の入力ミス どんなミスかよくわからないのだが・・・ System.out.printlnを所々に入れて どこまで処理が走っているのか調べるとかそういうことか?
913 :
821 :2005/11/06(日) 00:53:51
>>912 まだヘローワールドもできないのさ。
ヘローワールド入力中・・・
入力終わったー!
Dojaの「ビルド」押す
↓
26個のエラー
(^ω^)・・・・な、なんか . でも抜けてるんだお!
↓
53個のエ(ry
↓
('A`)・・・最初から打ち直すか・・・
↓
28(ry
('A`)・・・ああ、これか。「〜は不正な文字です」とか「<identifier>がありません」とか
これを見ながら直せってんだな。・・・identifier・・・?
↓
適当に入力
↓
どうみてもカオスです。本当にありがとうございました。
なんかこういうのは慣れって書いてたんだけど、コツとかある?意味不ならヌルーしてよかですよ('A`)
>>913 >コンパイル後の入力ミス
って書くから混乱した
コンパイル時のミス つまりソース自体の記入ミスだろう
>「〜は不正な文字です」とか「<identifier>がありません」とか
Java自体初めてなんだろ?だったら最初はそんなもんじゃないのかなぁ。
ここでミナまで教えて欲しければそのソースコード載せればいい
それ以外は、文法おぼえてね と言うしかない・・・
まあ、たぶんね、全角スペースが混ざってるんだと思うよ サイトからコピペして張ったんでしょ?
っ[ Eclipse ] ただし、コンパイルは通っても (君が)理解できない理由で 実機で動かないプログラムを 量産しやすいから要注意。 Java の参考書も用意しておこうぜってことで。
>>913 Dojaのビルダー単体でJavaプログラム書くのは、10徳ナイフで料理するようなものだ。
できないことはないが、慣れてない人間だと無理無茶無謀無鉄砲。
最低限、エディター(多機能のメモ帳って感じのソフトウェア)を、別途用意した方がいい。
準備するのがメンドクサイが、Eclipseという無料配布しているソフトがお兄さんのお勧めだ。
ソースコードの文法間違ってる箇所を警告してくれたり、変数やメソッドが一目で分かるように管理してくれる。
開発資源の管理だってできるし、ビルドだって一発簡単!
こりゃあインストールするしかないねジョニー!!
アプリにバグがあって修正したんですが、バージョンアップとして認知してくれないようです。 バージョンアップってのはどこを見てバージョンアップか別のアプリかってのを判断しているのですか?
919 :
821 :2005/11/06(日) 03:26:39
うほっ皆ありがとう。
>>914 エラー:改行が多すぎます!!!!orz
>>915 勉強にならないからそれだけは・・・とおもっとったけど無理なのでやりました。
今は反芻してます。
>>916 猛烈に金がほしいです(´・ω・)
>>917 俺の場合ナイフすら持ってない感覚です・・・
Eclipseですか。見てみます。
そういや思ったんですけど女性のプログラマーさんはいないんですかね?
いや、ちょっとおもっただけでそんな下心うわなにいuyfうおyfuo
>>918 ADFのLastModifiedキー
開発ガイド詳細編くらい読むべき
921 :
745 :2005/11/06(日) 10:10:35
再び質問させてください。 Canvasから切り替えると画面内容は保証されないということで、 切替る前に画面をjpegとして、スクラッチパッドに保存し 切替た後にそのjpegを再度読み込むことでなんとか形的にはクリアできたのですが、 jpegの性質もあってかATTR_QUALITY_HIGHに設定しても画像の劣化が目で見てとれます。 jpeg以外を使う方法か、そもそも画像として保存せずにデータとして保存する方法などあるんでしょうか?
ユーザ操作を記録してpaint()で勝手に再現されるようにしたら?
>>913 コンパイルエラーが多量に出た場合、上から順に修正していけよ。
ソースの上のほうのエラーのせいで下の方を正しく評価できない場合が多いから
最初のエラー数個を修正しただけで一気にエラーが減ることはよくある。
あと、全角文字をプログラム中に書くな。〜は不正な文字 ってのは全角使った時に出ると思いねぇ。
おれもeclipse+Dojaプラグインな環境を薦めるが、ちょっと敷居が高いのでまずHelloWorldぐらいできるようになってから朝鮮汁
>>919 プログラムは、夢を見ないことが上達のコツΣd('A`)
>>921 Doc-ViewとかMVCと呼ばれる構造にすれば、状態の再現はそんなに難しいもんでもないんだがな。
・処理と描画を完全に切り分ける。
・処理側は色んなパラメータをセットするだけにする。
・描画側はパラメータにしたがって表示するのみ。ここでは計算や変数のセットなどは行わない。
てなかんじで全体の処理を切り分け出来てれば、画面が切り替わる時にパラメーターを保存し、再現時にはパラメータを見て再描画するのみ。
>>921 ,925
それも考えたんですが、今作っているのはそれだとパラメーターの数が凄いことになってしまいそうです。
それ以外に他に手はないでしょうか?
>>921 保存してる期間だけメモリ使うけど、getPixelsとかでイメージとしてまとめて保存したら?
切替といってもスクラッチパッドに保存するのは大袈裟すぎる気がするんだが
>>921 JPEGで保存した画像のスクリーンショットをさらにJPEGで保存なんて繰り返していれば劣化するの当たり前だよな
>>926 =921
基本的には
>>925 のやり方を勧める。
パラメータの数がすごいことになるというなら、構造を見直してみるのも悪くないと思う。
どうしても他のやり方がいいというなら、こういう方法もよく使われるので紹介する。
・画面サイズのImageオブジェクトを用意する。
・Canvas内での描画処理は画面ではなく全てこのImageオブジェクトに対して行う。
・Imageオブジェクトに一通り描画したら、このImageオブジェクトを画面に描画する。
PanelからCanvasに戻ってきたときはいつでもこのImageオブジェクトを画面に
描画するだけで、切替前の画面がそのまま再現される。
ただ、常に画面サイズのImageオブジェクトが1つメモリ上に居座ることになる。
Eclipseと日本語かツールはインストールできましたが、DoJaプラグインのインストールが難しいです(><)
931 :
821 :2005/11/06(日) 15:08:05
でけたああ ていうか全角スペースめちゃくちゃあったw どうみても進歩です。本当にありがとうございました。
932 :
821 :2005/11/06(日) 15:19:08
線描くのむずかしす
933 :
930 :2005/11/06(日) 15:24:34
エミュの再インストールでできました(><) グラフィカルで見やすいです! GUIでクラスが作れちゃうんですね! メソッドの候補が出たり、間違ったら修正してくれたり凄すぎます!
934 :
821 :2005/11/06(日) 15:29:11
public void Graphics.drawRect(int 45,int 23,int 76,int 43); 線を描く命令、どこに描けばいいんですかね? エラー:式の開始が不正です てなるお
935 :
930 :2005/11/06(日) 15:32:20
DoJa3.5設定がクリックできません(><)
なぜでしょうか?コンパイルは出来ているのに…
>>934 線はこれですよ
g.drawLine(0, 0, 100, 100);
936 :
821 :2005/11/06(日) 15:40:18
>>935 うほ、ありがたす
でも違うんだ、こう、全体的に見て
g.drawLine(0, 0, 100, 100); をどこに置けばいいのかな・・・
937 :
930 :2005/11/06(日) 15:43:01
こんな感じです import com.nttdocomo.ui.*; public class Test extends IApplication { public void start() { Display.setCurrent(new Main()); } } class Main extends Canvas { public void paint(Graphics g) { g.drawLine(0, 0, 100, 100); } } 終わり
938 :
930 :2005/11/06(日) 16:09:25
DoJa3.5設定が押せました(><) プロジェクト名をを選択しておけばよかったんですね! お騒がせしました!
人に頼りすぎだぞ? もう少しサンプルコード見て頭使わないと、絶対できるようにならない。
940 :
821 :2005/11/06(日) 16:42:58
>>937 ありがてう
>>939 うは 俺もその段階にきたか。
すいませんでした。サンプル見てきます。
941 :
930 :2005/11/06(日) 16:55:04
何度もごめんなさい 実行しようとしたらAppSize(=1)<0 で NG ですと出て動きません AppName=EclipseTest AppClass=EclipseTest.Test PackageURI=EclipseTest.zip という設定です ググったところ、再インストールしたら直ったそうですが、こちらでは直りませんでした どうしてなのでしょうか?
知ってる人がいたら教えて欲しいんですが、HEADタグ内に下記のようなOBJECTタグを 設定して、アプリをダウンロードさせる側の A タグは下記のような構成なのですが P901i・D901iではダウンロードできるのにN901iではダウンロードできないという症状が出ています。 <OBJECT DECLARE ID="test" DATA="./hoge.jam" TYPE="application/x-jam"></OBJECT> <A IJAM="#test" HREF="./foo.html">Dawnload</A><BR> もしかして、タグの問題ではなくてjamの記述の問題なのかもしれませんが・・・ もしそうだとしても、機種ごとに必須のjamキーってあったりするのでしょうか?
>>942 N901iで落とせないと言うのはどういうメッセージが出てきて落とせないんだ?
ダウンロードそのものが始まらないのか?
それとも何らかの警告メッセージが表示されるのか?
とり合えず、ADFのTargetDeviceを確認。
ここが無記入もしくはall●●●(←機種の数字)になっているか?
ここに個別の機種種別が入っているとそれ以外ではDLできなくなる。
>>942 ?
OBJECTタグはHEADじゃなくてBODYじゃないとダメだと思うが。
誰からHEADタグ内に書けなんて教わったの?
>>942 Dojaフォルダの apps/???/bin/ にDownload.htmが生成されるからそれ嫁
古いDojaは生成されんかも試練。
>>941 ・設定→Java→準拠及びクラスファイル→コンパイラー準拠レベルを1.3にしてみる
・eclipse.exe -cleanで再起動してみる
たぶんどっちか。
947 :
930 :2005/11/07(月) 04:06:03
>>946 上の方法で出来ました(><)
こんなことに6時間も悩んでしまいましたorz
ありがとうございました!
948 :
921 :2005/11/07(月) 09:35:57
>>927-929 getPixelsを使うことで無事解決しました。
後学のためにも929さんの方法もやってみます。
本当にありがとうございました。
何で再描画するだけなのにgetPixelsなんて使うかなーって思ってる奴の数 ↓
もしかしてペイントみたいなの作るの?
>>922 にすればundo redoが実装できるw
>>950 よくこれだけでわかりますねΣ(゚д゚lll)
>>922 のような仕様はレベル高そうで、経験値が足りませぬ
DoJa3.5での3D表示ですが、とりあえずfigureとかを任意の3D座標に配置するのは できるようになりました。 それで次に画面上の2D座標を指定してその位置の3D座標位置を検出したいのですが これはどうやればいいのでしょうか? DirectXのサンプルなどを参考にしてやろうとしたんですがうまくいかなくて・・・
>それで次に画面上の2D座標を指定してその位置の3D座標位置を検出したいのですが さぁ、文意の怪しい質問がやってまいりました。
2Dの座標指定で3Dのオブジェクトの座標を取得するということか? そんなばかな!
あるスクリーン座標(x, y)に投影されてる点が3D空間上のどの点が投影されたものかを知りたいんだろうなあ。
>>952 とりあえず、3Dの画像を表示する時に、内部で何が行われるのか理解しよう。
「レイトレーシング」
でぐぐるべし。
956 :
952 :2005/11/08(火) 00:24:43
>3D空間上のどの点が投影されたものか そういうことです。説明不足ですみません。 PCゲームみたいなカーソルで3Dの地面をクリックしたらその場所に キャラが歩いていく。みたいなことをしようとしてます。 で、いろいろ調べて交差判定でやればいいというのを見つけたのですが 単位ベクトル4096とかで混乱したりしまして・・ この判定処理の部分はどうやったらいいんでしょう?
3D関連のスレいきな。iアプリとは関連性がない。 とりあえず面と線の当たり判定はググレばさくっと出てくることを教えておこう。 そして単位ベクトルすら理解していないのでは、3Dにはまったく手も足も出ない。 急がずまわるのが最短だよ。
3D関係のスレで聞いた方が早いよ。 つーかもはやスレ違い。 透視演算の逆が必要になるわけなんで、場合によってはそう優しい計算じゃない。 文章見てる感じだと、ガンガレとしか言い様が無いが… まあ、がんがってくれ。
>>952 大抵は投影変換行列の逆行列使うけど、MascotCapsuleは
投影変換用の行列がAPIの中に隠れているから、
2D->3Dってかなりあやふやなまま作らないといけないんじゃないか。
まあたぶん定型の投影変換計算式使ってると思うけど
960 :
952 :2005/11/08(火) 07:26:16
みなさんありがとうございます。 もうちょっと勉強して出直してきます。
>>959 昔やったときは、予想通りあやふやなまま作る羽目になった。
なんかエレガントに作れないかなー。
964 :
デフォルトの名無しさん :2005/11/08(火) 16:34:08
cgiからデータを受け取るために下記の様に書いてみたんですが、cgiから送られてくるデータはint型なんですよ。 下記の書き方じゃ当然string型として受け取ってしまうわけで、どうしたらint型で受け取れるでしょうか? try{ String w_url=new String(getSourceURL()+"test.cgi"); wo_connect=(HttpConnection)Connector.open(w_url,Connector.READ_WRITE,true); } catch(Exception e){} try{ wo_connect.setRequestMethod(HttpConnection.POST); wo_connect.setRequestProperty("Content-Type","text/plain"); OutputStream wo_stream = wo_connect.openOutputStream(); OutputStreamWriter wo_buffer = new OutputStreamWriter(wo_stream); wo_buffer.write(read_data); wo_buffer.close(); wo_stream.close();
965 :
デフォルトの名無しさん :2005/11/08(火) 16:34:30
wo_connect.connect(); InputStream wi_stream=wo_connect.openInputStream(); InputStreamReader wi_buffer=new InputStreamReader(wi_stream); StringBuffer w_StringBuffer=new StringBuffer(); String res; int w_char; while((w_char=wi_buffer.read())!=-1){ w_StringBuffer.append((char)w_char); } res=(String)w_StringBuffer.toString(); wi_stream.close(); wo_connect.close(); } catch(Throwable e){}
通信は基本的に文字列じゃね?
int hoge = Integer.toString(数値にしたいString); 余談だけど、それ某サイトのものだと思うけど、変数名がC言語風なので、Javaの規則にそった変数名にすることを勧める。
いやん間違えた Integer.parseInt()
969 :
デフォルトの名無しさん :2005/11/08(火) 16:53:58
>>967 >>968 ありがとうございます。できました。
アドバイスありがとうございます。もっと精進します。
970 :
デフォルトの名無しさん :2005/11/08(火) 20:21:12
DoJa4.0をインストールしたところ、 レジストリの書き込みに失敗したという旨のエラーメッセージが表示されてしまいます。 エラーの出るタイミングは 利用規約の承認や各種設定などを行い、実際にインストールをするとき。 もっと具体的にいえば、ファイルのコピーなどが終わったと思われる、最後の最後です。 エラーと言っても、それ以外の作業は順調に成功しているらしく インストール自体が失敗したり、中断するわけではありません。 設定が一切保存されないだけで、起動はします。 (ただし、jamファイルが正常に吐けないので意味はありませんが……) OS : Windows 2000 Pro SP4 JRE : SE v1.4.2_03 SDK : SE v1.4.2_03 レジストリ関連ということで、Adminでインストールしたらエラーは出なかったのですが 開発の度にAdminで入るわけでにもいきませんので……。 あと、Eclipse+DoJa の質問もこちらで良いのでしょうか?
☆ チン マチクタビレタ〜 マチクタビレタ〜 ☆ チン 〃 Λ_Λ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ヽ ___\(\・∀・) < 次スレまだ〜? \_/⊂ ⊂_ ) \_____________ / ̄ ̄ ̄ ̄ ̄ ̄ /| | ̄ ̄ ̄ ̄ ̄ ̄ ̄| | | 愛媛みかん |/
スマン、
>>975 は重複してるからいらない。無視してくれ。
>>973 さかきけい氏のページからは、携帯アプリ関連のコンテンツが消滅してると思われ
関連板がふるいね。
979 :
デフォルトの名無しさん :2005/11/09(水) 13:47:08
902iシリーズ全6機種は「JBlend」搭載──統一プラットフォームへ
>>979 やっと、機種ごとのやっかいな動作チェックから開放されるのか( ´Д⊂ヽ
JBlendはVMだから、グラフィックとかのハード依存部分とは関係ないだろ
>機種ごとのやっかいな動作チェックから開放されるのか んなわけないオー vodaやauはずっと以前からアプリックスだけど 動作チェックは必要
つかの間の喜びだったorz
飯だ米酒だ飲ま飲まイェイ!
携帯アプリ開発者オフとか恐ろしいことになりそうだな。
N端末開発している友達連れてっても良いか?w
やめといた方がいいのではw
989 :
デフォルトの名無しさん :2005/11/10(木) 10:50:27
data_h_y[0]=String.valueOf(data_double+0.6); data_h_y[1]=String.valueOf(data_double+0.4); data_h_y[2]=String.valueOf(data_double+0.2); data_h_y[3]=String.valueOf(data_double); data_h_y[4]=String.valueOf(data_double-0.2); data_h_y[5]=String.valueOf(data_double-0.4); data_h_y[6]=String.valueOf(data_double-0.6); data_double=171.3 なのですがこの結果を出力すると data_h_y[0] 171.9 data_h_y[1] 171.70000000000002 data_h_y[2] 171.5 data_h_y[3] 171.3 data_h_y[4] 171.10000000000002 data_h_y[5] 170.9 data_h_y[6] 170.70000000000002 ってなるんですよ。何で0000000000002ってなってしまうんでしょうか? 使ってるのはdoja4.0です
ビットで表しきれない数字、ってことかね?プログラム以外の問題。 Dojaの小数点って精度高くなさそうだし。 コレで問題起きるなら、小数点第2位で丸めるとか。
最悪手間だが固定小数から計算しなおして使う方法もありかな。 実機でやってみてから考えてみれば良いだろうが・・・。
>989 もともと浮動小数点はそういうもんです。
>>987 いいねぇ。吊るし上げオフ、お仕置オフ。
iアプリの1画面での最大表示文字数に制限はありますでしょうか?
1画面上におけるLabelの最大数やLabelに格納できる最大文字数に制限があるのか、
機種別に異なっている等が知りたいです。
>>6 のリンクを捜しましたが見つかりませんでしたのでご質問させていただきました。
ご教授お願いします。
>>994 ラベルやボタンなどは長すぎると画面外にはみでる。
折り返して全て表示してくれる機種があるのかどうかは知らん
うめ
1000ならDocomo倒産
1000!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。