1 名前:デフォルトの名無しさん [2007/08/21(火) 15:32:26 ] NTT DoCoMoのiモード携帯電話用Javaに関する話題を扱うスレッドです。 ※DoCoMo以外は下記スレへ。 CLDC+MIDP+携帯電話用Javaスレッド part 7 ttp://pc11.2ch.net/test/read.cgi/tech/1180010672/ ■ iアプリ特有ではなくJava一般に関する質問はこちらへ 【初心者】Java質問・相談スレッド104【大歓迎】 ttp://pc11.2ch.net/test/read.cgi/tech/1185493592/ ■ iモード携帯電話用Java(iアプリ)まとめサイト ttp://ton.my-sv.net/ ■関連スレ 【日本携帯】Mascot Capsule/Micro3D【標準】 ttp://pc8.2ch.net/test/read.cgi/tech/1117773530/
49 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 15:39:05 ] >>47 マスコットカプセルが特殊、あなたが正常
50 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 15:53:08 ] >>45 だからその「実際のタイマ解像度」って何かなと思ったのよ。 System#currentTimeMillis()の戻り値が常に一定間隔であることが すべての機種で確認されてるの? Thread#sleep(1)を100回繰り返したらタイマ解像度×100の時間が経過するの? 納得して議論してるなら横槍入れてごめん。
51 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 16:24:58 ] 別にいいじゃん、そんなに厳密じゃなくても動くんだし。 と思ってみたが、それを理由にして パチスロアプリの仕事を断ったような覚えがあったw パチスロってボタン押してから何ミリ秒以内に停止しないと いけないとか法律で決まってるんだよね。
52 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 18:47:30 ] そもそもは、前スレ>>999 で投下されたソースに対して、ウェイト部分に sleep(1)=タイマ解像度よりも低い値を指定しているのでは正しく動作 しないのでは?という疑問から始まった話。 実際の動作は、タイマ解像度の性能が許す限り最良の待ち時間だけ待って くれるので>>999 のソースは少なくとも間違っていないっしょ。 で、途中から可変FPSにして見かけ上の動作速度を同じにするような、一昔前の リフレッシュレートに関する論争みたいな話がでてきてどんどん脱線している 気がする。タイマの説明については>>37 の解説がハードウェア的にはあってると 思われ。
53 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 19:15:05 ] > タイマ解像度の性能が許す限り最良の待ち時間だけ待って sleepでしょ?最良ねぇ...
54 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 21:42:46 ] タイマー関連について検証アプリを書いてみた。 FPSの議論とは直接関係ないので興味のある人だけどうぞ。 akizakura.dyndns.org/i/TimerTest.html QRコード akizakura.dyndns.org/i/TimerTest.png D902iの場合 Timer#getMinTimeInterval() = 10 Timer#getResolution() = 10 System#currentTimeMillis()の間隔 min=1 max=1 avg=1.0 sleep(1) * 100 = 218ms. sleep(2) * 100 = 314ms. sleep(3) * 100 = 412ms. iアプリベンチのタイマ解像度はTimerクラスを使わないかぎり 気にしなくていいのかもしれない。
55 名前:デフォルトの名無しさん [2007/08/28(火) 10:25:14 ] iアプリでできるチェスってないかな 月額料金を払わなくていい売り切り、または無料で 将棋と比べるとほとんど見かけない
56 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 10:59:52 ] >>55 コード組む話じゃないのならその質問は板違い。
57 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 14:52:16 ] >>54 俺も試してみたよ。 N903iの場合 Timer#getMinTimeInterval() = 10 Timer#getResolution() = 10 min = 1 max = 10 avg = 1.01000908 sleep(1) * 100 = 100ms. sleep(2) * 100 = 200ms. sleep(3) * 100 = 300ms. 何回かやってみたけど、sleep(3) * 100 の結果に少しばらつきが有った。 316ms.とか。
58 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 18:46:01 ] >>57 sleep精度がすごくいいね >>54 のはsleep1回につき1ms程度のオーバーヘッドがある感じなのかな
59 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 19:58:36 ] だとすればsleepでタイミングを計る場合は 前スレ>>353 みたいにするのがいいのかもな
60 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 20:13:25 ] sleepも自前waitも使わずタイマーで回してるのは俺だけで良い
61 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 13:48:39 ] やっぱタイマー精度もそうだけど全ての端末での動作を確認したい所だよね。 特にサウンド関連なんかはちゃんと鳴るか自分で確かめたいし…。 俺は知り合いから古い携帯をもらって900シリーズはある程度集めたんだけど 901以降ってなかなかくれる人いないんだよね。。 てか、携帯の白ロム?っていうのかな、中身空のやつって店に売ってる?
62 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 14:00:53 ] >>61 白ロム.com ttp://www.sirorom.com/
63 名前:61 mailto:sage [2007/08/29(水) 17:00:50 ] >>62 サンクス。早速見てみた。 てか、白ロムってこんなに高いの?? てっきりワゴンセールみたいな感じで1000円くらいで売ってるのかと思った…
64 名前:62 mailto:sage [2007/08/29(水) 17:10:26 ] 白ロム専用の販売サイトはここ以外にもいくつかあるけど 基本的に値段はあまりかわらない。 アプリ開発する会社とかが普通に購入するから この値段で売っているんだと思うよ。
65 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 17:54:20 ] docomo使ってる友人知人に使わない携帯クレクレしてれば案外集まってこない? NとかPとかNとかPとかn ('Д'#)イラネーヨ
66 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 20:03:14 ] >>65 いらないならくれ! まあヤフオク利用する手もあるわな。
67 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 21:28:10 ] ヤフオクって取引の半数が詐欺か犯罪かヤフー社員の息が掛かってる怪しい取引じゃん・・・
68 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 23:49:01 ] >>65 最近元カノと出かける用事があって携帯買い換えたらクレって言ったんだけど 「あんたデータ消しても蘇らせそうだから嫌」って言われたw でも確かにヤフオクは怖いなぁ。。 とりあえず俺が集めたのは… P900iv N900i D701i って、3つしかないやんけw まぁでも、あとSOとSHさえGETすればメーカーごとのwav確認は出来るからよしとしよう。 つーか、秋葉行けば手に入る?1000円くらいで買えるなら上京してでも…
69 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 02:19:32 ] >>47 プログラマの常識的には右、上、手前=OpenGLで一般かもしれんが、 これもOpenGL以外にはそうないし一般的かは疑問。 モデルツールはツールで軸方向はいろいろ違うしさ
70 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 05:44:18 ] 2D画面のX軸とY軸に合わせて、あと画面の奥に向かってZ軸を伸ばしてるんだろ。 ぶっちゃけ発想が古いと思うが、MascotCapsuleの出自を考えるとそんなもんじゃね。 俺はOpenGLが公開されるまで3Dゲーム作らんつもりなのでどうでもいい。
71 名前:デフォルトの名無しさん [2007/08/30(木) 09:54:18 ] >>70 なるほど。 すげー納得した。 その発想は出来なかった。
72 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 10:28:40 ] >>67 2chのカキコの半数は嘘と煽りの怪しいサイトでしょw 要は使いよう。
73 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 11:25:09 ] >>69 右手座標系の意味をわかってて言ってる?
74 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 11:37:17 ] 質問させてください。 void send() { clearKeyState(); for (;;) { repaint(); Thread.sleep(50); int key = getKeyState(); if (key == Display.KEY_SOFT2) { drawString("認証中", 50, 110); //通信処理 //通信結果表示 } } } このような処理を作成したのですが、思い通りに動作しない 場合があります。 やりたいこと:通信処理中はずっと画面に"認証中"と表示させたい。 問題点:たまに(2割位の確立で)"認証中"が表示されるも一瞬で消えてしまう。 ・通信処理は実機,エミュレータ共に2秒くらい。 ・"認証中"が一瞬で消えてしまったときでも通信処理自体は正常に動作している。 ・repaint()ではダブルバッファリングを使用。 お分かりの方おりましたら、アドバイスよろしくお願いします。
75 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 12:20:57 ] そもそも、そのコードだとソフト2キーを押してる時だけ認証中って 表示される気がするんだけど
76 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 12:50:20 ] "認証中" って描画するための Graphics はどこから?
77 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 12:53:42 ] >>75 通信処理のところでブロックして、forループ回らずにいるんじゃないの? どちらにしろ通信結果表示のところも怪しい。中でループしてんのかな。 それとも画面を背景色とかでフラッシュしてない? 通信が思ったより早く終わったとかそんなんじゃないのかね。 一瞬だけ表示されるのが嫌なら、最低何秒は表示させるって処理を 追加してはどうだろう。
78 名前:74 mailto:sage [2007/08/30(木) 12:58:15 ] >>75 さん、ご意見ありがとうございます。 すいません、説明不足でした。 getKeyState()等は以下のメソッドを記述していました。 int keyParam = -1; public void processEvent(int type, int param) { if (type == Display.KEY_PRESSED_EVENT) { keyParam = param; } } //キー状態の取得 int getKeyState() { int ret = keyParam; keyParam = -1; return ret; } //キー状態のクリア void clearKeyState() { keyParam = -1; } 申し訳ありませんが、あらためてアドバイスよろしくお願いします。
79 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 13:13:10 ] >>78 通信処理は別スレッドで行ってる?
80 名前:74 mailto:sage [2007/08/30(木) 13:51:36 ] 74です。 皆様からの貴重な意見ありがとうございます。 あきらかに情報不足のようですので、長々となってしまいますが 具体的にコードを乗せさせていただきます。 Graphics g; //コンストラクタで G=getGraphics()を使用 void send() { clearKeyState(); for (;;) { repaint(); Thread.sleep(50); int key = getKeyState(); if (key == Display.KEY_SOFT2) { drawBox("認証中", 30, 100, 120, 60); //通信中 //通信処理メソッド drawBox("結果", 20, 90, 140, 80); //通信結果 ctl; } } } //ボックス表示 void drawBox(String str, int x, int y, int col, int row) { g.setColor(ピンク); g.fillRect(x, y, col, row); g.setColor(白); g.drawString(str, ボックス中央); g.setColor(黒); }
81 名前:74 mailto:sage [2007/08/30(木) 13:54:40 ] 続きです。 //セレクトキーを押したら終了 void ctl() { for (;;) { int key = getKeyState(); if (key == Display.SELECT) { return; } } } //ペイント public void paint(Graphics g) { //起動直後にpaintが呼ばれても大丈夫にする if (state == 0) { return; } this.g = g; g.lock(); drawhaikei(); g.unlock(true); } //画面描画 void drawhaikei(){ //画面初期化 g.setColor(黒); g.fillRect(画面全体); //以降描画処理 } だいぶ長々と書いてしまい申し訳ありませんが、よろしくお願いします。
82 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:19:55 ] 描いてないから描かれてないんだろ。 以上。
83 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:24:28 ] > this.g = g; なんだこれは
84 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:26:19 ] ctl()から抜け出せてないんじゃないの?
85 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:28:21 ] >>83 それはdrawhaikei()で使うためじゃないかな 引数で渡せばいいと思うけど
86 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:35:11 ] とりあえずだいぶ設計に問題があるな
87 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:38:20 ] drawhaikeiで使うだけならいいけど、たしか"認証中"を描画するためにコンストラクタで初期化してるとか言ってなかったか
88 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:47:37 ] drawBox("認証中", 30, 100, 120, 60);のあと 再描画しないで通信処理開始してるからじゃないの? 2割くらいの確率で描画されることもあるってのは システム側が通信開始までの微妙なタイミングで(repaint要求なしでも)たまたま描画しただけで。 一瞬描画されても消えるってのは paint()が実行されたときdrawhaikei(){}内のg.fillRect(画面全体);のとこで消しちゃってるからだろ。 プログラムの構造が変だよ。 drawBox()はdrawhaikei(){}内から呼び出すようにした方が 描画タイミングに一貫性があっていいと思う。
89 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:55:06 ] 1.通信前 repaint(); ←ここで通信前の画面が描画される 2.通信中、通信直後 drawString("認証中", 50, 110); ←repaintが呼ばれてないので画面には反映されない。 //通信処理 //通信結果表示 ctl(); ←ここまで、通信前の画面が表示されている。 3.通信完了後 repaint(); ←ここで「認証中」が描画される Thread.sleep(50); ・・・ 4.次のフレーム repaint(); ←「認証中」が消される どの辺がダブルバッファなのかという質問は無し?
90 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:56:32 ] もしかして g.lock() → g.unlock(); これだけでダブルバッファリングになることしらない?
91 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:58:28 ] g.lock()してるあたりじゃまいか
92 名前:74 mailto:sage [2007/08/30(木) 15:04:07 ] 74です。 皆様からのありがたいお言葉ありがとうございます。 というか毎回情報不足&ダラダラと長文で分かりづらくて申し訳ありません。 明らかに自分の知識および経験が不足しているので、皆様の意見を参考にして 暫くは自力で頑張ってみます。 本当にありがとうございました。
93 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 21:04:04 ] 3Dのアプリを作ってみたいんだけど、簡単なサンプルみたいなやつって無いですか? googleで探してもぜんぜん見つからないです
94 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 22:59:08 ] 俺の親切なアドバイス:やめとけ
95 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 13:10:42 ] >>93 とりあえず、んぱか逝っとくといいよ ttp://www.saturn.dti.ne.jp/~npaka/mascotcapsule/index.html
96 名前:デフォルトの名無しさん [2007/08/31(金) 15:13:57 ] Doja5.0で、エミュ上でOpenGLのFloatMath使ってみたんだけど、 SecurityViolation: 37 <clinit> 0 と言われてしまいました。 エミュでもトラステッドじゃないとやっぱだめ?
97 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 10:46:46 ] トラステッド動作設定を忘れてるか jamファイルにOpenGL使う設定を書くのを忘れてるか どっちかじゃない?
98 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 16:52:46 ] 10 print"ばか" 20 goto 10 画面中を「ばか」でいっぱいにするプログラムを組んだのですが だめみたいです どうすれば?
99 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 17:35:46 ] 多分言語の問題。
100 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 20:25:03 ] 他言語をずっとやってると、新しい言語を覚えてもどうしても前のに引きずられるよね
101 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 20:47:34 ] 新しい言語に習熟してないうちはそうだね
102 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 21:27:26 ] PHP触ったあとにJavaを触ると、無意識のうちに変数に$をつけてしまう
103 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 00:20:47 ] if(a==1)を よくif(a=1)と書いてしまう
104 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 08:23:21 ] if(a==1)ではなくて if(1==a)と書くようにすると間違って if(1=a)としても文法エラーになるからおk、と書いてある本を見た希ガス でも著者も変態チックな記述法なので自分もやんないって書いてたな
105 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 08:34:42 ] 変数同士の比較のつもりで間違えた場合には効果ないしね
106 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 09:53:04 ] >>103-104 Javaはそんな変なことをしなくてもif(a=1)の時点でエラーを返すはず
107 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 12:12:52 ] >>106 そうそう、ちゃんとエラーになるから大丈夫。 でもVBみたいに文法エラーがあると先に進ませてくれない言語はキツイ… 「後でまとめて直そうと思っとるんじゃぁ!」って画面にツッコミ入れそうになるもの。 ちなみに俺の場合はVBから入ってC++やってJAVAに入ったんだが、もうVB忘れたw そしてVBに戻って勉強しなおすとJAVAを忘れる事だろう…
108 名前:デフォルトの名無しさん [2007/09/02(日) 12:14:42 ] sony music soundをご覧になるにはUIDの取得が必要とか? UIDってなんですか??
109 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 15:34:41 ] ここはアプリを作る側のスレ。 使う側はスレ違い。
110 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 10:14:47 ] ダウンロードした人にjamが置いてあるフォルダを知られたくないんですけど、 jamのアドレスって携帯から調べることできるんですか?
111 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 10:58:51 ] >>110 出来る。
112 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 11:48:35 ] >>111 どうやって調べるんですか? アプリの詳細情報だとファイル名しか出てなくて・・・。
113 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 16:16:48 ] >>112 機種依存になるが過去の古い機種によっては jamファイルのアドレスを表示する機種があった。 (503・504時代) 最近の機種はわからない・・自分の機種ではできんな。
114 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 21:27:16 ] Nの903、904は見れたはず
115 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 21:46:12 ] AppTrace=onなら見れる offなら見れない N503, 504は例外
116 名前:112 mailto:sage [2007/09/03(月) 22:49:33 ] 情報ありがとうございます。 N902iでは見れないみたいです。(AppTrace=off) 903は白ロム買って確かめてみます。
117 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 02:17:56 ] jamの置いてあるフォルダを知られたくない理由が知りたいな DirectoryIndex対策か?
118 名前:デフォルトの名無しさん [2007/09/04(火) 12:19:47 ] >>97 遅レスすまん。 一応、iαppliTool for Doja-5.0 の『設定→トラステッド動作設定』 で、『OpenGl/ES機能の使用許可』をYesにしているけどだめです。 ADF設定のTrustedAPIDを入力しないとエミュでもだめなんですかね?勝手なんで、そんなものもらってないし。
119 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 12:37:12 ] エミュのTrustedAPIDは桁数だけ合わせて(11桁?) 適当なの突っ込んどけばOKだった気がする。
120 名前:112 mailto:sage [2007/09/04(火) 12:44:59 ] >>117 PCから見られるのが嫌なので。 レンタルサーバでhtaccess使えないんです。
121 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 14:42:38 ] >>120 CGIが使えるようならPerlとかPHPでリモートホスト見て jamを吐き出すスクリプト書けばいいんじゃない? 有料のアプリなんかは課金チェックや機種判別も含めて そういう手法取ってるから
122 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 14:55:35 ] >>119 マジで!? ちょっと試して見るわ
123 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 15:04:13 ] jamのアドレスがバレると、リソースの場所も推測されてしまうことがあるから、見せない方がいい。 某ネットワークRPGアプリがAppTrace=onで出したから、シナリオが丸見えになった。
124 名前:デフォルトの名無しさん [2007/09/05(水) 11:28:05 ] >>119 あ、うごいたっぽい。 ありがとう。
125 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 04:16:08 ] RSS読む用のXMLのパーサを今作ってるDoJaアプリにインポートしたいんだけど. 軽くてお勧めなのある?
126 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 22:31:26 ] 教えてください。 アプリで画像表示中に音楽(3GP)ファイルを再生したいんですが、 AudioTrackPresenterで間違いないですよね? エミュレータだと代替音楽のような曲が鳴るんですが、 実機だと何も鳴らない… もちろんマナーモードではないです。
127 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 01:01:54 ] AudioTrackPresenterはオプションAPI SH、D、Fのみ対応 非対応機種はUnsupportedOperationException
128 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 02:37:48 ] >>125 ttp://www.horobi.com/xml/mobile/report.html を参考にして ttp://kxml.sourceforge.net/kxml2/ これを使ってる。
129 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 14:06:42 ] 128を見ていて思ったけど、 BSDライセンスの場合は、サイト内のダウンロードページにライセンス条項を載せるだけでいい?
130 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 22:43:57 ] 「いい」ってのがどういう意味かによる もっと具体的に
131 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 23:24:01 ] >>127 ありがとうございます! Nで試してました… VisualPresenterを使うとすると、 ネイティブのプレイヤーが起動するから、 画像のバックで音楽再生はできないんでしょうか?
132 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 01:35:42 ] 質問させて下さい! 当方ゲームを作っているのですが、サウンドのループでつまずいています。 canvasのクラスにMediaListenerをimplementsしているんですが 曲の再生が終わっても(その他再生を開始たりしても)mediaActionに処理が 飛んでこないんです…。 ソースの概要はこんな感じです。 class game1 extends Canvas implements MediaListener{ 各種処理 game1(){ 各種処理 オーディオプレゼンター.setMediaListener(this); } public void mediaAction(MediaPresenter source,int type,int param){ System.out.println("処理が来た!"); } } よろしくお願い致します。
133 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 01:55:48 ] >>131 3gp形式などは不可。 機種別のMFi形式を使うしかない。 >>132 参考例 ttp://iappli.kajas.com/sec0205/
134 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 06:14:37 ] >>132 audio.setAttribute( AudioPresenter.SYNC_MODE, AudioPresenter.ATTR_SYNC_ON ); audio.setMediaListener( this ); audioは取得したAudioPresenter。 SYNC_MODEを設定しないと同期イベントは発生しないかと。
135 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 09:59:17 ] >>134 SYNC_MODEはあくまで同期であって、それを設定しないからといって mediaActionに処理が来ないわけではない。 >>132 はmediaActionに処理が来ないと言っている。
136 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 10:07:40 ] 大方processEventでループしてたりするんじゃない?
137 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 12:52:40 ] サウンドデータの問題かもな 曲が終わってから5分くらいしないとそこに行かないデータが前にあった
138 名前:125 mailto:sage [2007/09/11(火) 14:19:40 ] >128 返事遅くて済まん そのページは知ってたんだが, 2002年の報告だから今はどうなってるのかなぁと思って聞いてみた, ともかくサンクス
139 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 22:57:50 ] >>126 さんに便乗して質問なんですが、 ゲームの中で効果音(1秒くらい)として3gpを再生したいのですがなぜか ap.play();をしてからどうしても1〜2秒のラグが出てしまいます。 携帯はSH903iなんですが、携帯に問題があるのか、ファイルなのか 仕様なのか何なんでしょうか? にしてもiアプリの音楽再生に関する詳しいページって少ないですね・・・。
140 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 01:29:15 ] play(1ミリ秒単位)を入れるのねんのねん。 そうすると()内に入れた秒数から音楽がスタートするから タイムラグを解消できるのねんのねん。 機種依存命令だけど903シリーズなら大丈夫じゃまいか。
141 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 01:40:39 ] >>132 メディアアクションはpublic voidじゃ機能しないよん〜〜〜 だってpublic voidは呼び出して機能させるしかないからねんのねん public classを作ってメディアアクションさせなきゃだめよ。 つまり別のclassを作るってことよ。わかったかしらあん〜〜〜はあと
142 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 03:15:57 ] >>141 言ってる意味がよくわからんが、俺も>>136 が怪しいと思う。 あるいは別のAudioPresenterをnewしていて、そっちでplay()してるとか?
143 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 06:18:58 ] 流れを切ってすみませんが、ご助言願います 以下のように、イメージを右に移動させる処理を組んでいますが、 イメージの移動した跡に残像が残り続けてしまいます。 while(true){ g.lock(); g.drawImage(image, x, y); g.unlock(true); x++; //スリープ処理 } ループ中に、g.clearRect(0, 0, getWidth(), getHeight());を追加すると解決したのですが、 参考とさせて頂いたこちら(ttp://www.doja-developer.net/_up/features/UE051011/index.php?id=71)の サンプルソースでは、このような処理は行われていないようです。 サンプルソースでは、特に明示的に画面のリフレッシュを行っていないようなのですが、 同じように組んでも残像が発生してしまう理由を教えてもらえないでしょうか? よろしくお願いします。
144 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 06:24:08 ] >>141 MediaListener実装クラスがpublicじゃないと駄目ってことか?
145 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 06:28:37 ] >>143 描画前に画面をクリアないと前の画面にそのまま上書きするからそうなる サンプルでは68行目のfillrectで画面をクリアしてる fillrectはsetColorで指定した色で塗りつぶす clearRectはデフォルトの背景色で塗りつぶす
146 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 07:25:27 ] >>145 即レスサンクス! clearRectの先入観があってfillRectが目に入らなかった様です 要するに、実際のゲームアプリ等で応用する場合には 先に背景を再描画してしまって一度画面をクリアすれば良いわけですね
147 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 07:49:09 ] 背景が部分描画なら、はみ出した部分クリアしないと残るけど 全画面背景描くならクリアする必要ない っていうか背景描いた後に画面クリアしたら背景消えちゃうぞ
148 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 09:26:27 ] >147 多分意味は通じてると思うぞ >146の頭の中では 背景を再描画する=画面をクリアする って意味なんだろう まぁ>146の言い方が悪いんだけど初心者だしな
149 名前:139 mailto:sage [2007/09/12(水) 19:13:58 ] >>140 今ちょっと試したんですが、やっぱり開始は遅く音が途中から再生されただけでした。 そもそもこの音はwavで作ってSoundEngineで無音部分を完全に切り取り、 3GP Converterで変換してるので一応ファイルの中にラグは無いはずなんです。 ただ3GP Converterで最初やったときなぜかデータが途中までになってしまい、 しょうがなくwavのケツにちょっとだけ無音を足して、途中で切れても音は聞こえるようにした。 という経緯があるので、ここが怪しいかな・・・?とは思ってるんです。 誰か同じようなことあった人居ますか?