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/
267 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 02:07:10 ] >>261 3、4回、マイナーバージョンの違うDoJaを交互にインストール・アンインストールして直ったことがある Eclipse 3.2.0 + Windows Vista + JDK 1.6
268 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 02:46:53 ] >>264 D902iでWaterP6テスト。 blurをonにした瞬間、NullPointerExceptionで落ちることがあるのはご愛嬌として、 OutOfMemoryは起きなくなったみたい。 たしかに毎フレームGraphics2#getImage()はメモリ食いそうだなぁ。
269 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 03:46:10 ] >さらにImageをdisposeしていないのがまずいような気がしたので、 脱力系のオチかよ
270 名前:264 [2007/09/29(土) 09:01:18 ] >>268 よかった。 getImageで上書きされるものと考えていたのが問題でした。 普通の使い方ならば、ガーベージ自動処理のタイミング的に大丈夫なのでしょうね。 他のアプリにも同様の処理をしているものがあるので、 アプリの機種違いによるエラーは、これで解決しそうです。 (アプリ_FallSのエラーは、現行ver.では起きないようなのでOKです。) お手伝いいただき、ありがとうございました。
271 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 13:53:15 ] 毎回getImageするより、オフスクリーンバッファを2枚用意したほうがいいんじゃないか? Imageの描画コンテキストはGraphics2にキャストできないんだっけ?
272 名前:デフォルトの名無しさん [2007/09/29(土) 14:42:06 ] Imageに対して直接Graphics2の描画(加算レンダリング)をするって事ですよね? 確かにその方法は良いと思います。 できるのであれば、どなたか教えてください。
273 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 15:29:39 ] >>272 確かにその方法は良いと思ったんなら、まず自分でやってみろよ。 良いと思うほどなんだから実現の可能性があることは自分でも分かってるんだろ? 教えてくださいじゃなくて、コード書くのが面倒なのでかわりに書いてくださいじゃないのか?
274 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 18:36:19 ] ってか、いきなりレベル低くなったな
275 名前:272 [2007/09/29(土) 19:26:02 ] >>273 こうすれば良いのですね。 Graphics gi=image.getGraphics(); Graphics2 g2=(Graphics2)gi;//簡単な事なのに、これを思い付けませんでした。 で、この方法で組み直したところ、1つ問題が出てきました。 drawLine((i+1)*d,y[i+1],i*d,y[i]);//(d:1ラインの横方向の大きさ) 曲線を連続したラインで表現するため、↑のようにしていたのですが、 これだと、隣のラインと1ドット重なってしまい、 当然、加算していくとそこだけ色が変わって ・・・ 1ドットずれた位置の変位yを計算する方法↓で自己解決しました。 drawLine((i+1)*d,y[i+1]+(y[i+1]-y[i])/d,i*d,y[i]); (厳密には変位が大きくなるとラインが途切れることになりますが) これでgetImage()よりは軽くなったはず。(多謝)
276 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 02:24:48 ] 他人のアプリのそんな細かい部分を語られても さっぱり分からないが、動いたのならおめでとう。 それにしてもモーションブラーが実装できる時代になったんだなぁ。
277 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 16:08:11 ] 最近JAVAプログラムを始めた初心者です。 リアルタイムなゲームを作ってみようと思って色んなサイトを参考にしながら作ろうとしています。 で、現在はスレッドを一つ作ってその中で無限ループさせているのですが、一つ疑問が浮かびました。 スレッドの入り口(無限ループの外)にSystem.out.println("スレッド実行");と書いた場合、ひたすら"スレッド実行" という文字が出力されていました。これはスレッド自体が無限ループのように呼び出されている、という事 なのでしょうか? ソースの例は以下のような感じです…。 public class applitest extends IApplication{ public static testCanvas a_test; public void start(){ a_test = new testCanvas(); Display.setCurrent(a_test); a_test.start(); } class testCanvas extends Canvas{ public void start() { System.out.println("スレッド実行中"); while(true){ //メインループ try{ Thread.sleep(30); } catch(Exception e){ } repaint(); } } } }
278 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 16:10:25 ] うん?どこでスレッドを作ってるんだ?スレッドを作ってるようには見えないが・・・
279 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 16:31:08 ] >>277 スレッドが作れて無いようだが? 基本的にThreadクラスから継承するんじゃないならRunnableインタフェースを実装しなきゃだし スレッド実行開始はThreadクラスのstart()だがスレッドの実体はどっち方法で実装してもrun()だぞ? 後Canvasのpaint()はabstractだから省略できんだろ、例として書くならそこも簡単でイイから書きなさい 一応IApplicationのstart()とCanvasのイベントメソッドが別スレッドになるかも?というのを使って IApplicationのstart()でCanvas内の無限ループメソッドを使ったメインループ作成方法はあるけど これはスレッドを自分で作ってるとは言わないし機種に依存するはず(動く場合が多いけど)
280 名前:277 mailto:sage [2007/10/01(月) 17:35:39 ] あれっ、本当だ…。Runnableが実装されてませんね…。 よく考えたらスレッドを作成して動かしてるのはVアプリ用の方でした。 こちらの方法はスレッドじゃないですね…失礼しました。 しかも279さんの仰る通り簡略化しすぎてました…。 とは言えせっかくなので教えて頂ければ幸いなのですが (改行エラーが出たのでソースは次に書きます) →ソース という感じで作っています。この場合、自分は a_test.start(); によってtestCanvas内のstart()メソッド が一回だけ実行され、その中の無限ループでグルグル処理をするっていうイメージで作ったんです。 しかし実際にはtestCanvas内のstart()メソッドが何度も実行されているようなのです。 物凄い勢いで”実行中”というトレースを吐き出します…。 質問自体分かりづらくて申し訳ないのですが、なぜtestCanvas内のstart()メソッドが何度も呼び出される のか、ご教授願えれば幸いです。
281 名前:277 mailto:sage [2007/10/01(月) 17:36:30 ] public class applitest extends IApplication{ public static testCanvas a_test; public void start(){ a_test = new testCanvas(); Display.setCurrent(a_test); a_test.start(); } class testCanvas extends Canvas{ public void start() { System.out.println("実行中"); while(true){ //メインループ repaint(); try{ Thread.sleep(30); } catch(Exception e){ } } } testCanvas(){ //色々処理 } public void paint(Graphics g){ //描画 } } }
282 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 17:38:37 ] >IApplicationのstart()でCanvas内の無限ループメソッドを使ったメインループ作成方法 Fの505,506,900でこれやると、processEventとmediaActionに処理こねぇ(ノд`)
283 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 17:41:25 ] Eclipseのデバッグモードで確認すれば一発
284 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 17:58:10 ] >>280 これ実機の話か? 取り敢えずDoJa5.0のエミュ上だと"実行中"は1度出力されるだけだ a_test = new testCanvas(); の前に System.out.println("起動"); a_test = new testCanvas(); ってやるとどうなる? IApplicationのstart()がループしてるのか、Canvasのstart()がループさせられてるのか切り分けてみ
285 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 18:02:28 ] あ、後当然ながらstart()とprocessEvent()の両方からアクセスしてるメンバは全部synchronizedになってるよな?
286 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 23:20:27 ] >>282 マジ? ずばりこのやり方で作りまくりなんだけど、、 Fの901以上とか700は大丈夫なの?
287 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 00:09:24 ] >>286 この手法って機種依存じゃないの? IApplication.start()がCanvas.processEvent()とは必ず別スレッドで呼ばれることが保証されてるってどっかドキュメントに書いてある?
288 名前:282 [2007/10/02(火) 02:51:23 ] >>286 実は端末がなくて、そこまで調べていない。 とりあえずデバッグ時に、手元にあった上記の三つは動作しなかったので 直した。その他の端末は、修正後に検証センターで端末チェックしたので その他のF機についてはわからない。
289 名前:286 mailto:sage [2007/10/02(火) 06:45:39 ] >>282 >>287 10K制限の時から気にせずやってたけど、 今は容量制限もゆるいし普通のやり方が一番安全ですね。
290 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 11:26:51 ] 俺もstart()で無限ループやりまくってるw リリース前にゃ全端末チェックして貰った事もあるけど 問題なかったなぁ。ユーザからクレームも上がってない。 んまぁ音鳴らすアプリが殆どない上processEvent使ってないし 気づかなかっただけかもだけど。
291 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 11:45:28 ] 過疎ってる(゜Д゜)
292 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 14:12:31 ] おうよ
293 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 20:59:45 ] ネット上のAPIリファレンスの見方を教えて下さい 全然分かりません
294 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 10:43:16 ] ネット上にDojaのAPIリファレンスなんてあったっけ? ここからダウンロードして使ってえば。 ttp://www.nttdocomo.co.jp/service/imode/make/content/iappli/about/index.html
295 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 01:17:55 ] このHPなんだけど(Doja5.0) www.rcdtokyo.com/man/doja/api/index.html 例文が全然ないから書式が全然分かりません できるだけ詳しく教えてください
296 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 01:20:24 ] それはまず Java の勉強をするべきでは?
297 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 03:16:15 ] >>295 まず初心者用のjavaの勉強から始めるべきだし もしjavaの勉強のためにDoJaを使おうとしてるなら奨めはしないが どうしてもというならiアプリ開発解説系サイトの初心者講座を見てhello worldからはじめるべきかな その上でまずDevGuide.pdfとjguidefordoja5_x_070423.pdfを内容覚えるぐらいに読んでおく APIリファレンスはリファレンス(参考書)であって入門書ではないからリファレンスだけを見ても iアプリは作れるようにはならないよ? もちろんjavaの事を既によく知っていてSwingとは言わんからAWTでいいから使ったことがあるとかなら DevGuide.pdfとjguidefordoja5_x_070423.pdfを適当に流し読みした後にAPIリファレンスだけあれば iアプリは作れるだろうけどね
298 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 22:08:04 ] 初心者用のjavaの勉強は5年もしました しかしDojaのAPIリファレンスは難解すぎて理解できません もうやめます
299 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 22:59:52 ] Java で5年間何をやってたのか気になるところだな。
300 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 00:44:16 ] 5年間ずっとjava初心者用HPのサンプルコードのコピペを続けてたのだろうか? それはそれで根気があるが……
301 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 00:45:41 ] ネタだろ。 数年前に一週間程度java勉強しただけの俺でも何とか分かる。
302 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 21:54:18 ] しかしそれは本来のJavaでなく携帯向けJavaだったのだ
303 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 02:10:42 ]  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄」 ―――――――――――――‐┬┘ | ____.____ | | | | | | | ∧_∧ | | | |( ´∀`)つ ミ | | |/ ⊃ ノ | |  ̄ ̄ ̄ ̄' ̄ ̄ ̄ ̄ | ミ [本来の Java]
304 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 03:35:34 ] >302 携帯向けのJavaが偽物みたいにいうな禿
305 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 03:57:13 ] 携帯向けのJavaなんて存在しないんだけど?w
306 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 05:14:54 ] JavaME
307 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 07:53:16 ] CLDCとMIDPの立場って一体……
308 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 07:53:21 ] 携帯向けのJavaってソースに #ifdefとか#defineとか入ってる奴?w
309 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 08:02:59 ] 無知だな
310 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 08:36:07 ] >>308 30Kに収めようと思ったり機種依存APIを使うために場合分けが必要な場合(Unable to load class回避)には 必要に応じてプリプロセッサも使うけどな まぁそれも初心者にはあまり関係ない話だ
311 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 08:53:40 ] >>307 世界で使われている
312 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 12:13:12 ] プリプロセスできれば、と思うことは何回もあった
313 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 12:19:52 ] 30KiBの壁にあたったとき、プリプロセッサ使って3KiBくらいちんまく なったときには、純粋なJavaと決別しようと思ったさ。
314 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 12:48:26 ] KIBだんご
315 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 00:05:44 ] プリプロセッサってクラスファイルを小さくしてくれるの? あ、でもなんか単位が違うなぁ
316 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 01:53:14 ] Kを1000じゃなくて1024であることを明確に示したいときにはKiって書くのよ。
317 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 01:59:05 ] それ何業界で使われてるの? ストレージ関連? こっちでは単に KB て入ったら 1024 bytes 以外の可能性はないなあ。 M が 1000^2 じゃなく 1024^2 であると示したい場合は MeB?
318 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 01:59:33 ] でもあんまり浸透してないよなぁそれ・・・ キビバイトとかメビバイトとか言いにくいからかな
319 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 02:05:58 ] >>317 ja.wikipedia.org/wiki/2%E9%80%B2%E6%8E%A5%E9%A0%AD%E8%BE%9E
320 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 02:20:10 ] KIBだんごが正しくてワロタ
321 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 03:32:02 ] 純粋なJavaなんてこだわってるのは信者だけ そろ信者と頭の古いsunのせいでそれはいるだろって機能でさえ C#がでるまで入れようとしなかったくらいだから迷惑な話だよな
322 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 03:35:49 ] いきなりどうした?
323 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 03:48:33 ] つまり、プリプロセッサを公式にサポートしろと言いたいのですよw
324 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 04:01:43 ] >>315 組み方によるがプリプロセッサに頼った方が小さくなる 例えばstatic finalは#defineに置き換えれば大抵の場合クラスファイルを縮小できる まぁ色々あるんで一概にどうこうとは言いにくいんだが読みやすさを損なわないレベルで小さくなる場合が多いのは事実だな ただ初心者にはお奨めはしないけどな Obfuscatorを2〜3個と7Zipも使ってもどうにもならない場合の最後の最後の手段だな
325 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 04:06:34 ] >318 言いにくいからというより、単純に通じないからだろうな。 メディアや様々なドキュメント類が一斉に変えない限り普及しないんじゃないだろうか。 現状、ドキュメントなら大抵「1キロバイト=1024バイト」とか注意書きがあるんで混乱しないし、 1キロバイトが1024バイトなのはファイルサイズやメモリ容量、 1000バイト(というか1メガバイト=1*1000*1000バイト)なのはストレージ(大抵HDDを指して)、 としてまず問題なく会話できるし。
326 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 07:31:01 ] 最近の人は「キロ」と「ケー」の区別をつけないのか
327 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 07:45:38 ] HDDさえ1024単位にしてくれりゃ会話でまぎらわしいことは かなり減ると思うけどな。
328 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 18:14:45 ] 通信速度が10進数だから,そっちを基本にするしかないだろ
329 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 19:38:04 ] 10進数で通信速度を測定するのって何の通信?
330 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 21:29:29 ] 話切って申し訳ないですが、質問させてください。。 904iシリーズで追加されたオプションAPI、 「動作認識」を実装しようとしてるのですが上手くいかず困ってます。。 最初はとりあえず、ケータイの傾き(rolldata)を取得し、 その値を画面に表示させるコードを書こうとしています。 プログラミング初心者のため、かなり汚いコードだとは思いますが、 指摘いただけるとうれしいです。
331 名前:330 mailto:sage [2007/10/14(日) 21:33:46 ] public class Gesture1 extends IApplication { public void start() { GestureCanvas c = new GestureCanvas(); Display.setCurrent(c); c.exe(); }
332 名前:330 mailto:sage [2007/10/14(日) 21:35:22 ] //続き class GestureCanvas extends Canvas { void exe() { RollReader rollreader = RollReader.getRollReader(0); Graphics g = getGraphics(); float zahyo[] = new float[2]; while (true) { //動作認識処理 rollreader.start(); RollData roll = rollreader.getRollData(); zahyo = roll.getAccumulatedMotion(); rollreader.stop(); g.lock(); g.setColor(g.getColorOfName(g.WHITE)); g.fillRect(0, 0, getWidth(), getHeight()); g.setColor(g.getColorOfName(g.BLACK)); g.drawString("x座標 : " + zahyo[0], 5, 20); g.drawString("y座標 : " + zahyo[1], 5, 40); g.unlock(true);
333 名前:330 mailto:sage [2007/10/14(日) 21:36:04 ] //最後 try { Thread.sleep(200); } catch (Exception e) { } } } public void paint(Graphics g) { } } } //長々とすみませんでした。。。
334 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 22:06:48 ] 機種は? 確かDだけ何か違ったとか報告受けた覚えがある。
335 名前:330 mailto:sage [2007/10/14(日) 22:16:48 ] SH904iです。。 エミュレータで試験できないので、実機にアプリをDLして実行してみているのですが、エラーの表示と共に強制終了されてしまい原因もわかりません。。。
336 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 22:28:07 ] Exceptionでエラー確認してみ
337 名前:330 mailto:sage [2007/10/14(日) 22:32:37 ] 330です。何度もすみません。 Dだけなにかが違うという件ですが、、 Dには加速度センサが、SHとPにはgesturetek mobileが搭載されているということだと思います。 前者ではその名のとおりセンサを使って、後者ではインカメを用いた画像検知によりケータイの動きを認識します。 ドコモ提供のAPIリファレンス(オプション・拡張編) ttp://www.nttdocomo.co.jp/service/imode/make/content/download/kiyaku5_details.html では、最後の章に加速度センサの、19章に動作認識(インカメ使用)の説明があります。 私は、shですので、インカメを用いた動作認識を実装したいと考えています。
338 名前:330 mailto:sage [2007/10/14(日) 22:35:00 ] >>336 Main :com.nttdocomo.device.gesturereader.GestureException Gesture1 com.nttdocomo.device.gesturereader.GestureException at com.nttdocomo.device.gesturereader.RollReader.getRollData(+80) at Gesture1$GestureCanvas.exe(+22) at Gesture1.start(+17) com.nttdocomo.device.gesturereader.RollReader このようなエラーが出ますが、未熟者のため解決できず。。。
339 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 22:35:14 ] とりあえず、運良く会社から持ってきてた俺自作のソース見ると m_RollReader.start(); m_RollReader.recenter(); はwhile() の上に出して1回だけにした方が良さそう それでもダメなら m_RollData.getImmediateMotion(); の方のパラメータも変なの来てるか確かめれ。 もちろんExceptionもなw
340 名前:330 mailto:sage [2007/10/14(日) 22:41:44 ] >>339 ありがとうございます! がんばってみます。
341 名前:330 mailto:sage [2007/10/14(日) 22:48:11 ] >>339 一つ質問なのですが、 rolldata.start() をwhile外に出すとすると、 rollreader.stop(); の位置が問題になると思いますが、 一回一回の処理ごとにstopかける必要はないのでしょうか? というか、もしかしてstop()自体なくても、動作に支障はないのですか?
342 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 23:32:23 ] 大きい範囲で1回であればいるかもしれんけど、 枚フレームする必要は無いな。 まぁ、経験上カメラとか外部のインターフェース使う奴は 動作が遅いのが普通だから毎フレーム呼び出しは 無理な場合が多い。
343 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 00:40:55 ] マナーモードや受話音量の制御ってアプリ側からは出来ないですかね?
344 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 04:12:01 ] できちゃったら本末転倒 アプリや本体の挙動を制御するための機能なんだから
345 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 11:07:19 ] >>341 JSや加速度センサは、start()時の位置を(0,0(,0))として、 次フレームでゼロ地点からの相対位置を元に何かを求めるモノなので、 基本動きっぱなしを想定してる。 なので止めちゃダメ。 あとDoJa5.0 Ver3.0のiαppliToolで、エミュレーションにも対応してる。 ツール→動作認識データ編集と、ツール→加速度センサデータ編集がそれ。 使い物になるかは少々疑問だけど、とりあえずの動作確認だけならエミュで十分なハズ。 パラメータを設定しなくても、エミュで例外は出ない。 ゼロが帰ってくるだけ。 たしか移動量の定義がShake以外不明だったと思うんで、 実機でやってみないとわからない部分が多いと思うがガンガレ。
346 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 11:20:19 ] 何か酷いな… JS→ジェスチャーテックのことで略してJSと何処かに書かれてて そう覚えてしまった(´д`) ゴメン。 帰って→返って ちとマグロでも釣ってくるわ。
347 名前:デフォルトの名無しさん [2007/10/15(月) 13:12:40 ] なあ、@アプリで再生できる動画サイズって500KB以上は無理なんか?
348 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 13:31:43 ] 確かDojaのバージョン依存とみせかけて機種依存だったと思った。 俺の仕事じゃなかったから適当に聞いてたんでうろ覚えw
349 名前:デフォルトの名無しさん [2007/10/15(月) 13:36:29 ] お、機種依存なのか
350 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 14:07:36 ] >>347 www.nttdocomo.co.jp/binary/pdf/service/imode/make/content/iappli/about/jguidefordoja5_x_070423.pdf 「4.4.5 FOMA 携帯電話によるVisualPresenter でのiモーションの再生」 を熟読するんだな
351 名前:デフォルトの名無しさん [2007/10/15(月) 14:17:48 ] 機種によっては500kb以上いけるかもしれないが Doja5.0では500kbまでしかだめだ って書いてあるようなないような
352 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 15:11:30 ] 500KBまでは全機種で動くことを保証してそれ以上のサイズを放り込んだ時動くかどうかは機種依存ってことだろ?
353 名前:330 mailto:sage [2007/10/15(月) 15:42:57 ] >>345 ありがとうございます。 エミュレータの動作認識設定を行い、何とかエミュ上で立ち上がるまでになりました。 しかし、実機に移すと、エラーが起こり、アプリが立ち上がりません。。。 どうしてでしょうか。。。。。
354 名前:330 mailto:sage [2007/10/15(月) 15:44:30 ] ちなみに、教えていただいたとおり、while外にstart()を出してあります。 ソースは以下のとおりです。 (また、長々とすみません・・・) public class Gesture1 extends IApplication { public void start() { GestureCanvas c = new GestureCanvas(); Display.setCurrent(c); c.exe(); }
355 名前:330 mailto:sage [2007/10/15(月) 15:45:22 ] //つづき class GestureCanvas extends Canvas { void exe() { RollReader rollreader = RollReader.getRollReader(0); Graphics g = getGraphics(); float zahyo[] = new float[2]; rollreader.start(); rollreader.recenter(); while (true) { RollData roll = rollreader.getRollData(); zahyo = roll.getAccumulatedMotion(); g.lock(); g.setColor(g.getColorOfName(g.WHITE)); g.fillRect(0, 0, getWidth(), getHeight()); g.setColor(g.getColorOfName(g.BLACK)); g.drawString("x座標 : " + zahyo[0], 5, 20); g.drawString("y座標 : " + zahyo[1], 5, 40); g.setPixel((int) zahyo[0]/2+120, (int) zahyo[1]/2+120); g.unlock(true);
356 名前:330 mailto:sage [2007/10/15(月) 15:45:54 ] //さいご try { Thread.sleep(1000); } catch (Exception e) { } } } public void paint(Graphics g) { } } }
357 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 15:47:41 ] >330 ソースよりもまずエラーの内容を書かないと始まらない
358 名前:330 mailto:sage [2007/10/15(月) 16:28:37 ] >>357 指摘ありがとうございます。 エラーの内容ですが、実機だとただ単に強制終了されてしまうため、 どのようなエラーが発生しているのかもわからない状態なのです。。。 エミュレータではエラーは出ないのですが・・・ 何度も質問ばかりで申し訳ありません。
359 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 16:42:16 ] AppTrace=on にしてみれば実機でも見れるんじゃね? それと roll の null チェックはした方がいいな。 機械動かす以上すぐにパラメータが取れるとは思えない。
360 名前:345 mailto:sage [2007/10/15(月) 21:09:43 ] マグロ漁行ってる間に職場がアク禁食らってた(=´∇`=) これだからNTT回線は… >>330 たぶんRollData#getRollData()をtry〜catchで囲んでないからだと思うよ。 パラメータ取得失敗時に、普通に例外吐く仕様だったはずだから。 ぬるぽチェックはzahyoの定義で初期化してるから要らないと思うけど、 例外キャッチした時に前のパラメータが残るのだけ注意。 相対座標として扱うと計算ミスる。案外使ってて違和感感じるから。 で、例外についてはリファレンス読んでくださいな。
361 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 02:45:25 ] 拡縮/回転ができるスプライトシステムを作ろうと思いポイントスプライトでいろいろ 実験しています。どうも画像が歪むのでテクスチャを格子模様にしてどういうときに 歪むのかチェックしたのですがいま一つ条件がわかりませんでした。uvwhのぞれ ぞれが2のn乗になっていない時かなとも思いましたが64*64でも1ドットだけずれて 表示されたりしたのでよくわかりません。 WEBでサンプルソースを見つけたのでそちらも試したのですが、一見ちゃんと表示 されているようでも右端と下端のドットが表示されていませんでした。 ポリゴンでフィールドを表示しておいてその上にdrawImageで各種情報を表示する ような(フィールド側は拡縮可能)構成を考えていたのでちょっと悩んでいます。 なぜ歪むのか原因、もしくはプログラム上/データ上のチェックポイントがわかる方 がいらっしゃいましたらご教示願えないでしょうか。
362 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 09:58:29 ] 歪むとかいってるのはエミュでの動作の話? 昔同じようなことやったことあるが、マスコットカプセルの ソフトウェアレンダリング(901時代とか)は、内部で2pxとか4px単位で 処理してるのか画面上とテクスチャの大きさをあわせても そのままdot by dotのマッピングにはならないと判断した 最近のハードウェアレンダリングする機種では結果違うかもしれんよ
363 名前:361 mailto:sage [2007/10/16(火) 12:52:53 ] >>362 情報ありがとうございます。 エミュと実機両方で試しましたが、同じような表示になりました。 矩形の枠の一か所だけ1ドット飛び出したような表示になったりしたのですが、その 飛びだす位置が同じだったので同じアルゴリズムなのかなどとちょっと感心しまし たが。 書き忘れましたが900i以降対応させるのでDojaのプロファイルは3.5です。 試した実機は対応する機種のミニマムスペックに近いF900iやN901icなどの古めの ものです。 ポイントスプライトをやめて三角形や矩形のポリゴンにしたらどうかな、などと考えて ましたがソフトウェアレンダリングによる歪みというか誤差だとするとだめっぽいです ね。やりたいことの性質上、きっちり1ドット単位で表示できないと困るので面倒だけど drawImageとdrawScaledImageでやろうかな。D900iを非対応にすればGraphics2で 半透明使えるし、回転はほとんどないからなんとかなるかも。
364 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 13:07:53 ] 小数使ってる? 0.5を足してから整数化するとか。
365 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 13:10:36 ] ピクセル毎に自力処理か。 どっちを回してる? スプライト側のピクセル毎に回転後座標を求めてキャンバスに打つより、 キャンバス側で「スプライトのどのピクセルが来るか」を基に打つといいよ。
366 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 13:41:50 ] drawScaledImageに半透明が適用されるかどうかは 機種依存じゃなかったっけ?
367 名前:361 mailto:sage [2007/10/16(火) 14:16:27 ] >>364 小数は使っていません。今のところ拡縮などはしないで等倍のスプライトを表示して 実験しているだけなので。その段階で361のような状態なのでちょっと悩んでいたの です。 >>365 自力での描画処理は行っていません。もし行うとすればたしかに365さんのおっしゃ るようにディストネーション側のピクセルからソースの色を引っ張ってこないと拡大 したときに隙間とかができてみられたものじゃなくなりますね。そもそも自前描画で 速度は足りるものでしょうか。以前30Kアプリでプログラムサイズが全く足りなくて、 一部ルーチンをスクリプト化してスクラッチパッドに逃がしたことがあったのですが、 以外と速度は大丈夫でした。しかし描画処理となるとそれとは比較にならないほど 演算量が増えるのでやるとするとまた実験が必要ですね。 >>366 情報ありがとうございます。そうなるとちょっと辛いですね。機種情報調べてみます。