iモード携帯電話用Java(iアプリ) Part14
ヨサゲなフレームワークって存在しないの?
前スレ
>>997 です
計算自体は理解してます。
P(r)=nCrpr(1-p)10-rのBINOMDISTなんで、EXELとかじゃ簡単にできます。
それをiアプリでどのように処理するか、というわけなんですが。
確率は理解してますが、javaは初心者の私には厳しいでしょうか。
>>8 ためしにCombinationを四則演算に分解してみてみればいい
JavaにはCombinationは無くても四則演算は備わっているから、そこまで落とせれば大抵作れる
ただ、キャリアでは小数が扱えないとかあるので固定小数として作り上げたり、
整数演算では高々 10^8 までしか有効桁が無かったりするから面倒だったりするだけだ
ともかく原型は簡単に作れるよ
ありがとうございます。 階乗とかn乗はfor文で無理矢理作るという事でしょうか。 ちょっと出かけますので返事は遅れちゃいます。
>>10 まあ、ループでやるか再帰でやるかしかないんでないの?
多倍長演算わなきゃだめなくらいの桁数となると、結構面倒だね。
前スレのだけど、 powってiアプリで使えたっけ? ezとかなら使えたけど。
C3DMath#pow なら有るけどオプションAPI。
まぁ使えようと使えまいと道桁が足らないので
多倍長演算しないとだね。
>>10 ポアソン分布使えば少しは計算楽になるかも。
みなさんありがとうございました。 しかし、私のレベルがついていけないようです。 まさかこんな事がこれほど難しいとは思いませんでした。 階乗の計算くらい普通についていると思ってたのに。 挫折しそうです。
何気にExcelがスゴイんだよな。 ケータイ用じゃない普通のJavaでも桁数の大きな計算は 特別なクラスを使ったりして面倒。 自信を失くさず頑張れ。
excelは計算ソフトだから しかもwysiwig
正直これほど簡単な問題もなかなかない iアプリやる前に色々とやるべきことがあるだろ
と雑魚が申しております。
double pow(double a, int w) { double d = a; for (int i = 1; i < w; i++) { d *= a; } return d; }
doubェなくぃんやけど
日本語でおk
doubleもpowも使えない
>>14 の携帯の機種は?double使えるかも、powは無いけど
>>9 > 整数演算では高々 10^8 までしか有効桁が無かったりするから
すいません↑よく分からないんですが
floatの話でしょ。 floatに1/1000000000を突っ込んでもゼロになるって話。 あとはググれ
>>23 私自身は変えたばかりなのでSH903なんですが、
できればみんなで使いたかったのでOPTIONは使いたくなったんですが。
言語は難しくても、計算はEXCELと同じくらいの簡単さかと思ってたのに、
まさか計算の方でこんなに苦戦するとは。
整数演算って書いてあるのになんでfloatが出てくるんだ
28 :
14 :2007/03/20(火) 11:09:26
いろいろ考えましたが、少数の方は問題なさそうです。 for文の間に桁合わせ用の*100とか入れとけば整数で何とか成りそうです。
>>27 元々、前スレ997で
>3割バッターが100打席で
>ヒットを30本打つ確率と、2割バッターがヒットを30本打つ確率の比較、
>みたいのを計算しようとしたんですが、
という話があって、
浮動小数点が使えないならどうするかって流れなのよ。
(;´Д`)話のレベルが低すぎるぞ。 本気で計算したいなら、素直にNbit固定少数を扱うクラスでも作ってそれを使え。 ただたんに結果だけ欲しいなら、大学の数学教科書読んで数式ちゃんと作ればよろし。
その数式作るのに揉めてるんだろw
powが無いんだが累乗を求めるにはどうすれば?って言う話じゃないの?
dojaのソフトキーってキーボードのどのキーに対応しますか?
とりあえずAからZまで押して反応した所。
>>31 >3割バッターが100打席で
>ヒットを30本打つ確率
こんなもん高校生レベルじゃねーか。ってか、その数式で揉めてるならスレ違いだろう。
0.3の30乗 * 0.7の70乗 * 30C100だろ。
>>36 落ち着いて話を聞いて欲しい。
まず
>>8 を読んでくれ。
すでに数式が出ているのがわかると思う。質問者はどう実装するか、という事を悩んでいるわけだ。
次に
>>9 を読んでくれ。
小数が扱えない(0.3の30乗)、整数演算の有効桁(100C30)という問題が指摘されている。
さて
>>11 、
>>13 を読んでくれ。
有効桁の問題の解決策として多倍長演算が挙がっている。
そして
>>28 を読んでくれ。
どうやら質問者は固定小数を使うつもりのようだ、という事がわかると思う。整数演算の有効桁の問題をどのように解決するつもりなのかは不明だが、文面から考えている最中であろうと想像できる。
これを踏まえた上で
>>36 をよく読んでくれ。
ちょっと格好悪いね。
次がんばってくれ。
プログラムのエラーじゃなくてdoja.exeにエラーが出るんですけど どうしたらいいでしょうか? サウンドを扱うようになってから出るようになった気がします
まず状況と詳細と再現手順をここに書いて再インスコ
41 :
デフォルトの名無しさん :2007/03/22(木) 22:08:50
サウンドを扱うようになってから出るようになったってことは プログラムが悪いんだろ、見直せ
サウンドボードが刺さってねーだけじゃねーの
>>38 >>31 に言ってやれよ「その数式作るのに揉めてるんだろ」って言ったのは奴なんだから。
全レス嫁なんて質問者しか思わない傲慢だぜ
とりあえず質問者もいま実装中みたいだからもういいだろ 次はアルゴリズムスレにでも誘導するってことで
質問の内容も分らないのに回答してる奴っているんだな
今更煽るなんてねぇ( ´д)ヒソ(´д`)ヒソ(д` )空気読めない奴っているんだな
>>43 =
>>46 か?
嫌なら無視しろよ……
頼むからこれ以上スレの空気を悪くしないでくれ
もういいだろ
連続演奏中に音量を変えるプログラムを組んだんですが 曲が終わって再演奏するときに音量がデフォルト(MAX)に 戻ってしまいます なぜでしょうか? (MIDIファイルがリセットするタイプだから?) なんとかする方法はないのでしょうか?
再演奏とセットで音量落とせば?
セットでもうまくいきませんね エミュに問題があるんですかね
エミュではうまくいかなかったけど 携帯からだとうまく音量を調整できました 使ってるPCのサウンド機能の問題なんですかね・・・(?)
52 :
デフォルトの名無しさん :2007/03/26(月) 02:47:42
iアプリゲーム開発テキストブックの購入を考えているのですが、 901i/900i/700i/506i/505i対応版に書いてある内容は、 903i/703i対応版にも書いてありますか? ご存知の方よろしくお願いします。
53 :
デフォルトの名無しさん :2007/03/26(月) 17:13:44
例えば計算結果aを表示させたい時、 add(new Label(a)); じゃうまくいかないんですが、 どのようにやればいいですか?
それだけじゃさっぱりわからんよ
すいません add(new Label("a")); だと、普通にaと表示されますが、 変数aの中身を表示するにはどうすればいいでしょう、と言う意味です。
aがintとかでLabel(int)というコンストラクタが無いとか言われてるんだろ
リロードしてなかった。 Labelのコンストラクタに与える引数としてaの型がないと言われてるんだ。 文字列を与えることができることを知っているのなら、 aの型をStringに変換して、それをコンストラクタに与えればいい。 変換の仕方は、aの型がが何かによる。
aの型を変換しちゃだめだね。aの内容をStringに変換だ。 とりあえず、String.valueOf(a)で何とかなるだろ。 aが参照型のときは求めている表現になってないかもしれんが。
59 :
デフォルトの名無しさん :2007/03/26(月) 19:51:52
クラスメソッド使ってもいいけど、 add(new Label(a + "")); が一番楽だと思う
>>59 確かにタイピングの量は少ないけど、バイトコードのサイズが大きくならない?
コンパイラとかの最適化次第だとは思うけど、
aをiloadなりaloadしてString#valueOfをinvokestatic一発で呼ぶようにまで最適化してくれそうにない。
1.フォルダ内のファイル数をカウントするには? Folder.getFiles()使えば何かできそうじゃね? とか思ったけどその後が続かず・・ 2.ObjectOutputStreamが理解できませんとなる import java.io*;じゃ理解してくれない? 開発側が多忙によりなりゆきで仕事で使う端末評価用コンテンツを 自前で用意しなくてはならなくなったのだが、ズブ素人なので >iアプリ特有ではなくJava一般に関する質問はこちらへ にあたるかすらわからんので他適当なスレがあれば誘導お願いします
62 :
55 :2007/03/26(月) 23:07:43
ありがとうございます。
質問の仕方が悪かったです。
>>59 さんのやり方が知りたかったんです。
ありがとうございました。
63 :
デフォルトの名無しさん :2007/03/26(月) 23:45:09
>>52 誰か知ってる人いますか・・・
お願いします
>>52 amazonで調べてみたがページ数減ってるのな。
基本的にDoJaは上位互換なので、
新しいほうを一冊買っておけば十分じゃないかと思う。
>>61 1.返って来た配列の長さを見れば?
2.iアプリで使えるのはCLDCとDoJaで規定されたクラスだけ
65 :
デフォルトの名無しさん :2007/03/27(火) 11:48:57
ボタンを押すとある一定の場所に3行くらいのコメント(色々と変わる)を表示させたいんですけど、 普通にラベルで張ると、ボタンを押すたび下にどんどんと書き込んで行って元のが消えません。 どんな方法がいいでしょうか。 setLocationだと、機種ごとになんか変な感じになりそうなのでいやなんです。 テキストボックスの枠とか消せますか?
>>65 Panelで追加したオブジェクトを消したければ
Panelごと作り直すしかない。
そういう細かい制御をしたければCanvasで自力で描画するべき。
>>66 入力もあるからテキストボックス使ってるのでpanelなんですが
パネル毎かー。
今まで簡単にここまで来たのに。
>>65 コメントを変えるたびにLabelをnewしてPanelにaddしてないか?
LabelにはsetText()ってメソッドがあるぞ
>>70 ありがとう。できました。
settextって勝手にテキストボックスだけかと思ってました。
>>67 CanvasにもimeOnっていう、IME(入力窓)を呼び出す命令があるぞ
73 :
デフォルトの名無しさん :2007/03/27(火) 16:46:17
リセットボタンのように アプリを最初から起動し直す命令はありますか?
自分で作るもんです
reset(); と書き込んでもリセットできませんか?
>>64 thx、javaは配列が自前で.lengthと長さを持ってると知って目から汗が出そうになりました
・今日のお題
FileEntityで読み込んだ画像ファイルをInputStreamでMediaManager.getImage(in)に
渡して返ってきたMediaImageを単純にMI.use()してもどうにも失敗してしまう
そもそもuse()に引数があるとは知らなかったのでそこらへんの話なのかなあ
と漠然と思ってるのですがリファレンス読んでも何言ってるかさっぱりです・・・
読み込んだ画像をFileDataInputとしてreadFullyメソッドでバイト列にしてから
MediaManager.getImage(data)したMediaImageはuse()できましたがどうにもまんどい
社内データを持ち出せないのでソース提示しにくいですが必要ならノートにメモります・・・
>失敗してしまう じゃなくてエラーメッセージくらい調べなさいよ
>>77 目から汗を出すのはいいが、おかげで二次元配列とかつくるとめっさメモリー食うぜ…
固定長二次元配列(Cでいうint[64][16]とか)が作りたい場合、Javaでは1次元配列にして自前で掛け算せんと…
プログラムに間違いはないのに スクラッチパッドから画像データーを読み込むと 携帯で継続動作できない障害とか出ます どうすればいいのでしょうか?
80ですが・・・ まさかと思いますが、あんまり大きい画像は読み込みないんですか?
GPSで位置測位をしたいんですが、エミュレータで試してみたら、 GPSLocationProviderのgetLocation()でLocationExceptionが発生します。 エクセプションのステータスはLocationException.UNDEFINEDとなってます。 エミュレータではできないということなのでしょうか? それともADF等の設定が悪いのでしょうか?
エミュレータに位置情報を設定してなかったせいでした。 お騒がせしました、すいません。
サイズが大きい画像ファイルはエミュでは扱えるけど 携帯だと機種依存なのかもしれないけど 無理みたい そういうことはちゃんと説明書に明記して欲しいよね ざけんな
描画領域サイズまでしか保証しないと説明書に明記してあります。
エミュレーターの描画速度が遅い気がします 携帯のほうがいいCPUなんでしょうか? ちなみにPCは1.4GHzもあります
悪いがそのCPUだとエミュが遅くても仕方がない。もっと最近のを使うべき あとJavaSDKが1.3より1.4を使ったほうが全体的に高速になった気がする もう1.3なんて使ってないかもしれんけど
アムロの反応速度が遅い気がします Wゼロのほうがいいガンダムなんでしょうか? ちなみにRX-78は分離もできます
89 :
デフォルトの名無しさん :2007/03/29(木) 11:51:24
>>64 レスどうもです
ページ減ってるのはやっぱり不安ですよね・・・
でも903対応版買うことにしました
ありがとうございました
>>86 うちは Pentium M 1.4G だけど、P901i 実機より遙かに速い。
端末エミュレータでニューロポインタの 動作確認したいけどどうやればいいの?
エミュのスクラッチパッドに画像ファイルを書き込むにはどうすれば?
86<< 画像を高速【sleep(1)】で移動させるプログラムだとその遅さがよくわかります サウンド再生も曲の開始が遅い CPUよりもグラフィックボードに問題があるのかもしれない
そういえばDoJa5.0で.spファイルのフォーマットが変わってる 基本的にスクラッチパッドのイメージがファイルになっているだけだから 一度読み込んで画像ファイルを乗せてまた書き出せばよい
ibisとかテキスト90度横に回転して描画できるけど あれはどうやっているんだろうか…
>>94 エミュだとsleepの時間解像度が1ms秒より大きいだけじゃね
>>93 質問の意味が不鮮明。
普通に画像ダウンロードして普通に書き込み・・ってかなぜエミュ限定。
>>96 Image実体を、オフスクリーンイメージとして別に確保しておいて
そのImageに文字列を描画。
あとはdrawImageで回転でも拡大縮小でもかけて実画面に描画すればよい。
100 :
99 :2007/03/30(金) 11:42:12
これだと背景色が透過になりません、念のため。
試してみます。 どうもありがとう!
104 :
デフォルトの名無しさん :2007/04/01(日) 15:10:23
>>103 PCをサーバにしても「ネットに繋がず」って条件は満たされなくね?
_, ,_ ( ゚Д゚)……
ごめん……よくわからない。
エミュからサーバーに繋ぐ方法もいまいち分かりません。 詳しく説明しているサイトを知りませんか?
>>89 この本の20ページによれば
3Dグラフィックス
3Dサウンド
Felicaチップ読み書き
ポインティングでバイス
指紋認証
などの昨日を利用したiアプリを開発したい場合には前著に詳しくかいてあるので
そっちをかいませう
とかいてあります。
初心者的な質問で申し訳ないのですが・・・ アプリの動作上は、iとisってほとんど差はないんでしょうか? 中身はほとんどそのままのマイナーバージョンアップって感じですよね?
110 :
デフォルトの名無しさん :2007/04/02(月) 22:14:28
>>109 iとisだとDoJa(iアプリの根底)の変化は無いから、仕様の差だけに注意。
つまり大して意識する必要はないハズ。
詳しくはDoCoMo公式サイトで。
>>110 レスありがとうございます。
動作テスト用に古いのを買おうと思ったんですが、
isばかりでiがあまりオークションになかったので・・・。
isのほうにしてみます。
目がアプリ
(アフω゚リ)
114 :
デフォルトの名無しさん :2007/04/03(火) 01:23:50
>>108 レスどうもです。
基本的なことは両書とも押さえられていそうですね。
3Dグラフィックに興味があるので903i対応版でないほうにしてみます。
ありがとうございます。
Image.dispose()してもメモリ開放されない気がするんだけど、 そうだとしたら使う場面ってあるの? MediaImage.dispose()だけでおけ?
両方必要
あー、createしたやつに使うか。 寝ぼけてた。
MediaImage.dispose()だけしか使っていないが、困った試しはない。 Image.dispose()ってMIDPの仕様には書かれていないくらいだし、必要ないんでねーの?
>>115 MediaImage.dispose()したら、そこから取り出したImageは勝手にdispose()される
ってAPIリファレンスに書いてなかったっけ?
>>118 MIDP??
>>119 書いてあった・・・・・。
6年間気づかなかった・・・。
実機が手元にないので、わかる方いたら教えてほしいんですが… SDカードに保存できるファイルサイズ(暗号化なし)や、ファイル数の 上限て決まってますか?
むしろImageの変数にnullぶっこんでgcで困ったためしがない。
神は去ったか・・・
>>119 すまん、APIリファレンスのどこにある?
MediaImageのところにはなさそうだが…。
確かN504あたりで、両方開放しないと不具合起こした記憶がある。
ちがったかな…MediaImageでunuseすると勝手にdisposeが呼ばれて、以降disposeすると例外投げるんだったかな。
他と同じ気持ちで
Imageのdispose
unuse
dispose
未使用フラグを建てる
ってやると、未使用フラグが立たなくて困った覚えがある。
まーN504iなんてもう相手にしないってのなら問題ないんだがw
さすがにもうN504は相手にしねぇなw
>125>116 MediaManagerの説明のとこかな。 >125 N504i/iSのは、MediaImageから取り出したImageをdispose()すると 勝手にMediaImage#dispose()されちゃって MediaImage#unuse()のときに例外発生、ってな現象だったと思う。 過去スレでも何度か話題になった(確かこんな話)。
× >125>116 ○ >125>119
129 :
デフォルトの名無しさん :2007/04/05(木) 21:38:54
long変数の値が計算した結果 9223372036854775807を超えたらどういう扱いになりますか? 超えたらエラー表示を出したいんですが。
了解
すいません質問があります。 jamの lastmodified の項なんですが、 4月を apl として記述されているとエミュでプログラムのロード時に LastModifiedの値が不正です というエラーが出てプログラムをロードできないんですが、 (エミュレータはiαppliToolForDoja3.5を使用しています) とりあえず jamをテキストエディタで開いて apl を apr に手動で変更すると正常にロードできるようなのですが、 みなさんどう対処されていますか?
>>132 そりゃ、Aprが正しい綴りなんだから、そのように動作するでしょう。
エミュレータが勝手にAplって出力するってこと?
確かに初期の端末に、Aplって書かないと動かないやつがあったがw
DoJa開発キット(iαppliToolForDoja3.5)はちゃんとAprって出力する
もうここに神はいない
136 :
デフォルトの名無しさん :2007/04/08(日) 04:28:15
色々と調べてみたんですが見つからないので質問させて下さい。 計算帳のようなアプリを作っているんですが、Panel上にいくつか配置したTextBoxに数字を 入力してもらい、それらをINT型に変換して計算するようにしているんですが、デフォルト値を 数字にしていても全角文字などを入力してくる強者に対しての処置で悩んでいます。 例えばTEXT_CHANGEDの中などで、入力された内容が数字かどうか判断して数字じゃなければ ダイアログで警告を出しつつテキストの入力画面に戻す、といった操作は可能でしょうか? 要するに数字を入力するまで先に進めさせないようにしたいんです。 自分でなんとなく考えたのは、toIntの例外処理の中でダイアログ表示→テキスト入力画面に切り替え のような感じかな?とは思うのですが…。 よろしくお願いします。
>136 1文字ずつ入力チェックするなんて煩わしくないか? 警告出される側(ユーザー)も出す側(プログラマ)も toIntってのが何かは知らないけど Integer#parseInt()一発で例外処理してダイアログなり何なりでよいのでは
i-modeで少々気になるバグを見つけたのでDoCoMoへ報告したいのですが、 連絡先というものはあるのでしょうか?
Docomoショップ行けば?
まず、ここに報告しろよ…
僕の頭はバグだらけ><;
つーか、ここに書くとばれちゃうじゃんw
>>136 TextBoxはアプリユーザが自分でフォーカスをあてて選択キーを押さないと
テキスト入力画面に切り替えられないんじゃないかな。
Canvasを使えば技術的には可能だが、UI的にはオススメしない。
オリジナルのプログラムをお持ちの方いらっしゃいませんか? この度クレジット決済でスムーズにダウンロード売買が できるサイトを立ち上げました。 つhttp//web-cart.jp/ ※会員登録&商品のうp全て無料です! クオリティの高い商品のうpをお待ちしてますw
ははは、わら田
神は死んだ
何度でもよみがえるさ!
あのなのですが、↓のようなソースで、 import com.nttdocomo.ui.*; import com.nttdocomo.io.*; public class Hello_iApp extends IApplication { Panel p; Label label; public void start(){ p = new Panel(); label = new Label("てすと"); p.add(label); Display.setCurrent(p); setSoftLabel(SOFT_KEY_2,"終了"); } } 「SOFT_KEY_2を解決できません。」っていわれるんだけど、 なして? ちなみにEclipse 3.1でDoJa5.0
150 :
デフォルトの名無しさん :2007/04/11(水) 23:01:49
「メソッド setSoftLabel(int, java.lang.String) が見つかりません」っていわれるんだけど、 なして? と続くに一票。
151 :
148 :2007/04/11(水) 23:14:31
152 :
デフォルトの名無しさん :2007/04/12(木) 00:53:31
p.
MIDIファイルを使っても正常に動作するんですが 基本的にはMLDファイルを使ったほうがいいんですか?
教えてください。。 PanelクラスとCanvasクラスの両方を持たせて、画面上のボタンクリックでそれぞれの 画面を切り替えるようにしてるんですが、「決定ボタンを押した」という情報まで 切り替え先に持っていかれてるようで、切り替え先のテキストボックスが勝手に 入力モードになってしまいます…。 これは一体どうしたもんでしょうか?お願いします。
>>154 「押した」じゃなくて「離した」情報で入力モードになってるんじゃね?
決定ボタンを離した時に切り替えるようにすれば大丈夫だとおも。
>>155 ありがとうございます!仰る通りでした。
助かりましたm(_ _)m
更に質問をお願いします。 CanvasクラスとPanelクラスの両方で使用したい変数「event」があります。 2つ方法を試してみましたが駄目でした。 1つ目は、IAplicationクラスでstaticでeventを宣言し、Canvas、Panelクラス内の メソッドからIAplicationクラス名.eventと指定しても、違う画面を切り替えると変数の 中身が0で初期化されていました。 2つ目はCanvasクラスでstaticで宣言し、Canvasクラスのメソッド内で変動するのですが これをPanelクラスのメソッド内で、Canvas名.eventとしても「0」に初期化されています。 どちらのクラスから参照しても常に値を保持している変数として扱いたいのですが…。 根本的な理解度が少なくてすみません。よろしくお願いします。
158 :
157 :2007/04/12(木) 05:46:58
すみません。157の質問について自己解決というか、もの凄く大きな勘違いに気付きました。 画面の切り替え→常に新しくPanelが作成される と思ってましたので、Panelのメソッドの入り口で Canvasで使用しているevent変数で分岐処理をしてたのですが、常に初期値の処理しかしてくれず 上記の質問をしました。色々調べたら、起動時にパネルを作成して、それ以降は画面を切り替えても 既存のパネルが「表示」されるだけだったという事に気づきました。 すみませんでした。。
>>158 解決おめでとう。
結局、static変数は期待通りに変化していたのかな。
対応機種は Doja3.5以上なんですが、 フォントサイズを設定するときsmallにすると 12*12になると思うのですが 全角って全機種等幅フォントでしょうか? それとも機種依存なのでしょうか?
>>160 505以降は全機種共通で、12*12と24*24の等幅フォントがサポートされている。
そのほかの大きさは機種依存
まぁauとかキャリア対応まで考えると 面倒くさいわけだが・・
>>160 >>3 のん・ぱか工房のiアプリベンチを見ると、機種ごとのサイズが詳しく載ってる。
スクロールバーを付けたいんですけど、どうやってつけるんでしょうか?
>>164 そんなAPIはないからスクロールバーっぽく見えるようなものを自分で考えて実装する
166 :
165 :2007/04/14(土) 21:08:55
補足 Panelを使って1画面に収まらないほどのコントロール(テキストボックスやラベルのこと) を貼り付けた場合は勝手にスクロールバーが現れる
168 :
165 :2007/04/15(日) 01:05:07
方向キーを押したら画面内容をずらした位置に再描画して、 ずらした量に合わせた位置にバーのツマミを再描画する。 これだけのことだけど、難しいようならこれ以上はもう アルゴリズムを思い付くことができるかどうかって話で、 プログラミングの勉強頑張ってな、ってことに。 もっとも、何か特殊な操作方法や考え方のスクロールバーなら 最初にそれを説明してもらわないと。
age
age
アプリから、(通信ケーブルの)USBを制御する手段はありますか? (PC⇔携帯で有線通信するイメージです) 唯一関係ありそうなクラス「PhoneSystem」では不可能みたいですが、 Javaからでは不可能なのでしょうか。
173 :
デフォルトの名無しさん :2007/04/19(木) 01:28:28
jdk 1.6.0_01を入れたら、Dojaでビルドできなくなりました...アタタ。
ポンポン新しいものをいれるからだよ。 なんていってる俺様は未だに jdk 1.3.1
sun.tools.javac,
>>173 メニューから「設定」、「sun.tools.javac.Mainを使用する」にチェックしてからコンパイルしてみ
P902でバイブしたいんですが、全然震えてくれません。 エミュだとブルブルマークが出るので、コードは間違ってないはずなんですが・・・。 何かコツが必要なんでしょうか? トレースも何も出てないので、どうしていいのかさっぱりです。
携帯端末自体の設定とかは確認した?
>>177 携帯の設定じゃね?
メニュー>設定>iアプリ設定の欄を調べてみれば?
振動は結構機種依存が多いから動作は色々な機種で試すべきだよ。
機種依存って言っても揺れないとかではなく、揺れ方がとかね。
機種によっては着信時の振動設定が適用されたりするから
バイブ完全に切ってある設定だと動かない機種もあったりする。
180 :
デフォルトの名無しさん :2007/04/19(木) 11:14:36
>>173 jre 1.6.0, jre 1.3.1 を併存させているんですが...。
もちろん、eclipseでは1.3.1を設定してます。
181 :
デフォルトの名無しさん :2007/04/19(木) 11:18:10
>>180 書き足りませんでした。とにかくEcliplseでbuildができません。
別のPCにjre 1.5を併存させているのもあるのですが、こちらは、正常に
buildして、エミュレータまで起動してくれます。
182 :
177 :2007/04/19(木) 11:46:16
>>178 ,179
すいません、おっしゃるとおり、設定の見逃しでした。ありがとうございました。
着信設定は試してたんですが、アプリの設定でデフォルトでオフになってるとは思わなかった・・・。
揺れ方は着信時の揺れ方で、気持ち悪いですね。
>>181 環境変数JDK_HOMEに、1.4以前のJDKのインストールパスを設定してみ。
C:\Java\j2sdk1.4.2_13
こんな感じで。
184 :
デフォルトの名無しさん :2007/04/19(木) 12:35:55
jdk1.4ってもうセキュリティーアップデート対象外だろ?
>>181 プロジェクトのプロパティーのJava Compiler開いて
Compiler compliance level を1.4で出来ないかな
187 :
デフォルトの名無しさん :2007/04/20(金) 13:48:04
iアプリでflash liteのswfを生成したいんだけど、サーバを介さずに表示する方法あるかな? 画面メモにファイルを書き出せたらいいんだけど…
無理
何らかのテクニックがありそうな気はするけど 画像フォルダに強制的に出力しても無理なの?
190 :
デフォルトの名無しさん :2007/04/20(金) 19:48:23
>>189 無理だって言ってんだろ
しつこいんだよ
ボケが!!
>>190 てめーボケっていったやつがボケだ!
あ、やべっ、ボケッって言っちまった…
うわ、また言ったし(;´д`)
これじゃボケボケじゃん・・・
やべ2回m
193 :
デフォルトの名無しさん :2007/04/20(金) 23:33:48
>>183 レスありがとうございます。残念ながら、buildできませんでした。
pathを通してみたり、いろいろやってみましたが、ダメみたいですね。
jdk 1.6を併存してiAppliをeclipseでbuildできた方はいらっしゃるんでしょうか?
普通にできてるよ
>>193 逆にどうやったらできなくなったのかが知りたいくらいなのだが…。
196 :
デフォルトの名無しさん :2007/04/21(土) 03:44:13
>>195 ま、それが分かれば苦労はないわけでして...。
Jdk SE 1.6.0_01+Jdk2 EE, とjdk 1.3.1_16を入れています。
後から、1.3.1を入れたため、コントロールパネルにplug-inの設定iconが表示されて
いません。順番が逆なら、うまく行ったのかもしれません。別PCの方は、1.5.0で問題は
出ていません。
197 :
デフォルトの名無しさん :2007/04/21(土) 04:53:19
>>195 うまく動いていた方に、JDK 1.6をインストールするとeclipseの設定画面がうまく
でなくなりました。やはり無理があるのでは? アンインストールすると正常に
戻りました。
198 :
デフォルトの名無しさん :2007/04/21(土) 10:10:43
最近アプリでゲームをすると止まって動いてとカクカクに動く んですがばぐってるんですかね?アプリには2つゲームが 入ってるんですが、2つともそんな動きです。
>>193 俺はコンパイルは出来るがエミュレータが速攻落ちる。
start()後にSystem.out.printlnしてもプリントされない。エラーや例外は何もなし。
>>189 ローカルのファイルを指定してブラウザ起動できないからな
201 :
デフォルトの名無しさん :2007/04/21(土) 14:42:58
1.6ってクラスファイルの構造変わったの?
>>197 1. 何かすごいレアなバグに当たった。
2. すごく寒いミスをしている。
3.ハードウェアの故障。
…のどれかかなあ?
分かんないわ。
>>198 iチャネルに加入すると断続的に通信が行われるので
そのときに画面のカクカクが起きるね
でもたまにだけど
頻繁に起こるなら携帯の電源を一度切ってまた入れなおすと
余計なメモリーが解放されて動きがよくなることもある
メモリリーク起きてるの?
205 :
デフォルトの名無しさん :2007/04/22(日) 02:38:56
>>202 jdk, jre 1.6.0をインストールするだけで、Dojaの作動が不安定になるようですね。
基本的な質問なんですが、全く同じアプリでもDLするサイトが違うと「バージョンアップ」と は見なされないんでしょうか? 全く同じサーバの全く同じフォルダからDLすると「バージョンアップしますか?」と表示され 既にDLしてあるアプリに上書きされるんですが・・。 しかも同じサーバ内でもフォルダが違うだけで新規でダウンロードしてしまいます。 どのサイトからDLしてもスクラッチパッドの内容を使いまわしたいのですが、不可能でしょうか?
207 :
デフォルトの名無しさん :2007/04/22(日) 10:44:28
一度電源を切ってやってみたら普通にできるようになりました! ありがとうございます。
>>206 たぶん無理じゃないかなぁ
たとえば違うアプリなのに(サイトが違うのに)
同一ファイル名というだけでダウンロードが重なってしまうのは
それこそ重篤な携帯そのものエラーになるわけだから
>>205 このスレでは現象出てる人の方が圧倒的少数で、まともに動いている人の
書き込みもあるのに、憶測とはいえその一般化した書き方はどうかと思うが。
>>206 >全く同じアプリでもDLするサイトが違うと「バージョンアップ」とは見なされないんでしょうか?
みなされない。全く無関係でたまたま同名のアプリがあったらどうなるのさ。
端末にとってはURL+jamファイル名が一致するものだけが同じアプリ。
>全く同じサーバの全く同じフォルダからDLすると「バージョンアップしますか?」と表示され
>既にDLしてあるアプリに上書きされるんですが・・。
1つのアプリを同じ場所から2回DLするってことでしょ?
だったらバージョンアップ(すでにDLされています)の確認が出るのは当たり前。
それに上書きは強制じゃなくてユーザーの判断で決められるでしょ。
>しかも同じサーバ内でもフォルダが違うだけで新規でダウンロードしてしまいます。
繰り返すが、端末にとってはURL+jamファイル名が一致するものだけが同じアプリ。
>どのサイトからDLしてもスクラッチパッドの内容を使いまわしたいのですが、不可能でしょうか?
端末にとって別アプリと扱われる以上、不可能。
カーソルキーの右下にあるボタンをeventで拾いたいんですが、 PhoneSystem.setAttributeによる定義で、 左下のMAILやCLEARキーは拾えるようになったものの、HONE_BOOKだけなぜか拾えません。 PhoneSystem.setAttribute(PhoneSystem.DEV_KEYPAD,Display.KEY_PHONE_BOOK >> 5 ); PhoneSystem.setAttribute(PhoneSystem.DEV_KEYPAD,Display.KEY_MAIL >> 5 ); こんな感じでやってます。 上記のコード以外にも色々試してみたんですが、 MEMOやCLEARは拾えても、なぜかPHONE_BOOKが拾えません。 上手くやる方法をご存知な方いらっしゃいませんか?
↑機種依存で使えないんじゃない?
言葉足らずですみません。 エミュレーター上でとりあえずやってみたんですが、 無理だったので質問させていただきました。 エミュレータがダメな可能性ってそういえばあるのかな・・ちょっと実機でやってみます。
>>211 KEY_PHONE_BOOKってリファレンスにのってないな4.0と5.0見たが。
3.5までならあるっぽいがそこにはこの定義でイベントを発生させるなと書いてある。
何に使うのか知らないけど使わない方が良いかと思われるぞ。
・CドライブがIDKでうじゃうじゃするのがウザいので別パスにインストール ・カスタムでEclipseプラグインインストール ・Eclipseのウィンドウ→設定→DoJaのインストール先を修正 『C:/iDKDoJa5.0[lib[bluetooh.propertiesの保存に失敗しました。』 (ノ ゜Д゜)ノ ==== ┻━━┻
iDKも派遣の素人が作ってんのか?w
217 :
215 :2007/04/23(月) 10:57:59
Eclipseを再起動したら使えますた。 ('д')ぇー
>>206 何がしたいのかな。
サイト1からDLしたアプリAと、サイト2からDLしたアプリAが
別アプリとして扱われて何か困ることでも?
それともサイト1からDLしたアプリAのスクラッチパッドを、
サイト2からDLしたアプリBで引き継ぎたいとか?
219 :
206 :2007/04/23(月) 14:58:12
色々とご回答ありがとうございます。 やっぱり不可能ですよね。 なぜ別々のサイトからDLしたアプリを同アプリと見なしてほしかったかというと 218さんの仰る通りで、スクラッチパッドに保存したデータを引き継ぎたいからなんです。 ちょこちょことバージョンアップをしていく予定なのですが、バージョンアップを するたびにそれまで保存したデータが使えなくなってしまっては意味がありませんので…。 他の方法を考えてみます。ありがとうございました。
206じゃないけど思い当たる所はあるな。 可能性ありそうなのが サイト移転した時 HPのフォルダ構造の変更 サーバー側でドメインが変更になったとかでも起こる? とかかな。継続的にデータを使用し続けるアプリで バージョンアップでデータ消えるのは確かに辛いな。 そういう意味では機種変更はもっと辛いことになるがな・・。
偽造GIF
ユーザが何度もバージョンアップしてでも使ってくれるアプリになって、 サイト移転に巡り合ってから悩むんでも遅くなくね?
バージョンアップ版を同じURLで公開するのはダメなの?
データ構造を変更しなければOKだと思うけど。
セーブデータにそのデータのバージョン番号入れればいい。 構造変えたらデータバージョン番号変更。 保存されてるデータバージョン番号と、アプリ側のデータバージョン番号が違ったらコンバート。
>>224 >>225 質問の内容とレスが異なってるべw
質問内容はなんらかの理由でアプリのダウンロードのURLが
変更になった場合アプリのバージョンアップでは対応できず、
ダウンしたら別アプリ扱いになってしまい以前のセーブデータを
どうにかして引き継げないか?だと思うが。
上で出てるけど偽造GIFで無理矢理持っていくか
同じサーバー上であるならば限定だが(移転には対応できず)
サーバーにデータをアップして管理するシステムをつくるかぐらいしか思いつかんな。
素直に、サーバー側にセーブもてよとしか思えんぞ
まさかとは思うけど、バージョンアップするたびにurl変えるの? 一応 ・引き継ぐデータが小さいこと(文字列で250文字くらい) ・引き継ぎたい(バージョンアップ前の)urlがわかる なら、アプリ連携利用で引き継ごうと思えばできなくはない
アプリからアプリを起動するんだと同一ホストでないとパラメータ渡せないから、 旧アプリ→ブラウザ起動(パラメータを url に仕込んで)→ブラウザ連携で新アプリ起動 って回り道すればできそうか。
902iS以降でいいんだったらSD-Binding使えるんだがな。
231 :
デフォルトの名無しさん :2007/04/25(水) 13:31:40
doja-5.0 の bluetooth.properties に登録機器を登録したいのですが、どーやればよろしいのでしょうか?
>>231 DoJa5.0開発キット付属の
「DoJa-2007_1st_Emulator_DevGuide3.00.pdf」
258ページ参照。
>>228-229 ちょっとディレクトリ構成が変わる程度ならmod rewriteで十分。
ドメイン変更なら偽装gifかサーバ経由で引継ぎ。
この程度できないなら外に出せって事でもうこの会話止めにしない?
234 :
231 :2007/04/25(水) 16:57:05
ADFのPackageURLにaspファイルを指定して jarファイルを取得したいんだけど、 肝心のaspの書き方がよくわからんのです... 知ってる方いたら、教えてくれませんか つД`)
HTMLを書いて拡張子を.aspにする
237 :
デフォルトの名無しさん :2007/04/26(木) 01:07:02
tintin
238 :
小額性 :2007/04/27(金) 00:24:13
Graphics.がひっかかるけど、AWTもしくはAppletViewerなくても動くのかな、ケータイならMIDlet? com.nttdocomo.ui.Graphicsかぁ、ブラウザ・ヴューアか、もしくはAWT、どっちだろう。 アプレットヴューアの場合、WEBサーバにアクセスするとWEBサーバからアプレットクラスは落ちてくるけど、スタンドアローン内での動作でしょう?、その場合だとアプレットクラスは入れてないと動かないけれど。 的外れだったらゴメン。
>>238 動作しないって、具体的にどうなるのよ?
それを説明しないで何をしてほしいんだかw
起動したら直ぐ落ちるのでは? 仕事でも、脳のブレーカーも一緒に落ちる人がよくいるw
try{ Thread.sleep(100); }catch(Exception e){ }
public void paint(Graphics g) { … while(true){ … } } この構造が問題なんじゃねーの
もしかしてマジレス禁止ですか?
言いたいことがちょっと違った public void paint(Graphics g) { … while(true){ … try{ Thread.sleep(100); }catch(Exception e){} } } paint内でsleepしながら無限ループって構造が問題なんじゃねーかと思う sleepと無限ループをやめてprocessEventでrepaintすればとりあえず動くかも?
paint内でループってすげーな…。 昔仕事で、paint内で通信しているソース提出してきた会社があったが…。
既に実装されてて定期的に呼ばれる部分が paintだったんだろうな('A`)y-~~
百歩ゆずってたまたま動いてたとして そもそも paint の中の sleep で例外発生してただろうに その原因を考えずに単純に握りつぶしてるんだもんな
>>238 paintは処理抜けないとprocessEventが呼ばれなかったと思う。
こんな感じでどう?
public class KeyTest003 extends IApplication {
public void start() {
MainCanvas main = new MainCanvas();
Display.setCurrent( main );
main.start();
}
}
class MainCanvas extends Canvas {
public void start() {
Graphics g = getGraphics();
while(true){
// paint内のループをココへ
}
}
public void paint(Graphics g) {
// この際何もしなくていい。
}
}
IApplication#start()はiアプリの場合スレッドなので
そこにメインループを作っても大丈夫。
paintの中だけでどれほどのことができるかの挑戦と見た(`・ω・´)
昔のSOならpaintとprocessEventが別スレッドで実装されてたから動くかもね。 今のは知らんが。
>>249 あー、うちの会社それだわ。
やっぱりその形が安定する。
しかしRunnable継承したときのこと考えると、名前がstartなのはいただけないな。mainとかにしておこうぜ
mainもエントリポイントの意味があるからやめたほうが
254 :
デフォルトの名無しさん :2007/04/27(金) 21:07:17
paint内でループしてても全然問題ないと思う repaintしてもpaintの先頭からじゃなくループ内の処理が継続されるから なぜかは分からないが
iアプリをパソコンでやれるようにってできねぇかな iモード自体は簡単にできるけど結局ダウンロードすると使えないじゃん どこをご認識させたら動くようになるのよ?
ソースをもらってくる
>>256 は板違い。
家電製品-携帯コンテンツのとこでも行けばいいよ。
ドコモに限ったことではないんだけど 携帯とPCをUSB接続して電話帳などのデーターを引っ張ってくる、ということを したいんだけど、なんてググったらいいんでしょうか? これができたらできること増えそうでおもしろそう。
俺は仕事でiアプリ作ってるだけで、 携帯はauだから知らんなぁ(・ω・)
>>260 PC側のソフトからは可能
iアプリからは出来ない
264 :
260 :2007/04/29(日) 14:28:34
レスさんくす!
>>236 IoOBEXググってみたら、赤外線でのデータ通信なんですね。
ひとつ勉強になりました。
>>262 PC側から制御するための言語や、仕様はどこで公開されているのでしょうか?
今日アプリ作成に試みました・・ doja内ではちゃんと表示されています いざサイトにうp! するとサイトにダウンロードの文字が! ついにできた、と思ったら、、 ダウンロード準備㊥・・・ 「指定されたサイトがありません」 orz よくわからん説明ですが 原因などわかるかたいらっしゃいましたら アドバイスいただけないでしょうか?;;
266 :
260 :2007/04/29(日) 16:47:30
おれもよくわかってなくて多分だけど 例として、 Test.jam Test.jar Download.html が同じディレクトリにある状態で Download.html の中が <OBJECT declare id="Test" data="Test.jam" type="application/x-jam"></OBJECT> <BR> <A ijam="#Test" href="Download.html">DOWNLOAD</A> ってな具合になってたらうまく落とせると思う。
>>266 ありがとうございます^^
やってみます!
>>264 >PC側から制御するための言語や、仕様はどこで公開されているのでしょうか?
公開されてるなんて話は聞いたこと無いから公開されてないんじゃないかな?
っていうか完全にスレ違い
>>266 アドバイスありがとうございました
無事成功しました
本当に感謝です><
>>270 苛めるなよ。その単語でぐぐる気があるなら、こんなところで質問続けてないだろ
無視しなきゃ教えてもらえるところだったのにな馬鹿め
274 :
260 :2007/05/03(木) 12:15:49
無視したわけではないです!PC環境から離れていました。 先日、IrOBEXでググった際には送受信キットというページをまず開いてしまい、 そこで終了してしまいましたが、今wikiページで理解しました。 一歩目がわかったので色々調べてみようと思います。 ありがとうございました。
勝手アプリ作者でギガアプリに登録してる人いる? 以前までは新しいアプリを登録申請して、登録完了したら、 ギガアプリから登録完了のメールが来たんだけど、 最近は何も来ないんだよな。 他の人はちゃんとメールきてますか?
何かもう・・・
>>260 マジレスするとIrOBEXは赤外線通信のインタフェースで、
PCと接続するには色んなハードル越えないとダメ。
それ以前にiアプリではアドレス帳のデータが取得できないのでダメ。
S!もアドレス帳にアクセスするにはCPじゃないとダメ。
auはS!より敷居が高いので問題外。
PCとUSB接続している奴は、
各携帯キャリアから接続用のインタフェース仕様を貰って
全携帯用のドライバを開発している。
殆どの携帯で内部構造がバラバラで、
更に各種OS用のドライバを作るから地獄の思いをするらしい。
ともあれUSBの仕様的にPCが親で携帯が子になるんで、
PC(親)から携帯(子)に対してデータ取得コマンドを投げるのが正しい姿。
子から親に対して接続要求やら、データの送信をするんじゃない。
よってアプリ関係ない。完全にスレ違い。
赤外線とUSBがまざってるのでよくわからんが べつに赤外線でも電話帳データのやりとりできなかったっけ? それはIrOBEXに基づいてると思うけど。 詳細な仕様はしらんw
なあ、そもそも電話帳もブックマークもスケジュールも、
アプリ側からは新規登録しかできなくね?
つか、
>>260 は、普通にケーブルと専用ソフトのセット買ってきたらよくね?
>>277 ああ、すまん。iアプリじゃ無理だわな。
普通の機能で、IrOBEX使った電話帳転送ができるということが言いたかった。
280 :
260 :2007/05/04(金) 10:47:42
たくさんのレスサンクスです! とにかく、非常に難しいことは分かりました。 おとなしく、自己マンアプリ作って過ごします ノシ
>IrOBEXは赤外線通信のインタフェースで これが激しい思い込み 全然違う
>260は結論出してるのにスレ違いの話でし引っ張らなくていいよ
>>278 PhoneBookのAddEntryでいけないかな
トラステッドかしれんけど
どうみてもトラステッドです本当に(ry
マルチになってしまいますが…。 構造体的なクラスをつかわなかったり、メソッドをインラインで書いたり、 1クラスでガリガリ書くコーディングってやっぱり今も主流なんでしょうか? 今はiアプリは100kbまで利用出来ますが、 実行ファイルサイズや、ヒープの使用量以外に、 速度的なメリットはあるのでしょうか?
逆になぜ、どういう組み方が主流かなんて気にする必要があるの? 仕事で組み方を制限されてるならその通りにやればいいし、 個人的なものなら、速さか容量か、それとも他の要素か、 何を重視するか決めて好きにすればいいじゃない。
>>286 レス有難うございます。
プログラミングは個人でやってます。
アプリCPUエミュレーションをやっていて、必要なのは速度です。
速度に影響がなければ当然メンテナンスしやすく書きたいです。
文脈で誤解されてしまいましたが、
どんな組み方が主流か、を気にしてるわけではなく、
今流通してるターゲット上で、速度が必要な場合、
どのような組み方が速いのか。を知りたいと思いました。
Webでiアプリ作成ノウハウを探してみたのですが、
少し前の、サイズを減らすような組み方のアプローチに関しては
多くの情報があったのですが、速度に関してはあまり言及している本や、
サイトがありませんでした。。
サイズ制限が緩和された今で、速度面でのメリットでもなければ、
1クラスでガリガリ…な書き方をする必要も無いし、
もし必要ならば速度面に影響があるのではないか?と思い
>やっぱり今も主流なんでしょうか
…という書き方になってしまいました。
簡単なクラスで、幾つかパターンを試して実測してみようと思います。
有難うございました。
速度は機種で大きく違いすぎるから、 みんな考えるのを止めちゃったんだと思われw
ゲームのような常時ループモノ以外だと速度の上昇=計算量の低下につながり、 バッテリーの持ちがよくなり環境にもやさしい、、、、かは微妙だ。
初回起動時のみとかで、10秒間スレッドを何回まわせるか計測して…とかやってるの? 俺めんどくさいしやってね
定期的にフレームレート計ってスリープ値は変えてるな。
携帯がデスクトップの速度を上回る日はもうそこまで来ている
おまえ視力どんだけいいんだよ
っていうかJavaじゃん
>>289 膨らんだり爆発するかもれない物が多いのにそんな気遣いはないなw
むしろバッテリーを爆発させるようなアプリを作ってみたいなw
質問です。 アプリ内でボタンに対する音階を鳴らしたい場合には それぞれの音階のmldを用意しなければいけないのでしょうか?
あたぼう
フォーマットが分かればプログラムで生成もできる。>MLD MIDIシーケンスファイルとやってる事は大体同じ。 実際、MLDで音を鳴らしてる、作曲iアプリなんかもある。 単音鳴らすだけなら、あらかじめ~数十バイト程度のデータを用意して、 数バイト書き換えるだけで音程や音色は変えられる。 面倒だからやらないほうがいいけど。
>>287 今も昔もインライン展開したほうが速いんじゃないかな。
ただ、そこまでしなくても十分な速度が出るなら保守性を選ぶべきだし、
速ければ速いほどいいなら保守性を捨ててでも速いコードを書けばいい。
結局、アプリの要件次第だな。
ちなみに1クラスにガリガリ書けばそれだけで速くなるわけじゃないんだぜ?
でも30クラスとか作っちゃうのは容量の問題で泣けるぜ
>>300 レス有難うございます。
参考にしているプログラムのソースでは、
privateメソッド含め殆どインラインで書いてます。
私は、数ステップ程度のPrivateメソッドなら、
コンパイラに期待してメソッド宣言してしまっています。
やっている事がアプリでのCPUエミュレーションなので、
速度はかなり重視されます。
>>ちなみに1クラスにガリガリ書けばそれだけで速くなるわけじゃないんだぜ?
このあたりのノウハウを教えて頂けないでしょうか・・・。
それはもうiアプリの話じゃなくてJava一般の話じゃないのか? iアプリ特有の高速化テクニックとかそんなにあるんだろうか。 ところで趣味のアプリでCPUのエミュレーションって 家庭用ゲーム機のエミュレータでも作ってんのかね。
一部の機種ではCPUが2個乗ってるとか、 そういうのに対応するテクニックはあるかもしれんけど、 基本的にはJava一般の話だな。
FAQだとは思うのですが、GraphicsのdrawStringで~(WAVE DASH)を を描画したい場合は、どうすれば良いのでしょうか? 所謂、Unicodeの波ダッシュ問題だと思うのですが、回避策が分かりません。 どなたかご教示お願い致します。
>>305 質問状況がよくわからないよ。
通信でテキストデータを受信してそれを描画すると文字が化けてるとか、そういう状況?
アプリ内で単に表示するだけなら g.drawString("~", 20, 20); で画面に出るけど。
端末内で扱う文字コードはS-JIS
>>306 いえ。単にソースに
Graphics g = getGraphics();
...
g.drawString("~", ...
してるだけです。エミュレータ、実機共に、「・」か「?」になったような記憶があります。
開発環境はEclipse 3.1.2とiDKDoJa5.0(3.00)です。
> 端末内で扱う文字コードはS-JIS
とはどういうことでしょうか? ソースはShift-JISですが、そういう話ではないですよね?
308 :
306 :2007/05/07(月) 13:40:47
DoJa-3.5エミュレータと実機P900iで問題なく「~」出てるよ。 > 端末内で扱う文字コードはS-JIS とはどういうことでしょうか? もし文字列を入れたbyte配列をいじるような処理してるんだったら そこでコードを勘違いしてて壊してないか?ってことで書いてみた。
>>305 JDK 1.4.0以前: Shift_JIS = MS932
JDK 1.4.1以後: Shift_JIS = SJIS
となっていて、この違いから特定の文字で文字化けが起きるようです。
詳細は「java SJIS エイリアス」でググると色々見つかると思います。
対策としては
・エンコーディングに Windows-31j を指定する
・文字列の中に文字コードを直接書き込む("\u301c")
あたりでしょうか。(私は下の方法でやってます)
他にいい方法あったらよろしく。
>>302 >私は、数ステップ程度のPrivateメソッドなら、 コンパイラに期待してメソッド宣言してしまっています。
Javaはコンパイル時の最適化はほとんどしない。実行時に最適化できるから。
しかし実装依存だから、携帯のVMでインライン展開しているかどうかはわからない。
おそらくしていないと思うが。
311 :
デフォルトの名無しさん :2007/05/11(金) 16:05:24
RemoteDevice.connect に指定するプロファイルって、具体的には何を指定すればよろしいのでしょうか?
312 :
デフォルトの名無しさん :2007/05/11(金) 20:05:11
アプリで安定して60FPS出す方法ってないでしょうか。 なんか揺らぐ。垂直同期?に綺麗に合わせるようなことはできないのかな。 16.6msとか計りたいのだけど…
>>313 無理。タイマの精度も高くないし垂直同期とかも取れないから。
PCで30に調節しても携帯で動かすと20しか出なかったりする
そもそも液晶の応答速度がそんな出ないんじゃない?
902以上で2Dゲームなら60FPS余裕なのにもったいないなぁ。 とりあえず16msで回してるけど、時々カクッとなったり、画面が揺らいだりする。 16msと17msで交互に回すと(平均16.5ms)余計にカクカクした。 16ms回して我慢しておきます…。目立たない部分は30fpsにしとこう。
>>317 たぶんタイマーの精度がそんなにない。10msとかそんなもんで機種毎に違うハズ。
だからタイマーを監視して1フレーム分の16msとかのウェイトを作ってるとカクっとなる。
ためしに10msとか20msで回してみな。
902以降のSystem.currentTimeMillisで1ms単位までなら数値でてるよ。 一応それで回してる。
1つ質問よろしいですか? 当方、パズルゲームを現在作成中なのですが processEventでキーを取得する処理にしているんですが たまに受け取らないことがあるみたいなんです。 50FPSで処理させているのを25FPSにすると安定するのですが ゲームで25FPSはちょっと……。 確実に毎フレームとってくる方法なんてのは無いのでしょうか? なるべくprocessEventを使用した方向で回答をお願いします。
固定せずに、可変フレームレートの方が良くない?
アプリが4フレーム出てれば良かった頃の人間からすると えれぇ進化だな('A`)y-~~
>>321 普通にgetKeypadState使った方がいいんじゃない?
あと、901以前だと25FPSすら出ない機種の方が多いとおも。
古い機種にも対応させる必要があるなら、10FPSで遊べる内容に調整しないと。
>>322 実機が手元に無いのでどんな感じになるか分かりませんが
試してみたいと思います。
>>324 D800iDSなので、キーを受け取るっていうより
タッチしたか、してないかをみたいんですよね。
書き方が悪くてすいません。
実際のところ10FPSで動くようなゲームってどんな感じでしょう?
PCゲームプログラミングに慣れているもので、感じがつかめないです。
10フレームでもゲームになってりゃゲームだよ('A`)y-~~ フレームレート上げれるとイベント取りこぼすようになるのは 仕様と思って諦めた方がいい。 BREWとかもそうだし。
25フレームとか贅沢もいいところだ
>>326 やっぱりそうですか。
対策について一日中考えていたのですが、ちょっと残念です。
素直にgetKeypadState使えば解決しそうだが
D800iDSのタッチパネルってPointingDevice扱いなんよ。
>>329 D800iDSには
「通話」
「クリア(?)」
「電話切る」
の三つしかないんで、getKeypadStateしてもしょうがない。
D800iDSのタッチパネルってテンキー表示のとき数字キーのとこをタッチすると 他の機種と同じようにprocessEvent()でDisplay#KEY_1とか上がってくんの?
900i以降で、画面の大きさ以上のイメージは読み込めないという機種はあるんでしょうか?
334 :
デフォルトの名無しさん :2007/05/13(日) 15:42:09
定額じゃないからⅰアプリをPC経由で携帯にUSBでDLしたいんですけど、 PCでDL出来るサイトって無いですか?
良く分からんがあるならとっくに使ってる。
jam/jarファイルのリンクをローカルにでも作って「対象をファイルに保存」でダウンロードは普通にできると思うが?
>>336 PCでアプリをダウンロードして、携帯になにかしらの媒体でコピーして
そのアプリを携帯で使いたいってことでしょ?
それなら無理ってことでしょ。
public void keyPressed(Panel,int){} 十字キー押してもこの中に処理が入りません。 数字キーではちゃんと入ります。助けてください。
>>338 Panelでは十字キーとかは取れない。Panelが使っちゃうからな。
そーだったんですか。ありがとうございます。
60FPS近くで処理を終えても、液晶の性能が低く実質30FPSの機種もあるな。
実質902以降は15フレーム近辺ってイメージだと思うんだがどうよ?
AudioPresenter#getCurrentTime()は、当てにならぬ。機種依存が大きい。 よい子は使っちゃだめよ。
>>320 もしかしてこういうこと?
while(System.currentTimeMillis() < wait);
wait += 16;
バッテリー食いそうだなあ。
>>344 残り数ミリ秒まではsleepしてるよ。
最後はおっしゃるとおり空回し。
sleep()でも電力消費はほとんど変わらないという噂。
Σ(;´Д`)
タイマーで回しているのは俺だけのようだな
sleepと殻回しはどうちがうの?
空回しってスリープ無しの事?
>>345 さんの意見だと
sleep の中身は空回しじゃないって言う意味でそ
じゃあどうちがうの?って
ああ。どうなんだろうね。
解ってて言ってるだろww つまりsleepで9割ぐらいのとこまで待機して、 後は344で正確な値になるまで待つ。 Thread.sleep( wait - System.currentTimeMillis() - 3 ) while(System.currentTimeMillis() < wait);
から回しってのは while(System.currentTimeMillis() < wait) ; のことだわな。 で、sleepするとバッテリーの消費抑えられたのはP504iなどの昔の超優良真面目機種だけ。 今はまったくかわらん。 というか、などのっていったけどP504iとP504iSだけじゃないか?
ソースは?
オイスターで
FileReaderクラスが見つからないんですが ファイルからの入力って何を使ってやるんですか?
>>357 スクラッチパッドの好きな場所から好きなように入力して下さい。
SDカードのファイルだったら開発ガイドの外部メモリの項目見れ。
359 :
デフォルトの名無しさん :2007/05/17(木) 23:24:29
パレットの使い方が全然分かりません 画像名.setEntry(色番,色); とやっても、シンボルを解決できないと出てしまいますぅ 画像は普通のImageです PalettedImageのロードのしかたも分かりません ネットのAPIリファレンス見ても理解不能
>>359 普通のImageではパレット使えない。
PalettedImageはcreatePalettedImageってファクトリメソッドがあるでしょ。
361 :
デフォルトの名無しさん :2007/05/18(金) 00:48:43
Image gazou; PalettedImage gazou2; MediaImage pMImage=MediaManager.getImage("resource:///aaa.gif"); try{pMImage.use();}catch(ConnectionException ce){} gazou=pMImage.getImage(); gazou2=createPalettedImage(gazou); ↑とやってもエラーが出てPalettedImageが作れません。 どうしてでしょうか?!
>ネットのAPIリファレンス見ても理解不能 理解できなきゃもう辞めればぁ?
>>361 型が違うから。
Javaについてその理解度だと厳しいだろうな。。。
対象機種はFOMAで、音声(PCM)をiアプリから鳴らそうとしているのですが、 WAVからMLDファイルに変換するツールとしては、wav2mld(シェアウエア)しか ないのでしょうか? W2MFiなんたらというのが開発者向けにありますが、エラーが出てmldが 作成されません。インストール時点から既にエラーが出てるし。。 PCMをiアプリから使う方法として最適なのはどういった方法なのでしょうか?
365 :
デフォルトの名無しさん :2007/05/18(金) 19:03:15
iアプリゲームの作成支援ソフトでお勧めのものがあったら教えてください!
>>363 おまえは質問の悪口ばかり書き込んでるんじゃねえよ
おまえみたいのを荒らしって言うんだ覚えておけ
二度とこのスレに来るな
害虫野郎
>>362 おまえは質問の悪口ばかり書き込んでるんじゃねえよ
おまえみたいのを荒らしって言うんだ覚えておけ
二度とこのスレに来るな
害虫野郎
>>370 いいからおまえはもう来るなって
おまえの不愉快なレスのせいでここが閑散としちまったことに
いいかげん気づけよ
知識があってもマナーのない奴はここには必要ねえんだよ
Java初心者を嘲るつもりは全然ないんだが、
>>361 はもっと勉強しないといかんと思うぞ。
Imageクラスはbyte配列でもInputStreamクラスでもない。
まずはコンパイルエラーの内容をよく読むんだ。頑張れ!
>>364 ドコモが仕様公開しないから完全無料のはまずない。
最適なのはPCMを使わないこと。可能なら動画なし3gpで再生。
最悪ドコモやめる方法も。
もしかしてスクラッチパッドってiアプリ更新してもリセットされない?
されない
PsmPlayerがあるだろ
わかってたことだけどVista+JDK6でエミュ動かしたら結構大変なことになった 1つだけ言うとすれば、欲張ってカスタマイズしようとするな、ということだった とにかくデフォルトで使うようにするとしっかり動く
メソッド内にそれ以上書き込んだらビルドはできるけど実行するとエミュに Maximum byte code length (32kB) exceededって表示されて実行できない状態になってしまった。 やっぱメソッドを削る以外方法はないんでしょうか。
iDK for DoJa 5.0を4/23リリースのバージョン3.00に入れ替えてからの 話なんだが。 エミュでアプリ起動するとプロセスdoja.exeが生成されるんだけど、 アプリ終了すると高確率でこのdoja.exeが残る。で、つぎにアプリ 起動しても何も起きない。残ってたdoja.exeを殺すとまたアプリが 起動するようになる。こんなのうちだけ?
>>379 縮めろ
>>380 そのバージョンは入れてないから何とも言えんが過去のDojaとかでもたまーに起きた。
エミュ終了時にPCが重いとプロセスが残る可能性が高まる気がする。
>>377 負け犬はおまえだろ
質問の悪口しか書き込めない奴はここに来るな
ネットマナーを勉強しろ
32KBを超えるメソッドって一体何行あるんだ… もしかしてこういう形で巨大な配列を初期化してない? int[] array = new int[]{0,1,2,3,4};
2ちゃんでマナーとかワラタ
final int data[] = { 1,2,3~}; をどっかに置いておいてもなるね。
>>380 Doja 4.1でもたまになってるよ。
数ヶ月前までは滅多になかったんだけど、ここ1ヶ月では数日に1回はなってる。
WindowsUpdateとの関連性があるのだろか。
389 :
379 :2007/05/20(日) 10:51:03
docomoから画面も広くて回線も早い携帯が出ますよね Nだったかな それ専用の2chブラウザ作って欲しい 他のブラウザと違う所は絵や写真のうpをブラウザで表示できる事 PCのブラウザでは普通だけど今までの携帯ではできませんよね? iアプリを作ってスレを探せなかったのでここにレスしました
>>389 巨大な配列は、長い文字列にコード化して持っておくと結構小さくなるよ。
初期化時にInteger.parseInt()などで数値化する。
>>389 exe()が長すぎ。3000行もあるじゃん。
メソッド分割してみなよ。
ってスタックに変数乗せてるこの構造だと分割も面倒そうだね(苦笑
とりあえず「ゲーム画面」のところだけでも別のメソッドに移せれば…
うわん、読みにくいコード でも他人のは参考になる
>>390 自分にレスだけどW2Chで出来たみたい。スマソ
W2Chなんてものあったのか iMonaしかしらねーや
397 :
379 :2007/05/20(日) 15:49:00
>>397 構造ってよかコメントとか行間の取り方の問題の気がする。
つーか、プリプロセス済みソースみたいだしw
その辺は経験かね。
401 :
379 :2007/05/21(月) 00:54:36
>>400 ソース公開するつもりはなかったから自分だけ分かればいいや
って感じで適当にコメントしてしまった。
後から考えたら変なコメントばっかでちょっと恥ずかしくなったw
まあゲーム内容も恥ずかしいけどね。
そんなどうでもいいとこ恥ずかしがる前に きみは「初めてのプログラミング」みたいな本を読んだ方がいいよ
ソース公開したら、ここ見てる会社の同僚に 1発で俺ってばれるから駄目だなw
本を読むより生きたコードを読むほうがいいんじゃね? こういうやり方もあるのか!みたいな感動をたくさん味わってほしい
それは基礎知識があってのことだろう 1つのメソッドで3000行も書くようではやはり 他人のソースを読み解くより先に基礎知識を身に付けるべきだろう
でも普通にプログラミングの本、特にオブジェクト指向の本なんて読まれた日には・・・ お願いだ。iアプリにクラスを30個も作らないでくれ・・・
その辺のさじ加減はC/C++/Javaができる人がうまい気がする。 そんだけできれば上級者だからってだけかもしれんけど。
今44クラス8インナークラスありますが何か?
903まで行ったら結構クラス作っても大丈夫。 iアプリでJavaもどき使うようになって、 初めてJava使って書いたって気がしたよ('A`)
よほど多機能なアプリじゃない限り、100kあればオブジェクト指向っぽくいけるかな。 30kだときびしい。
しかし au移植などもふまえるとクラスの数がぐっと少なくなる罠
というかむしろ最近はauから移植することが多くなった
さらにau新規の話が来ない
つまり話をまとめると・・・・?
415 :
379 :2007/05/22(火) 00:33:31
みんなアドバイスありがとうございました。 一応JAVA入門だか読んだけどメソッドは2回以上呼び出し がないと作る意味ないと思ってたからどんどん長くなってしまった。
すっ飛んだ思い込みは禁物だぜw 今回は勉強になったろ、これからも頑張れー
>>413 それは公式コンテンツはオープンアプリ不可だから。
一般の人にとってどうでもよさそうなところをねちねち制限しまくるauうざい
浮動小数点計算が含まれてたら実行エラーって・・・ 俺が何したって言うんだ。
浮動小数点演算。
Graphics.drawString()に文字列定数渡して描画してるだけで じゃんじゃんヒープ食うんだけど、これ仕様? エミュレータだけ?
>>420 仕様。
というか何もしないでループまわしてるだけでもヒープ減っていくでしょ。
N903iでは減らない N901iS以前はじゃんじゃん減る
リークしてるって話? それともSystem.gc()で済む話?
後者だけどsystem.gc()自体 端末によって実装が違うからな system.gc()かけても内部では無視される端末とかある
427 :
デフォルトの名無しさん :2007/05/23(水) 11:55:13
カンマ区切りの文字列を配列で取得しようと思っていたのですが iアプリではsplitが使えないことに今気付いてしまいました。 それに代わる関数やセオリー書式のようなものはありますか?
indexOf(),substring()
429 :
427 :2007/05/23(水) 12:08:06
>>428 即レス感謝です。
各要素のバイト数を揃えさえすればそれでいけますね。
ありがとうございました!
430 :
デフォルトの名無しさん :2007/05/24(木) 11:52:24
ところでおまいらDoJaを何て読んでる? ドジャ、ドージャ、ドゥージャ等。
どーじゃ
ディオージェイエイ
じゃばでどーじゃば?
環境:eclipse3.1.1 + Doja5.0 InputStream pinput = Connector.openInputStream("scratchpad:///0;pos=0"); 実行時に上記の部分で java.io.IOException: Illegal position が発生しました。 スクラッチパッドへアクセスできないようなのですが、 何が原因なのでしょうか・・・? 何かしらの設定が必要?
必要
ADFのスクラッチパッドサイズ(SPSize)を設定汁
437 :
434 :2007/05/24(木) 20:08:40
SPSizeに値を入れると「スクラッチパッドの作成に失敗しました。」 となります。 これはプロジェクトの新規作成時に デフォルトコンテンツを指定しなかったことが原因のようなのですが、 なので、直接jamを編集すると、今度は 「SPsize の指定可能サイズは -5341677Byte なので、それ以下の値を設定してください」 となって起動すらできなくなってしまうのです・・・。
Dojaの作るスクラットパッドとeclipseのスクラットパッドは別物だからそれが関係してるんかな。 もしくはspフォルダが書き込み禁止になってるとか。 これくらいしか思いつかん。
スクラットパッド
お前ら、ちゃんと書き込む前に確認するんだぞ。 特に俺とか
コードアシストがないと生きられない身体なのさ・・・
たぶんものすごく初歩的な事なのですが、聞くは一時の恥という事で質問させて下さい。 エミュレータで実行しようとすると、pac内にStartAppが無いと怒られるのですが、 startとの違いは何なのでしょうか? メインのクラスはIApplicationを継承していて、それによって自動でstartメソッドが追加されている状態です。 なのでstartで良いのだと思っていたのですが・・・ 環境はeclipse3.2とDoja5.0です。
>442 まず君は、ネットや本にあるサンプルを、 とばしたりせず手順通りに実行してみるべきだと思うんだ。
eclipseとか使うなってw
Doja5.0のエミュ落としたら会社で使ってるのとデザイン違ってて驚いたw
iαppliTool for DoJaの、コンソールのフォントを、変更できないものでしょうか? ここが等幅フォントでないと、たとえばコンパイルエラーメッセージの「 ^」の 位置が合わなくてあまり愉快でないとか、いろいろあるんですが。
eclipseを使いやすいように設定し、完全に使いこなせるようになるのい数週間は掛かる。 ちょっとした物なら適当なテキストエディタを使って組んだ方が早い。
そして、eclipse使うほどの規模のものになってくると容量詰め込みのために プリプロセッサを使い始め、eclipseを使う理由の70%を失う。
プリプロセス通した後のをEclipseでデバッグというのはやった。
>>447 数週間ってどんだけスペシャリストにするつもりなんだ。
1日あれば最低限の機能は問題なくつかえるようになる。
>1日あれば最低限の機能は問題なくつかえるようになる。 それは正しくインストールと設定ができてて、さぁ使ってください、な状態での話でしょ。 ビルドできない、○○エラーが出る、よくわからないけど動かない、 とか問題の切り分けができない初心者はeclips使うなよ、と思う。 公式のビルドツールだけで最低限アプリは作れるんだから、 まずそれでアプリを作れるようになって、 その上で使いにくさとか感じるようになってからeclipsなりantなり好きに導入しろよと。
それは一理ある
453 :
デフォルトの名無しさん :2007/05/26(土) 14:15:37
public class test extends Canvas { int a[]; public test( Canvas c ) { a = c.getGraphics().getRGBPixels( 0, 0, 240, 320, null, 0 ); } public void paint( Graphics g ) { g.setPixels( 0, 0, 240, 320, a, 0 ); } } DoJaエミュだと、呼び出した(newした)側のコピーで別canvas描けてるんだけど、 実機(SH903i)だとうまくいかない(画が乱れる・・ 回避する方法とか知ってる方いますか?
454 :
453 :2007/05/26(土) 14:34:59
newした側の内容がimageだと起こるようです、 文字列描画だけのcanvasだと実機でもできました
setRGBPixel()かな
456 :
453 :2007/05/26(土) 15:07:47
>>455 setRGBPixelでいけました、
ありがとうございます
>>451 >それは正しくインストールと設定ができてて、さぁ使ってください、な状態での話でしょ。
インストールからやらせてるけど、何の問題もないよ?もちろんアプリ作成初心者にやらせてる。
iアプリ専用ツールで作業するより、
・他のキャリア開発でも同じ環境で作業できる
・eclipseのコード入力支援をうけられる
という利点のほうが大きい、とうちでは判断してる。
実際何の問題もおきてないし、むしろJAVAに対するフォローを入れる機会が減ってる。
あぁもちろん仕事での話だ。個人なら好きなのでいいんじゃない?
今はCLASSPATHを理解しなくてもそんなに困らないからな
DrawStringで文字を描画したときiαppliTool for DoJa-5.0(FORM)と実機(P902iでのみ確認)とでは 文字の位置がずれてるのですが機種によって描画位置がずれるのですか? それともエミュのほうがずれてるのですか? 教えてくださいお願いします。
縦方向にずれるって言うんなら Fontの『アセント』と『ディセント』について調べてみてくれ。 それが機種によって違う。
>>460 回答ありがとうございます。
しかし実機では右上の方にずれるので原因は違うようです。
アセントとディセントについても調べてみます。
462 :
デフォルトの名無しさん :2007/05/28(月) 10:49:55
便乗ズレ質問お願いします。 getWidth()/2とgetHeight()/2でスクリーンの中心(点o)を取った場合についてです。 fillPolygonで点oを中心とした図形(直線や多角形)を使って描いた場合と 画像(imgA)を点oから横方向にimgA.getWidth()/2、縦方向にimgA.getHeight()/2だけマイナスして配置した場合とでは 実機で表示すると中心が縦方向にズレてしまいます。 これを回避する方法はあるんでしょうか? 環境はDoJa3.0で、エミュでは中心がズレることなくきちんと表示されています。
単純にどの機種か分からんけど実機の仕様という気がする。
464 :
462 :2007/05/28(月) 11:14:14
>>463 レスありがとうございます。
試した機種は手元にあるP505iのみです。
検索しても同種の問題はヒットしないので困っていましたが
仕様であれば、何とも仕様がないですね(シャレではなく)。
465 :
デフォルトの名無しさん :2007/05/28(月) 12:13:00
動画なし3gpを再生するのってどーすればいんですか? VisualPresenterPanelクラスを使っていけばいいのでしょうか? 教えてくださいお願いします。
ためせばわかる
>462 単純に、実機とエミュレータでgetHeight()の値が違うだじゃないか? エミュレータのコンフィグファイルで画面サイズを実機と同じにしてやれば 意図通りの位置に表示されるはず。
468 :
467 :2007/05/28(月) 21:53:44
画面の中心に画像を表示したい、ってだけなら x = (getWidth() - imgA.getWidth()) / 2; y = (getHeight() - imgA.getHeight()) / 2; g.drawImage(imgA, x, y); で済む話だけど。
と言うかセンタリングとかさせてないの? 画面サイズがばらばらな実機達なのに座標0.0に描画? 俺の読み間違えかな・・・
>459 文字の座標って、Y軸が文字の底辺なんですよ。 だから0,0だと0,-16に表示されてるように見えてしまうんです。
471 :
462 :2007/05/29(火) 14:05:40
>>467-468 レスありがとうございます!助かりました。
>エミュレータのコンフィグファイルで画面サイズを実機と同じにしてやれば
>意図通りの位置に表示されるはず。
まさにその通りでした!画面サイズの調整できちんと表示されるようになりました。
ただ、
>単純に、実機とエミュレータでgetHeight()の値が違うだけじゃないか?
とすると、例えば、画面の中心でなくとも
g.drawString("A",100,100);
g.drawImage(imgA, 100, 100);
とした場合、もしズレが生じるのであればフォント「A」とimgAは同時にズレるのではないのでしょうか?
今回おかしいなと思ったのは、imgAは本来のx=100,y=100の位置から表示されるのに、
フォント「A」は通常よりも縦方向にだけマイナスの位置から表示されてしまうからです。
もちろんこれも画面サイズを合わせれば解決しましたが、ちょっと腑に落ちないんですよね。
472 :
462 :2007/05/29(火) 14:12:12
と思ったら、文字に関しては
>>470 の
>文字の座標って、Y軸が文字の底辺なんですよ。
で解決かも。
画像は左上から描写されるのに対して、(機種によっては?)文字列は左下から描写されるから
文字だけ縦方向にズレが生じたように見えるんですかね。
でも、fillPolygonで図形を描写する際も縦方向にズレるのはなぜなんだろうか・・・。
>>469 fillPolygonで描写と図形と
同じような図形のGIFイメージとをセンタリングで配置したのに
fillPolygonで描写した図形だけが縦方向にズレるのはなぜ?という質問でした。
473 :
デフォルトの名無しさん :2007/05/30(水) 12:30:24
DoJa4.0以降の3Dアプリ制作を始めたところですが、固定少数でやるべきか、 浮動少数でやるべきか悩んでいます。 901i以降の端末がハードウェアで 浮動少数演算と、またGPU(もどき?)で4x4行列によるベクトルの変換を サポートしているなら浮動少数にしようかと思うのですが、現状、ハードウェアの サポートはどういう感じでしょうか?またそういうスペック的な情報のある サイト等ありましたら教えてください。
ダウンロードしたiアプリを起動してる時って通信料とられてますか?
もう少しアプリよりの話をよろ
がっぽりととられてますよ
と言うか「起動してる時」の条件が不明すぎる。 起動時に通信してるかどうかくらい分かるだろうに。
じゃあ点滅してないからとられてないんだ
479 :
デフォルトの名無しさん :2007/05/30(水) 19:20:33
>>466 さっそく試してみた。
なんかプレイヤーみたいのが出てきて再生は出来ました。
が、
アプリのBGMとして再生したのですが、どうしたらいいでしょうか?
アプリを起動しながら、BGMとして動画なし3gpを再生する方法を
ご存知でしたら教えてください。
無理
>>473 com.nttdocomo.ui.util3d.FastMathというのが存在しますが、
FastMathと比較して何かベターなものはあるか、という質問でしょうか?
482 :
デフォルトの名無しさん :2007/05/31(木) 21:10:23
現在iモードで3Dのプログラムうをしているのですが、 Doja5.0に減算処理はないのですか? 加算はありました。
>>482 よ~し特別に答えちゃうぞ~
『何を』減算するのかくらい書けませんか?
それともエスパーの降臨をお待ち?もしそうだったらごめんなさい。
484 :
デフォルトの名無しさん :2007/05/31(木) 22:33:07
>>483 煙等の表現に3Dオブジェクトの減算合成をしたいのですが、
ブレンドモードにNORMAL・ALPHA・ADDの3種類しか見当りませんでした。
プリミティブのポイントスプライト等で使用できればと思ったのですが…。
と思いつつ調べているとオプションAPIリファレンスに減算合成ができるような事が書いてありました。
こちらでもd4dの表示ができるのかわかりませんが、一回やってみようと思います。
>>484 マスコットカプセルの方かな?それなら無理
API側で無い場合は、対象範囲を白黒反転させて加算合成、もう一度白黒反転で
元に戻すとかやったりするもんなんだが、反転処理も無いから無理だな
OpenGL側ならブレンドモードで反転設定できるから、それ使えって意味なのかもしれんよ
煙なら薄いのから濃いのまでテクスチャ描いて通常アルファブレンドでもいいと思うぞ
>>484 オプションAPIの3DはDoJa3.5以前(MascotCapsule v3)との互換のために残されているものであって
まぜて使ったらだめだよ。
487 :
484 :2007/06/01(金) 01:23:36
>>485 >>486 ありがとうございます。
とりあえず通常アルファブレンドでやってみようと思います。
拡張APIの3Dを同時に使用できるのか少し疑問だったので助かりました。
OpenGLの方も少し資料を探してみようと思います。
Graphics3Dとか、FastMath辺りって糞設計ですな。こんな糞設計はRenderer関係では過去に見たことがないです。 言い出したらきりないけど、いちいちパラメータをfloat->fixedに変換して計算したりとか、んだったら最初っから固定少数でやれって話しだし。 だいたい、12ビット固定少数って三角関数を表すには不十分な精度。三角関数だけ下駄はかせるのか? テクスチャー座標もなんで[0,1.0]に正規化しないの? どんな糞サンプリングアルゴリズムか知らないけどさ、正規化しないならなんのためにテクスチャサイズが2の累乗なんだよ。意味ねーじゃん。マジ使いにくいよこれ。 トレステッドアプリしかOpenGLESを使わせてくれないってのは、これを使えってことで、これを使えってことは死ねってことだよなw
今作っているアクションゲームが重いので相談したところ、 描画に paint を使用するのをやめると、 軽くなるかもというアドバイスを受けたんですが、どの程度効果があるものなのでしょうか
>>491 ですね、もっともです。
が、やるのはいいんですが、もうほとんど完成しちまってるんで、
改造に時間かかりそうなんですよね
それがほんとに効果があるのか疑問だって言う人もいるんで、
処理を見直していって軽くするのとどっちがいいかと
専らlock-描画-unlockループで paint()の中に何か書いたことなんてないや。
いったいどんなソースなら変更に時間がかかるのか(´・ω・`) ・・・・・あんなか('A`)
>>488 俺も個人で作ってるけど、
嘆いててもしょうがないので、その場その場でベストになるようにがんがってる。
TEXTUREが絶対座標ってのが痛いね。これ辞めてくれるだけでだいぶ楽になるんだけど…
まだまだあるぞ。FastMathがかんたんに、しかも何も言わずにオーバーフローするとか、 Textureに指定できるのが256色bmpだけとか
>>492 メインループ内からrepaint()を繰り返し呼び出してるのかな?
getGraphics()したGraphicsオブジェクトを使いまわすほうが速いと思うが、
現状の重さがどの程度かわからないので答えようがない。
>>491 別に今あるのを改造せんでも、確認のためだけなら適当に比較アプリ
つくりゃいいんじゃないの
なんでOpenGLESを勝手アプリで使わせてくれないんだろう? C言語相当のメモリアクセスができるメソッドがあるから?
公式の立場がなくなるからではw
だが、公式CPもメガアプリのみでペイできるような企画など中々立たないので結局使わない。 まったく持ち腐れだ。
そういうところから反撃をはじめてみるというのはどうだろうか
描画処理が重いのであればpaint内に書くよりも getGraphics()で取得したものに描画する方が速度が向上する
Javaもi-appliも初めてなので、右も左も分からないのですが、 ArrayListとかって使えないものなんですか? 可変の配列を使いたいだけなのですが、Nodeを加えるごとに 配列を作り直すとかしたくないのですが、定石とか教えてください。
定石は「使えるか分からない物は使わなくても別の方法で結構実装できる」かな。
それは自前で双方向リストとか作るのが吉ということですか?
>>508 ありがとうございます。
勉強してまいります。
>505
使えないものなんですか?じゃなくてさ、
わかんなかったら「Java 可変長配列」とかググるくらいしようよ。
>>510 が教えてくれてるVectorクラスのこととか、
Javaの説明サイトとか見付かるんだからさ。
ArrayListって1ノード加える毎に配列作り直してるのか? そんな効率悪いことしてる? 普通プールしてると思うけどなぁ
iアプリを作成しはじめたばかりのものです。 上のほうで、paint() メソッドでは何もしなくていいような書き込みがあるのですが、 Windowsアプリでいう WM_PAINT のようなものとは本質的に異なるのでしょうか? 例えば、端末が閉じられたときや、何らかの別画面が表示された後に、失われた部分を 再描画するのにpaintメソッドが呼ばれると思っていたのですが、paintメソッドを無視して いいということは、画面の内容は常に保持されていて、一度描いた内容はアプリ側で画 面を描きかえなければ、消えることはないということでしょうか?
paint() メソッドでは何もしなくていいんじゃなくて何もしてはいけないんだよ
>>513 実際の表示面の内容は保持されないから、再描画する必要はあるよ
またWM_PAINTのようにダーティエリアが設定される事もない
Windowsで言えばメッセージループのアイドルタイミングにあわせて
GetDC - GDIAPI描画する作り方をイメージするのがよいかと
アイドルタイミングで常に画面が更新して、paintでわざわざ描画しないようなもん
516 :
513 :2007/06/04(月) 00:49:25
>>515 画面の更新の必要がないときにでも、定期的に別のところで再描画するということだったんですね。
やっと理解することができました。どうも、ありがとうございました。
Canvasを使用する場合はpublic void paint(){}がないとエラーが出る paint()なんて使いたくないからいらないと思っても 組み込まないとエラーが出るからとりあえず入れとくしかない これはドコモジャバの約束事だからしかたない
そもそもMIDP1.0で既に protected abstract void paint(Graphics g) だし(´・ω・`)
APIリファレンスを活用できるようになって欲しいという親心?('-'*)
521 :
デフォルトの名無しさん :2007/06/04(月) 11:20:37
904iのオプションAPI対応リストってどっかにないですか? 公式行っても903までの対応状況しかないんだけど。
522 :
521追記 :2007/06/04(月) 11:27:07
getAudioTrackPresenter() 使いたいんだけど、904で対応してるキャリア増えてるかなって思って。 手元にはFしかないからわからんのよね・・・
Transform#transVectorが容易にオーバーフローするので、ほとほと困っています。 Vector3D v = new Vector3D(128,0,0); Transform tr = new Transform(); //単位行列 tr.transVector(v,v); System.out.println(v.getX()); こうすると、正負がひっくり返って-128.0を出力します。 推測するに、transVectorは内部のどこかでaxbxcを単精度で計算しているようです。
>>523 TranformってFastMath使ってるよね?
だったら、float値は12ビット固定少数(1:符号, 19:整数部, 12:少数部)に変換されるんじゃない?
それにしても 128.0x4096 = 7+12ビットなので、楽勝なはずだが。
そのとおりなんですが、おそらく、内部で3つのFastMath値の積をFastMath精度で計算しているらしく、 計算途中で整数部7bit x 3 = 21bitの値が現れ、それが原因でオーバーフローになる… と推測したわけです。
>>525 うわw そうかもw
掛け算する場合は、乗数のビット数+被乗数のビット数 <= 32bitでなければならないってことかwダサっw
普通、固定少数の積は 基数のビット幅の倍に拡張して、
return (int32)((int64) a * b >> 小数部ビット数);
とかやるけど、やってないんだw
FastMathとかTransformとかGraphics3Dまわりってどこが書いたの?
何回も言うけどクソ杉。
エイチアイはクソ、それを採用したドコモ等もクソ。
だからこそのFastMath。
iアプリからインターネットランキングに登録したいので パスワードと得点をURLから送信しようと思ったけど、 それだとアプリを解析されて不正登録ができてしまうと思った。 そこまでして不正登録をする人はいないと思うけど 不正登録のできない得点の送信方法があったら教えてもらえますか?
しかしJavaからならFastMathよりfloatで直接計算するほうが速度出る罠(実機確認済)
>>529 アプリ自体が解析されるのを懸念するのであれば、何をしても無駄では?
とりあえずそこは置いておいて、アプリからHTTP(?)で送信するデータの
加工等を考えてみたらどうかな。
短めのデータであれば、自分なら復号可能でチェックサム付きの簡単な
暗号化機能を作ると思う。
というか興味あるので識者の意見求む。
アプリがPCからダウンロードされるのを防ぐ方法が前に出てたと思う それを探せば解析される心配はなくなる、たぶん
>>529 アプリの解析についてはiモード網内からだけダウンロードを許可にすれば良い。
>>531 にある通り、データの加工は必要に応じて自分で検討すれば良し。
通信内容はPOSTでやり取りするべし。
GETだとiモード履歴情報サービスを使われると、通信内容が分かってしまう。
欲を言えばHTTPSだが、そこまで必要ないでしょ。
ちょっと漠然とした質問で申し訳ないんですけど、 iアプリからWebサービスを呼び出して利用する事って可能なんでしょうか? ちょっと試してみようかなと思ったんですが、Dojaの資料を読んでも どこにも載っていなかったので。。
>>534 アプリをダウンロードしたドメイン以外とは通信できなかった気がするので、
アプリのダウンロード元にプロキシCGIを置いておいて、
アプリはそこ経由で通信すると良いんじゃなかったっけっか。
識者フォロー頼む。
536 :
529 :2007/06/05(火) 17:55:10
>>531-533 レスありがとうございました。
PCからのダウンロードを禁止する方法を調べてみます。
Eclipse(+プラグイン)使って開発してるんだけど、プロジェクトをsubversionで 管理してると、Eclipseからエミュレータ起動したときに、res/ 内の.svn/ まで 突っ込んだjarを作ってくれやがる。 除外設定を色々してみるも変わらず。 どなたか対処法ご存じありません?
538 :
デフォルトの名無しさん :2007/06/05(火) 21:54:26
AudioTrackPresenterで、オーディオトラックのみで 構成された3gpを再生させようとしているのですが、 エミュレータで動作確認したところ、再生しようとした音源とは 異なる音が再生されています。 これはエミュレータだから、音がおかしくなっているんでしょうか? 自分の携帯が902なので実機では確認できないのですが、 何かご存知でしたら教えてください。
ソフトキーのラベルって、初期は全角2文字(半角4文字)までが基本だったと思うんですけど、最近のは全角で3文字とか4文字とか入るみたいですね。 そこで、どの機種で何文字まで入れられるか知りたいんですが、どこかまとめてあるサイトなどありませんか? 最悪、どのシリーズ以降は何文字が保証されてるなどの情報でもいいのですが。 どなたか知っていたら教えて下さい。
DoJa3.5の機種で3文字だっけ?
PanelのアプリでPopupメニューってできるものです?
はい
数年ぶりに携帯を変えたので、
初めてのiアプリに挑戦しています。
http://janis.or.jp/users/segabito/f904/ プログラム自体はあらゆる解像度に対応しているため、
F904iの画面を横にすれば快適にプレイできるだろう、と期待していたのですが、
実機で動かしてみると、縦でも横でも240x240の枠の中でしか動きません。
ワイド画面をフルに使うには、特別なAPIが必要なのでしょうか。
>>543 たしか240x240以上はjamのDrawAreaに直接サイズを指定する必要があったはず。
>>545-546 DrawAreaを変更したら一発でうまくいきました。
ありがとうございます。これで快適になりました。
適当に移植してから軽量化を考えようと思っていたのですが
そのままでも十分な速度で動いてしまったので驚いています。
パソコンでJAVAやってたんなら画像処理速度は携帯のほうが上でしょうな 画面小さいし常駐ソフトも少ないから当然といえば当然ですが
エミュはJava上でJ2ME用インタープリタが走っていていて遅いとかなんとか
なるほど。
基本的すぎて申し訳ないのだが、iアプリから携帯電話ネイティブの画像ファイルを削除する方法はないよね? addEntryした画像を削除出来ないのはキツイです ...
アプリからネイティブデータ消し放題ってそれ何てマルウェアやねん。 標準機能のカメラにしてもwebブラウザにしても、撮影した画像や ダウンロードした画像の保存はするけど、削除するのはデータフォルダ 機能からであって、それぞれのアプリケーションではないよね。
>addEntryした画像を削除出来ないのはキツイです これ何で? わざわざユーザがaddEntryしといて削除するかどうかはユーザが決めることじゃないか たしかに端末によっちゃ手間がずいぶんかかるやつもあるけどさ あれか。最近流行りのデータフォルダに偽装してデータを置くとかいう
でもあれ一部の端末で無理になったんじゃなかったっけ
556 :
デフォルトの名無しさん :2007/06/08(金) 23:44:53
FastMathとTransformがあまりにクソ仕様で,クソ精度で,クソ遅いので、 すべてのメソッドを自作したら50倍くらい速くなった。エミュ上だけど。 でもGraphics3dのラスタライザ自体がクソなのね。 OpenGL ESを一般公開するか、俺にGraphics3dも書き直させてほしい。
エミュ上かよ……。
質問があります。 C言語には、void *といったなんでも入る型がありますが、 javaいもこのようななんでも入れられる型はあるのでしょうか?
javaいも って美味しそう voidはある
561 :
558 :2007/06/09(土) 01:50:00
>>560 こんな便利な型が有ったとは知りませんでした。
有り難うございます。
次はメソッドが無くなっちゃったとか言って来そ。
ドコモのF901isなんですが無料で遊べるチェスのアプリはないでしょうか?
板違い
またまたGraphics3dだけど、これzソートかよw 16bit深度バッファで112kb位けちるなよ。 おまけに1モデルあたりのサーフェース数が最大255面って正気?w Primitiveクラス内部で、int[] vertexBuffer = new int[255*3*3]とかハードコードされてんだw 想定外にボロイんで、俺のバグだと思って悩んじゃったじゃないか。 あと、頂点座標が12bit固定少数扱いされてない気がするんだけど気のせい? マジで萎えるなこれ。
GIFがPNGに比べて容量が大きくなってしまうんですが、 どうにかできないでしょうか。だいたい1、2KBくらいでかくなってしまいます。
スレ違いな気がするけど どうしようもない
Jar圧縮しておくと若干縮む場合もあるけど、期待するほどじゃない。
>>566 1~2kbが気になって仕方のないサイズであるなら、色数を減らす等の対処をすればいい。
それが嫌ならプログラムを削減すればいい。
それも無理ならどうしようもない。
>>567 iアプリ開発の話だろ。たぶん。
画像の色数が多いならJPEGにすれば? 透過できない点に注意が要るけど
572 :
566 :2007/06/09(土) 17:03:54
みなさんありがとうございます。 確かによく考えたらスレ違いでした。すいません。 減色とか劣化は試してるんですが、満足行く結果は出ないです。汚いのにPNGと容量一緒とか。 減色ソフトを買ってみます。
>>565 頂点バッファサイズというより、インデックスバッファがバイト型で
なおかつ固定番号の処理してるんじゃない?
>>569 俺としては現状の問題点を洗い出すという点で悪くないと思ってる
空気嫁てない
たぶん君が空気だと思ってるのは君だけだ
>>俺としては現状の問題点を洗い出すという点で悪くないと思ってる 御意。 自分が使ってないからって「空気よめてない」とか自己中なことよく言えるよな。 そもそもおまえの空気なんかしらねーよw 興味ないならスルーすりゃいいだろ? ひょっとして糞クラスライブラリ制作会社関係者? 128.0fでオーバーフローするっていう情報だって、知らなけりゃハマリバグになってたかも。 Graphics3d, FastMath, Transformは糞クラスなので、糞っぷり情報は貴重。
>>565 > またまたGraphics3dだけど、これzソートかよw
> 16bit深度バッファで112kb位けちるなよ。
ソフトウェアレンダリングだと大抵Zソートじゃない? 最近だとFlashのPapervision3Dもそうだし。
ZバッファはピクセルごとにCPUが一番嫌がる分岐が必要になるっしょ。
まあ3Dの実装がカスなのには同意するとして、エイチアイに退場願いたければ
ATIやNVIDIAがとっととケータイに食い込んでくれるのを祈るのが一番だろうな。
煽り口調を何とかして欲しいと思う。 情報は有難いんだが…
もし同じ症状になった人がいれば教えてほしいんですが。。。 Iapplicationの派生とCanvasClass派生とは別にClassを作成して、 そのClassが突然作成不能になっちゃったんです。 解説すると長くなりそうなので簡潔に。 ・アプリは起動する ・そのclassのインスタンスを作成したり、staticフィールドにアクセスしようとした瞬間アプリが落ちる ・Throwableで囲んでもキャッチに飛ばない ・ただし落ちるのは900のみ ・もしかしたら900isも落ちるかもしれないけど実機がなくて試してない ・901は大丈夫 ・メモリエラーかとも思ったが、同じメモリの機種でも900じゃなければ大丈夫 Javaってエラーキャッチできないこともあるんですね。。。
背面カリング無い方が萎える。
>>580 VMが落ちたらcatchできない
JavaでもPHPでもPerlでも同じ
>>580 その別のクラスってなに?
そのクラスのコードは、その携帯電話の中に本当に存在してるの?
症状からNoClassDefFoundErrorな気がするんだけど。
>>580 >>583 の指摘を具体的に言うと、900はCLDC1.0、901以降はCLDC1.1で違うってこと。
その独自クラス、例えば浮動小数点使ってたりしないか?
DoJa-3.5用(900用)のエミュレータで動かしてみると原因がわかるかもしれない。
585 :
デフォルトの名無しさん :2007/06/10(日) 13:30:50
すいません。 誰か教えてください。 DoJa-3.5用(900用)のエミュレータを使ってHelloWorldを出すという、初歩の初歩でつまずいてるのですが、ビルドを実行すると javac:ターゲットリリース1.1がデフォルトのソースリリース1.5と競合しています。 とでて、ビルドが失敗してしまいます。 どうすればよいのでしょうか? Javaスレの神様どうかお教えください。お願いします。
>>580 さん
>>583 さん
本当にありがとうございます。。。
動きました。
原因は浮動小数点でした。。。
Dojaのターゲットプロファイルを3.5まで下げてコンパイルして
何もでなかったので安心してました。。。
そういえば小数点使えるじゃんとか昔に調子乗って作って、
途中から900対応にしたので忘れてました。。。
出直してきます。。。
ありがとうございました!!!!!!!
…そして、レス番号も間違えてしまいました。
>>583 さん
>>584 さん
でした。
ご無礼お許しください。
589 :
552 :2007/06/11(月) 11:46:46
>553 >554 業務アプリで、1日辺り数十枚の写真を取り貯めしてセンタへ一括送信するってのを作った。 その際、スクラッチパッドはデータが一杯なのでネイティブ領域に撮った写真を保存してた。 携帯電話の機種によっては、iアプリで撮った写真は専用のフォルダに入れるくらいだから、 iアプリが自分で保存したエントリィぐらい削除できても良いのに、ってチラ裏ですまん ... やっぱ、普通に考えても削除はまずいよな ...
graphics3dなんだけど、こうやって↓ビットORして使う定数なのに, Primitive.NORMAL_PER_FACE | Primitive.TEXTURE_COORD_PER_VERTEX 排他的に使う以下の定数が、 NORMAL_PER_FACE = 3 NORMAL_PER_VERTEX = 2 と、3, 2で定義されているってどういうつもり? 普通、2^n数列だろうが。 両方同時に指定された場合を考えてるのか?ならその場合、throwすべきだろ。
ヒント:ビット節約
つまりNORMAL_PER_FACEのときはビット1が必須だってことだろ
NORMAL_PER_FACE と NORMAL_PER_VERTEX は同時に指定しないだろ・・
排他的だから 2と3なんだろ。 2と4だったら、排他的な関係とはいえないだろ。
愚痴ばっかり書くから…
携帯ではArrayListって使えないんですか? どうやっても上手くいかないのはなぜなんだろう? 絶対出来ないのなら、リンクリストみたいなのを自分で作ろうと思うのですが……。 明日までに仕上げたいものなので、出来れば早めのレスをよろしくお願いします。
>>596 少なくともCLDC1.0には無いみたいね。
APIリファレンスぐらい見ようよ。
Vectorならあるけど駄目?
Vectorがありましたね……すいません。 もうちょっと調べればよかったです。 ご迷惑をおかけしました。
599 :
デフォルトの名無しさん :2007/06/13(水) 23:23:16
>>594 よく読め。
>>両方同時に指定された場合を考えてるのか?ならその場合、throwすべきだろ。
だからさ、そのNORMAL_PER_FACE とNORMAL_PER_VERTEXをユーザー側で利用する場合を考えてみ。
そのPrimitiveが 面毎法線なのか、頂点毎法線なのか調べるのに、
flags & NORMAL_PER_FACE ってやるだろ普通だったら。
なぜなら、ビットORして使用するような定数列の場合、2^nで定義するって<常識>だから。
その定数が幾つで定義されているかなんか知る必要がないの普通は。
600 :
デフォルトの名無しさん :2007/06/13(水) 23:25:55
ところが、このクソライブラリの場合、 まず、System.out.println()で、NORMAL_PER_FACEとNORMAL_PER_VERTEXの値が それぞれ幾つなのか調べる。2^n列で無いことを発見。 ((flag & (NORMAL_PER_FACE | NORMAL_PER_VERTEX) ) == NORMAL_PER_FACE ) で、やっと動作。
601 :
デフォルトの名無しさん :2007/06/13(水) 23:31:35
しかもなにこのラスタライザ。クソ遅いし。 おれのBREW2.1対応のポリゴンラスタライザ(任意矩形クリッピング+テクスチャマッピング+ パースペクティブコレクション+Gouraudシェーディング+カラーモジュレーション) の5倍以上遅い。俺のはサンプラーとスキャンライン周りはアセンブリで書いているものの、 graphics3dもラスタライザ自体はネイティブだろうから、BREWとさほど変わらないはず。
>>599 内部動作とリンクしてるフラグ指定なら常識ともかぎらんよ
たとえば下位ビットは法線があるかどうか、上位ビットは面毎か頂点毎か
という意味で処理してんなら2と3が指定されてるのは自然だ
そして法線が無い場合は0というのも納得がいく
まあカラー指定のビットの方はそうはなってないんだけどな・・
603 :
デフォルトの名無しさん :2007/06/13(水) 23:42:50
>>602 いや、いいほうに解釈しすぎ。
だから、ユーザーからするとそれぞれの値は基本的に見えないんだよ?
ノーマルがあるかどうかを調べたいならそれこそ(flags & (PER_VERTEX| PER_FACE))
って"やるべき"。こんなの基本中の基本だって。社内ライブラリならどうぞご勝手にって感じだけどね。
604 :
デフォルトの名無しさん :2007/06/14(木) 00:01:53
graphics3dではテクスチャサイズが正方2^n指定なのに、なんでテクスチャサイズの値域 (サイズが128x128だったら、[0,...,127])でUV指定するんでしょうか?許せません。 ちなみにおれのラスタライザはOpenGL|ESと同じ1:15:16の固定少数フォーマットだけど、 テクスチャ座標はちゃんと、[0.0,...,1.0]([0,...,0x10000])に正規化してます。 テクスチャサイズを2^nに決めているので、パフォーマンスのペナルティないんで。 あと、テクスチャーサンプラーでは乗除算を一切使ってません。
>>603 APIリファレンスに値書いてあるとおもうけど。
わざわざprintlnしたの?w
606 :
デフォルトの名無しさん :2007/06/14(木) 00:12:53
>>581 凸包モデルしかテストしてなかったので、バックフェイス刈らないって気付かなかったw
マジで? どういうつもり? 渡された頂点列を、World->View変換後に外積計算して
外積のz成分の符号を見るか、もしくはWorld変換後、視線ベクトルとの内積の符号を見れば
裏か表か判るんですが。。。やり方判ったら、そんぐらいやってもらえませんか?
だめだこりゃ。。。orz
docomoさま、OpenGL|ESを一般公開してください。
607 :
デフォルトの名無しさん :2007/06/14(木) 00:13:43
608 :
デフォルトの名無しさん :2007/06/14(木) 00:23:24
具体的には、頂点座標v1, v2, v3の順に渡されたとし、 World->View変換後の頂点座標をv''1, v''2, v''3とすると、 O = (v''2-v''1)X(v''3-v''1) Sign( O.z )が視点に対する面の向き。 また、World変換後の頂点座標をv'1, v'2, v'3とし、視線ベクトルを sとすると、Sign( (v'2-v'1)X(v'3-v'1)・s )が視点に対する面の向き。 X: 外積,・:内積 graphics3dにバックフェイスカリング入れてください(CULL_NONE, CULL_COUNTERCLOCKWISE, CULL_CLOCKWISEでフラグ指定)。 バックフェイスカリングはリアルタイムレンダリング界の常識です。
というかBREW版のMCV4はわりとまともに機能がそろってるので DoJa版インターフェースを作ったヤツがタコだったんだろうな
>>609 BREW版 MascotCapsul v4の場合、下位層がOpenGLだからまともなだけ。
てか、OpenGLつかえるなら、MascotCapsulなんかそもそもいらん。
じゃまなだけ。
ちなみにOpenGL使えるauの端末は、ハードウェアラスタライザー搭載機のみ。 型番でいうと、43とか以降かな。
作ったやつ(ら?)は、外積とか携帯では計算が重すぎるから・・とか思ってそうだなw
テクスチャーマップドポリゴン描画処理 >>>> 越えられない壁 >>>> ベクトル外積計算1回
ユーザーが意識する必要のない定数の値に なんでイチャモンつけてるんだ? で、5倍以上遅いっていうのは同じ端末での比較?
>>614 >なんでイチャモンつけてるんだ?
その定数がクラスライブラリ内部で使用されるだけという思い込み、もしくは希望を抱いているとそういう疑問を持つんでしょうな。
公に公開されるクラスライブラリを設計する会社が、もしそのような思考力・設計力しかないのならDoJaの一クラスなどという、
そんな大きな仕事を請ける資格はないです。公のクラスライブラリ設計者は、クラスライブラリを使用する
ユーザーの使用法,心理や思考の一歩先を読んで設計するもんです。良いクラスライブラリはユーザーを逆に啓蒙する力があります。
このクラスライブラリは失格です。技術的正当性はどこにもありません。
末端アプリ制作しているだけなら誰も文句いいませんけどね。はっきりいって迷惑です。
てか 定数のビット構成に縛られるようなプログラミングしたらだめだろ・・ こういう事いうプログラマは 端末ごとに変わる実装にもぶちぶち言ってるんだろう
ちんちんとまんまんは仲良くしないといけないんたよ
うぜぇ
>>616 フラグが立ってるかどうかの判定がややこしくなってるみたいですが・・・
>>615 師匠!
今度からはコテハンでお願いします!
【eclipse 3.2 + DoJa 5.0】 エクリプスで開発されていらっしゃる方々へ。 最新のエクリプスだと、どうやらi-appliのエミュレーター(DoJa 5.0) が作動しないみたいですが、この問題を解決できた方、いらっしゃいましたら ご教示ねがえませんでしょうか。 エクリプスを3.1にしようかなと思ってeclipse.org捜してみたのですが、 既に削除済みでした^^; どうかよろしくおねがいします。
graphics3dは欠点を挙げていくとキリが無いよ。 素人が作ったライブラリとしか思えない。
>>621 3.2系列でどうなのかってのは自分も知りたいけど
3.1系列もは普通に公式サイトにある。1.0すらあるよ。
>>621 自分は探してないけどSourceForgeかどっかに無い?
>>623 いえ、all versionsって所をクリックしても出てこないし。
"3.1"で検索かけるてもno resultでしたorz
eclipse3.2+Doja5.0で何の問題もなく動いております。よ?
>>626 どうもありがとう!そのページのここをクリックしたらありました!
>For access to archived builds, look here
>>627 へ?え?・・・・^^;
JAVA_HOMEの設定もした上ででしょうか?
>>628 動作しないっていうのは、eclipseから実行やデバックしようとすると、
jarが作れないよーって感じのエラーメッセージが英語で出てくるやつ?
これのことだったら3.1にしても同じだったような記憶が・・・
とりあえずJDKのbinフォルダにパスを通すと上の現象はなくなる。
>>629 おお!
ありがとう。
エクリプスインスコして、i-modeのエミュ解凍してってんじゃだめ
なんだなw
DoCoMo、もうすこし丁寧にインストールマニュアル書けよ。
JAVA_HOMEではなくて、PATHの問題だったんだ。
いや、失礼しました。でも、みなさん、ありがとう!!!
>>630 いや、それ、ふつーに書いたあった気がするけど。
無理を承知で聞くが class Dのコンストラクタで落ちる。ので なぜ落ちるのかを予想してくれ。 class A{ public A(){ container = new Vector(); } } class B extends A{ public B(){ super(); container.add(obj); } } class C extends B{ public C(){ super(); for(int i=0; i<10; i++){ setElementAt(obj); } } } class D extends C{ public D(){ try{ super(); }catch(Exception e){ e.printStackTrace();//表示されない } } } 関係あるか分からんけどJavaBlenderで下のエラーがでる。 コード検証に失敗しました。(Phase=2)
633 :
632 :2007/06/15(金) 14:19:25
ちなみにエミュレーターだと正常に動作するけど 実機で落ちる
>>634 アーカイブに含まれている
DoJa-2007_1st_Emulator_DevGuide3.00.pdf
のp.287に書いてあるような内容でなくて?
ちゃんと読もうよ。
>>632 ExceptionだけじゃなくてErorrもcatchしてみてはどうか。
637 :
632 :2007/06/15(金) 15:11:55
>>636 こうか?
try{
try{
super();
}catch(Exception e){
e.printStackTrace();//表示されない
}
}catch(Error er){
er.printStackTrace();//表示されない
}
やってみたけどやはり何もでない。
docomoはテストにパケット代がかかるからいやなんだよなぁ。
>>635 いや、できました!ありがとう!!!
eclipseのフォルダーの指定のところで、eclipseの一つ上の
(同じディレクトリで解凍させた時にできる)フォルダーを
選んでいたのがダメでした。
そのPDF、今見ましたけど、PATHの設定のところの日本語
おかしいですね。i-appliは自動でjdkのbinを検出しています。
なんて書いてあって、でもPATHはbinまで張れとも書いてあるし。
>>638 Eclipse 環境では自動認識しないってことなんじゃないかと。
>>639
なるほど・・・・
こういうインストールが問題なく、ひとつづつちゃんと行えるっていうのは
大切な技能ですよね。力不足を実感しました。orz
あと、インストールの説明書の書き方も難しい。実に・・・・
>>639 さんはベテランのプログラマーですね。私、これから当分の間は
Java MEを専門にして喰っていこうと思うのですが、アドバイスあったら
ください!
P903iなどのBluetooth機能搭載機での話ですが、 Bluetooth機能を持ったPCなどとSPPを用いて シリアル通信するiアプリを製作することは出来るのでしょうか? API見てたらトラステッドがどうのこうのとかあったんで出来ないんですかね? Bluetooth携帯持ってないので試せないんです。 誰か知ってたら教えてください。
642 :
デフォルトの名無しさん :2007/06/15(金) 16:18:47
>>641 DoJa 5.0では、どうやらBTのAPIって標準装備でOPTION
じゃないでしょ?
通信については、プロトコルの問題であるから、十分可能なはず。
>>632 new D();をtry~catchしてみた?
コンストラクタじゃないとするとクラスのロードが怪しい
static変数の初期化に失敗してるとか、preverifyが実行されてないとか
645 :
デフォルトの名無しさん :2007/06/15(金) 16:55:31
>>644 やるのはいいけど、MIDPと違って参考文献が無きに等しいでしょ?
DoCoMoの開発ガイドにもサンプル無いし。
MIDPの情報だったら、教えてあげられるけどね・・・・
で、実際どうやるの?かなり大変だと思うよ。
>>643 親クラスのコンストラクタにprintlnを入れてみたけど表示されないから
コンストラクタに入る前に落ちているようだ。
>クラスのロードが怪しい
>static変数の初期化に失敗してる
雰囲気として上のが怪しいようなので調べてみるよ。
ありがとう。
APIリファレンスあればどうとでもなるでそ?(・ω・)
>>646 まさか
apptrafe=onしてないなんてことはないよな
ちょちょっと! ゲームチャンネルが新規受付停止するって書いてあるんだけど! 個人アプリ発表の場がどんどん少なくなっていく~~~;;
俺様勝手サイト作ればいいじゃん。
しかし一ヶ月以上もアクセス不可って…。 ほんとにリニューアルする気あるんだろうかorz
別にアプリゲットでいいじゃん、なんか不都合あるの?
あるよ
657 :
632 :2007/06/18(月) 23:43:48
>>632 の問題が解決したので報告します。
実機はSO506iでエミュレータはDoja5.0でビルドしてました。
Doja3.0のエミュレータを落としてビルドすると
java.lang.NoClassDefFoundError にアクセスできません。
ファイル java\lang\NoClassDefFoundError.class が見つかりません。
とエラーが。
if( Class.class != o.getClass() )return false;
上のコードが問題だったみたいです。
該当行を消すと正常に動きました。
有償提供?
660 :
デフォルトの名無しさん :2007/06/19(火) 23:09:20
iアプリでペイントのようにドットに絵を描いてそれのプレビューを エンコードしてケータイに保存するアプリを作っています。 エンコードの部分は ImageEncoderクラスを使っています。 GIFで保存したかったのですが、 ImageEncoder w_ie = ImageEncoder.getEncoder("GIF"); とやると実機ではエラーになってしまい、うまくいきません。 もし他にGIFエンコード、GIF出力をするやり方やヒントなど知っている方がいたら教えてください。
ImageEncoderの対応形式で保障されているのはJPEGのみ。GIFなら自前でやることになる。 幸いググれば日本語の資料が出てくる。
○○ソフトって、某大手キャリアには保有株式の含み損を負わせ、3rdパーティには クソAPIで大迷惑をかけ、社長は社長で、株価吊り天井だった上場早々のクソ株 掴まされた株主に、うんこ株を投げ売りして顰蹙買うわで、どんだけ周囲に迷惑をかけて 生きていくんだろうね。 クソAPIにクソ株のクソ会社。こんな会社は無い方が世の中のためになる。
どこか知らんが、さすがにそれはスレ違い
664 :
デフォルトの名無しさん :2007/06/20(水) 16:05:38
doja5.0にてアプリからURL指定でブラウザを立ち上げると HTMLソース丸見えのjavaのブラウザがでます。 IEを立ち上げることはできないのでしょうか?
iアプリはVGAの機種でも画面240×240とかしか使えないのでしょうか?
>>664 javaのブラウザが出るとか、IEを立ち上げるとか、何言ってるか理解できないけど
Jarそのものではなくbinディレクトリの自動的に生成されたindex.htmlにアクセスする。
>>665 そんなわけない。ADF(JAM)で画面サイズを明示的に指定する。
NのナビVGAつかっとろーが
チャットアプリを作っていて画像を送信できるようにしようと思っているのですが 画像とテキストをいっしょにサーバーへ送信することは出来ないでしょうか? 画像を送ってから、次にテキストを送るのではなくて同時に送信したいです。
>>668 まとめて送ればいいんじゃねーの?
iアプリがどうこうって話じゃないな
画面にデータを描画する場合一般的にどちらが高速なんでしょうか? 1.画像からint型の配列作ってsetPixels() 2.画像をdrawImage()で描画 自分で両方書いてみたのですが、エミュレータ(Doja4.1)だとsetPixels()が激遅なのですが、 携帯だと割とまともに動いていたりして混乱しています。 それと、透過処理をする場合、 1.setColor()で透過色を設定してfillRect() 2.int型の配列作って自前で加算合成してsetPixels() だとどちらが高速でしょうか? 自分でやってみた限り同じ面積を処理する場合では、 2の方が速そうだと思ったのですが、皆さんはどう思われますか? ちなみに自分はSH902iで動かしているのですが、 機種毎に上記処理の速さが逆転したりもするんでしょうか?
671 :
デフォルトの名無しさん :2007/06/24(日) 00:08:55
>>670 setPixels()が速いというのは意外だな
計測用アプリをどこかに上げてくれれば協力するぜ
当方D902iユーザー
>>671 だからまとめて送ればいいだけだろ。
個別に送るのが嫌だってことは送信自体はできるんだろ?
あとは送るデータの問題であってiアプリとは関係ない話。
>>668 もし理解できないなら、そもそも画像ってどんなデータなのかテキストってどんなデータなのかから
勉強してくださいな。
もっと違う視点の質問じゃねーの? 画像とテキストを、せーので同時に送信できないかっていう。 当然サーバや受信側の仕組みが頭に無いからこういう発想の質問が出ちゃうというオチ。
675 :
670 :2007/06/24(日) 20:08:59
>>672 すみませんが計測用アプリという形ではコードを書いていないのです。
自分で作ってるゲームの中でどちらが速いかと書いてみただけなので…。
ただあれから色々考えてみてsetPixels()が速いという訳でも
ないのかなと思うようにもなってきました。
如何せん自作ゲームの中で描画モードを変えて試しただけなので
決め付けるには早計だったかなと。
>>673 「送信自体は出来るんだろ?」って、だから、ソレを聞いてるんじゃねーのかって言ってんだよ馬鹿。
頭悪い上に日本語もよく分かってねー野郎がいちいちチャチャ入れにしゃしゃり出てくんじゃねーよ。
すっこんでろ。
つーか、そんな基本的なことでもめるくらいならマニュアル嫁。 もっと根本的な問題があるだろうに。
うだうだ長くレス伸ばすのうざいから、やり方教えて終わりにしようぜ。 今回のやり方はヘッダーに、画像とテキストのデータサイズを それぞれ4バイトで保存して、データを一つにまとめるやり方。 画像がbute[] ibuf、テキストが String text に入っていると仮定しよう。 その場合 ---------------------------------------------------------------------------------- int ilen = ibuf.length; int tlen = text.getBytes().length; byte[] buf = new byte[ilen + tlen + 8]; // 送信するバッファ // 画像のサイズを入れる buf[0] = (ilen >> 24) & 0xff; buf[1] = (ilen >> 16) & 0xff; buf[2] = (ilen >> 8) & 0xff; buf[3] = (ilen ) & 0xff; // テキストのサイズを入れる buf[4] = (tlen >> 24) & 0xff; buf[5] = (tlen >> 16) & 0xff; buf[6] = (tlen >> 8) & 0xff; buf[7] = (tlen ) & 0xff; System.arraycopy(ibuf, 0, buf, 8, ilen); // 画像のバッファをコピー System.arraycopy(tbuf, 0, buf, 8 + ilen, ilen); // テキストのバッファをコピー ---------------------------------------------------------------------------------- 後は、bufを送信し、受信側で画像とテキストに分解して使用する。 なお、コンパイルしてないので、タイプミスとかあるかも。
ミスった。 × System.arraycopy(tbuf, 0, buf, 8 + ilen, ilen); // テキストのバッファをコピー ○ System.arraycopy(tbuf, 0, buf, 8 + ilen, tlen); // テキストのバッファをコピー
>>670 今作ってるアプリで透過を試してみたよ(200x100くらいの矩形)
素朴に各ピクセルのアルファブレンドでは実機(F902i)で10f/sしか出なかった。orz
まあ、当たり前か。
半透明色ってどうやって使うんですかああ?
オバQ
>>680 それは、アルファテーブルを使用した場合?
それとも普通に計算した場合?
誰かギガアプリで作品提供してる人いる? ダウンロード数を見ると、俺のような素人が作った作品なのに 多い日は1日200件以上、1ヶ月トータルで1500以上ダウンロード されてるんだよね。 あの作者用のダウンロード数は正しいのかな?? ちょっと不安になって聞いてみました。
サイト側で、ギガアプリ用URLだけ別にして、カウンタを付けたりアクセスログを確認すればいい。
FOMAカード入ってないとアプリ起動できないんですか? プリインストールのものは起動できるんですが、仕様でしょうか?
仕様だな。 落とした時に使ったFOMAカードじゃないと 起動できなかったと思った。
688 :
686 :2007/06/29(金) 11:19:29
>>687 ありがとうございます。
んー、いちいちカード差し替えるのは嫌だなー。
有料のアプリのことを考えたらそうせざるをえない
半透明色ってどうやって使うんですかああ?
691 :
デフォルトの名無しさん :2007/07/01(日) 06:11:28
http://www.yodobashi.com/enjoy/more/kichijoji/index.html ヨドバシ 吉祥寺 オープンセール 13%ポイント還元
ソフトバンク携帯 大安売り 9800円のみ
しかも 13%ポイント還元 1274ポイント還元 バック
おまけに 980円ホワイトプラン 基本料金 24ヶ月無料
23520円分無料 以下ついてくる
ホワイトプラン 1日 20時間 ソフトバンク同士無料通話
ホワイト家族で 家族間 24時間無料通話
つまり はじめに 9800円 払うが 基本料金980円が2年間無料なので
携帯電話機本体 ただ 14ヶ月間+ポイントバック1274円分バックで 15か月分
無料でホワイトプラン内で通話は 電話代がただになる。
つまり 15000円ほど 無料となる。 行くしかない。
しかも家族内通話も24時間無料。台数限定なので 売り切れ必死
他のヨドバシで やっていない 吉祥寺のみ限定
台数限定なので 無くなるのは早い
>>691 オープン6/29やん。
もう無くなってるな、残念。
iアプリのスレでチョソバンクの携帯を薦めるってバカですか?信者ですか?
漏れはタダでもバンクのは欲しくない
はげどう!
個人の力では携帯専用サイトの情報をパソコンに送るのって不可能なのかな? 丸2日悩んだんだけど、できなかった。 ダウンロード元しか接続できないって、なんだよこれ orz Flashみたいに、許可与えれないのかな。
697 :
デフォルトの名無しさん :2007/07/01(日) 22:21:01
酔っ払った俺には
>>696 の言ってる事が理解できなくて
なんかムカツク。
698 :
696 :2007/07/01(日) 22:22:11
と思ったら、プロキシCGIを用意すればいけるかもって上に書いてあるね。 やってみる。これでいければ俺の休日も無駄にならないんだがなぁ。
699 :
696 :2007/07/01(日) 22:24:11
>>697 すんまそん。ようするに
UserAgentとかの偽装では表示されない携帯専用サイトのhtmlソースを
パソコンで取得したいわけ。
NULLGWDOCOMOを突破しようと?
701 :
696 :2007/07/01(日) 22:39:00
公式サイトをパソコンで見れたら大問題になる
703 :
696 :2007/07/01(日) 22:46:56
>>iアプリDXが作成できれば、余裕でできるんだけどなぁ。 まぁ、公式サイトとはいかないまでも、 NULLGWDOCOMOを採用してない所ぐらいは見れそうだけどねぇ。
704 :
696 :2007/07/01(日) 22:59:46
連投ですまん。 多分できないとは思うのだが、夢は持たせてくれよ。 なんかできそうな気がするから質問してみただけなんだわ。
まー、不正アクセス禁止法で捕まらん程度に頑張れや('A`)ノ つーか、iアプリ関係無いやん。
706 :
696 :2007/07/01(日) 23:51:49
うはwww >>つーか、iアプリ関係無いやん。 ほんとだ、まぁ、iアプリがダウンロード元ドメインにしかつながらんぞ!問題から 発展したってことで。んでは、おやすみ。
普通は携帯からしか繋がらないように設定してるから、Webサーバの脆弱性をついたりしないかぎり無理だろ。
携帯かどうかをIPのみで判断してるところなら大方入れるな。
>>709 前提:相手がIP、UAのみでアクセス規制していて、ホストによる規制をしてない。(バーチャルホスト等含む)
相手のIPが調べられる。
1.自鯖を用意する。サブドメインでいいので自由にIP変えられれるようにしとく。
2.ネット(当然自ホスト)に繋いで任意のデータを取得するiアプリを作る。取得したデータはminiSDなりSP入れといて後でCGIにPOSTなりで外部に出せるようにしとく。
3.携帯に作ったiアプリをDL。
4.自鯖のIPを繋ぎたい先に変更。
5.好きなだけDL。
6.あらかじめ用意しといた方法でデータをPCに転送。CGIの場合はIP戻すこと。
応用すればiアプリ本体を取得してプロトコル解析したあとネットランキングに不正なデータポストして荒らすとかも可。悪用厳禁。
711 :
デフォルトの名無しさん :2007/07/02(月) 18:36:03
3D座標を2D座標に変換する関数というのはあるのでしょうか? Google等で調べたのですが見当たりませんでした。 こういった変換は自前で作るしかないのですか? どなたかご存知の方がいましたら教えていただけないでしょうか。 よろしくお願いします。
>>711 それは射影するってことだろ?
射影する方法なんか無限にあるんだから自分で作る以外ありえないと思うんだが。
>3D座標を2D座標に変換する関数というのはあるのでしょうか? 3Dのオブジェクトを平面に投影した図形の座標を得たいという意味なら アフィン変換を理解すればいい。 レイトレーシングとかポリゴンレンダリングの原理を勉強すれば 3DCGのことが大分わかるようになるよ。
714 :
デフォルトの名無しさん :2007/07/02(月) 23:44:04
今日からiアプリ開発を始めようと 環境構築を行っているのですが、 Doja5.0のインストールで Java(TM) 2 SDK, Standard Editionが見つかりません。 とエラーが出て失敗してしまいます。 環境変数にはJAVA_HOMEにD:\jdk1.5.0_04 Pathに%JAVA_HOME%\binとして設定してあり コマンドプロンプトからjavacと入力すると javacの使い方以下が出てくる為、 問題なく設定されていると考えております。 このスレのお仲間にさせて頂きたく お手数をおかけしますがアドバイスをお願いします。
715 :
711 :2007/07/03(火) 01:13:06
>>712 >>713 レスありがとうございます。
3Dオブジェクトのスクリーン座標上の位置が知りたかったので、アフィン変換
で調べてみます。
半透明色ってどうやって使うんですか?
>>716 public static int getColorOfRGB(int r,int g,int b,int a)
FastMath.atan2()は、なぜこんな変な仕様になっているんだ。 Cのatan2と引数が逆だし、yが負だと受け付けないし、返り値が-180°を返さないし(-179°はOkなのに)。 ちょっと場合わけでひと手間かけるだけで済むはずなのに。
× 返り値が-180°を返さないし(-179°はOkなのに) ○ 返り値が180°を返さないし(179°はOkなのに) サーセン
ちょっと場合わけでひと手間かけるとFastじゃなくなるからだろう
携帯のJavaって浮動小数点数扱えるようになったの?
(^ω^;)
うん
直感ゲームってやつも作れるんですか?
DoJaがJava5に対応してないのが糞すぎる
>>728 DoJaはたしかにくそだが
コレしか食べるものがないんだよ
ガマンしてお食べ
俺は逆に1.4で止まってるから、5の文法になると混乱するかも。 じゃなくてJavaSEのAPI全部使わせろって話か?
>>717 できましぇえんん
半透明色ってどう使うんですかぁぁ?
734 :
デフォルトの名無しさん :2007/07/06(金) 08:58:34
ジェネリクスだろなんかこんなの<>で囲む奴 おれ1.4.2から進歩してないからわからん
>>732 Graphics2では加算合成と減算合成はできても
半透明はできなくねぇか?
>>736 加算でも、結果的に半透明と同じ効果ならいいんじゃないかと。
getPixel()setPixel()はリアルタイムでは使い物にならんだろうし。
それとも最近は他に方法できた?
Image.setAlpha()
でも903以降では?
未だに505対応をやらされている状態じゃ暫く用は無さそうだな('A` ) 904出たんだからいい加減900以降のFoma限定にしようよ・・・('A` ) それでもだいぶ古いけどな('A` )
70x も斬り捨てさせてください。
jarファイルが30KB以内のやつを切ってほしいわけだよね。 俺も、切ってほしいよ。 うちもいまだに 505~。
いつもは金金金金いってる人達も、下位機種対応の対費用効果や、アプリのスペックを 下位機種に合わせ、上位機種でしょぼく見えてしまう&機能を生かしきれないことによる 機会損失よりも、対応機種リストを長くして得られる自己満足のほうが魅力的なようだ。
>>736 リファレンスの説明みてみろ
setRenderMode( OP_ADD , alpha , 255 - alpha );
で再現可能。737が言ってるのはこのことかと思われる
脱出ゲームもJavaで作るんですか?
javaでも作れます
え?iアプリってC言語でも作れるんですか?
作ろうと思えば
GPS機能を使用したiアプリって作成可能なんですかね? 自分の位置情報を取得して、緯度経度くらいを画面に表示したいんですが…
どうやってC言語でJAVAアプリ作るんですかぁ?
>>753 よしやさしいオジサンが手取り足取り教えてあげよう♪(グヒヘェ
ま、まずは
C言語からJavaに変換するプログラムを作る所から始めて見ようか(・ω・)
JavaVM上で動くC言語エミュレータを作るんだろ?
>>756 は酷いことを言ってるようで、じつは一番親身になってくれてる凄くいいやつだ。
>>753 がサジェスチョンに従って一生懸命努力してJavaVMで動くC言語エミュを作成したとする。
もちろん出来上がってもそんなものは実際には役に立たない。しかし、ふと気が付くのだ
「もうC言語で記述する」こと自体が不要なほどJavaに精通してしまっていることを・・・
ありがとう
>>756 ほんとうにありがとう。そう涙する日が必ずくる。
CをJavaのバイトコードに変換するコンパイラ書けば良いんじゃね?
C言語エミュレータってなんだろ? Cインタープリタ?
うんこしてくる
>>758 むりじゃね?
コンピュータアーキテクチャちがうんじゃね?
スレ違いすぎ
コンピュータアーキテクチャ(大爆笑
Rhinoはまだ使えないのかよ
画面全体をイメージファイルに取り込む命令とかないんですかぁ?
ないあるよ
_く彡川f゙ノ'ノノ ノ_ノノノイシノ| }.: '〈八ミ、、;.) ヽ.:.:.:.:.:.;=、彡/‐-ニ''_ー<、{_,ノ -一ヾ`~;.;.;) 逆に考えるんだ く .:.:.:.:.:!ハ.Yイ ぇ'无テ,`ヽ}}}ィt于 `|ィ"~ ):.:.:.:.:|.Y }: :! `二´/' ; |丶ニ ノノ 「画面全体の大きさのイメージオブジェクト」 ) :.: ト、リ: :!ヾ:、 丶 ; | ゙ イ:} { .:.: l {: : } ` ,.__(__,} /ノ を保持して、それを画面に表示するんだ
EncodeImage.encode()を使って現在のCanvasの内容をjpeg形式に落とし、 getImage()を使ってMediaImageとして保持。 さらにImageStore.addEntry()を使えば、それを本体フラッシュメモリのどこかに落とせるはず。 エミュレータでは、エラーにならずに動作したが、保存はされなかった。 実機では、まだ試したことがない。
一度スクラッチパッドに保存してから、メディアイメージで取り込むという方法が常套手段のようですね。
ところで、なんでVectorはパソコン版サイトでは成功したのに モバイルでは大失敗したんだろう? しかも、ゲームチャンネルから未だ連絡が来ないのだが…。 本当に8月1日にリニューアルオープンする気なのかしら??
携帯アプリは規模が小さいから 他のアプリパクって実装するのもチョロイしなw 無料アプリとの差別化も難しくて有料に旨みも無いからやりません。
画像をパクるのはできないけどな
更に上手い人に頼めばクオリティーアップできるやん
Imageに対してgetRGBPixelって出来ないですよね なんとか出来るようにする方法ってないもんですかね?
createImageしたオブジェクトに対して描画してからgetRGBPixel
>>776 ありがとうございます
もうひとつ質問なんですが、int n = g.getColorOfRGB(*, *, *)); と取得した場合に
nからRGBを逆算する方法ってあるんでしょうか?
出来ないこともないけどデバイス依存なので 基本的にいじるべきでないと思う。
あらかじめGraphics.getColorOfRGB(0~255, 0~255, 0~255)して戻り値をとっておいて、一致するものを探せば可能
それは逆算というより逆引きだな 1677万色分のテーブル持つのも馬鹿らしい
そもそもgetColorOfRGBの戻り値を使いたい理由って何なんだぜ?
>>777 setPixelしてgetRGBPixelすればいけるかと
785 :
783 :2007/07/18(水) 20:02:03
>>784 エミュでやってみたらちゃんと取れたよ。実機だと機種によっては丸め込まれるかもしれないけど、少なくとも、内部表現→RGB→内部表現とすれば同じ値が得られるRGBが得られるはず。
なんで無理だと思ったんだろうな
>>786 getColorOfRGBがRGB88に対してほとんどの機種の画面が
RGB565だから
>>785 の言っているように丸め込まれるということで
無理と判断したんじゃないか?
☆ チン マチクタビレタ~ マチクタビレタ~ ☆ チン 〃 Λ_Λ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ヽ ___\(\・∀・) < OpenGL ESの一般公開まだ~? \_/⊂ ⊂_ ) \_____________ / ̄ ̄ ̄ ̄ ̄ ̄ /| | ̄ ̄ ̄ ̄ ̄ ̄ ̄| | | 愛媛みかん |/
質問なんだけど scratchpad:///x xって何番まで使えるの? それと、ひとつの番号あたりの容量制限とかはないよね? 0番しか使わなくても0~3番まで使っても例えばDoja3.5では合計400KBまででしょ? 誰か教えてちょ
開発ガイド詳細編に教えてもらうといいよ
>>790 サンクス!おかげで詳しく知ることが出来たよ!
更にlengthオプションの存在も知った。これだよ俺が求めてたのは…!
ありがと!
いや、ここで聞く前に自分で調べろって意味だろ
技術系の資料はだいたいその手の資料に載ってるからね
近所の本屋に行ってもiアプリ開発の本は全然無いんだよね とりあえず中身確認して知りたい情報があるか確認しないといけないから 通販じゃ買えないし遠くまで出かけるのも面倒くさい まったく近所の本屋ってリサーチしないよな 消費者が求めてる本をリサーチして店に置けっての だから売り上げが上がらず倒産するんだよ
いあ、むしろ消費者のニーズが細分化し過ぎてて 売上げが上がらないんだろう。 iアプリ開発本なんてほとんど読まなかったし、 今だともうネットだけで十分じゃね?
仕事で日本の携帯電話3キャリア向けのアプリを作ってたが 本なんざ一切読まないでやったぞ。 そもそも某社のアプリはアプリ開発系の本が一冊くらいしか出てないで ネットにも情報が少なくて死ぬかと思った。 ITmediaありがとう。
未だにDoJa-3.5使ってるからそろそろ最新版に移行しようとおもう 何か注意とか不安定だとかないよね?
>>792 そんなの当たり前だろw
何を見ればいいか教えてくれてるわけだから礼を言ったまでさ~
一応自分なりに調べてみたつもりだけど見落としてたみたい
>>797 Doja4.0以前のエミュレータとDoja4.1以降のエミュレータでは
動作が違う部分がちょくちょくある。
新しいエミュレータにした場合、作成するアプリがDoja4.0等にも
対応する場合、Doja4.0のエミュレータとDoja4.1以降のエミュレータの
両方で動作チェックを行うのを忘れないほうがいい。
なお、俺は現在DoCoMoでプリミティブ描画を行っているのだが
Graphics3D#flushにて、Doja4.0以前のエミュレータではフリーズし
Doja4.1以降のエミュレータでは正常に動作しているという現象を
食らっている。
原因追求したいのだが、他の仕事が入って全然調べられん。
同じ現象になって解決したやついたら、教えてくれ。
そのほかでは、通信の際にuid=NULLGWDOCOMOでuidを取得するあれにて
ミスで、uid=
http:// なってしまったときに
通信は当然ミスったが、動作をそのまま続けたエミュレータと
通信時にフリーズするエミュレータがあった。
どっちがどっちエミュレータかは、忘れた。
壊れたMLDをuseするとException吐かずにエミュが落ちる
夏休みでアプリ挑戦してみようと思う大学生ですが、 ドコモのツールってJavaの5.0には対応してないんでしょうか?
対象のバージョン、書いてあっただろ。
資料がpdfだけというのはやめてもらえんだろうか。 使いづらくてたまらない。
DoJaが足を引っ張ってJava5を入れられない・・・・
>>805 Java 6のjavacでも-sourceと-targetと-bootclasspathを指定すれば、
ちゃんとコンパイルして実機で実行できるよ。
PDFの資料なんか、最初に全部読んどいて忘れたときに開く程度だし別にいいだろ。 APIマニュアルはHTMLだし。
808 :
805 :2007/07/26(木) 05:39:39
>>806 コンパイルはコマンドプロンプトからオプションつけてやればいいという事でしょうか?DoJaのビルトだとオプションとかつけれなかったような。
別にDoJaからコンパイルする必要はない。 クラスパスを指定して普通のJavaソースと同じようにコンパイルするだけ。
つか、最新の開発ツールだと -source 1.3 付けてくれてるみたいだぞ。久々にいじったのでいつからかわからんが、これでjdk1.4とはおさらばできそうだ。
新しいコンパイラなら最適化も素晴らしくなっているだろう……と思いきや 最近のjavacはJITの存在を念頭に置いてて、あまり最適化しない、むしろ JITが扱いやすい型にはまったバイトコード生成をするという話も聞く。
javacがするのは、定数折りたたみ、意味のない式や制御構造の削除とかの簡単なもの。 JITの性能が上がりすぎて、コンパイル時の最適化が効果が薄くなった。 コンパイル時の最適化を期待するにはjavac以外のツールが必要。
813 :
805 :2007/07/27(金) 04:42:59
>>809 >>810 ありがとうございます。
そういや、最近DoJa5.0はVer3になりましたもんね。
それでできるようになったのかな?
以前は1.5だとエラー出てたけど。
何か今時の話題のようなので報告。 JDK1.5.0_12+iαppliTool 5.0ver3.00 でコンパイル成功してます。 環境変数等、インストールした時のまんまなので標準環境だと思ふ
DoJaの開発環境は地味ながら継続的に改良されているよね もうちょっと宣伝すればいいのに
DXなしでGPSを使用したアプリって作成不可? 端末の位置情報を取得するくらいならできるのかな
無理
F904i(マーガレット機種)でjamのDrawAreaの設定について教えてください。 F904iは描画領域が240×432なんですが、 DrawAreaもそれに合わせて240×432にしたところ、 y=392~411のあたりにソフトキーラベルが浮いて表示されると ユーザから指摘を受けました。 で、DrawAreaを240×391にしたところ、 今度は「描画領域が相変わらず240×432になっている」と指摘されました。 F904iのDrawAreaの挙動って、何か特殊な対応が必要なんでしょうか? なんとかソフトキーラベルが画面表示に被らないようにしたんですが。。。
>>818 DoJa-5.x用の開発ガイド詳細編を読んでみるといいよ。
DrawAreaで検索かけて掛かったところ全部。
DrawAreaは任意の値で領域サイズを変えられるわけじゃない。
サポートしているサイズが端末ごとに決まっている模様。
ソフトキー描画を非表示にするメソッドが使える場合もあるとも書いてある。
全画面表示を指定した場合のソフトキー表示が気に入らなかったら、
ソフトキーを非表示にしてアプリでソフトキーを描画する方法になるだろうね。
Frame.setSoftLabelVisible(false)
さらに突っ込むなら 現時点でFrame#setSoftLabelVisible(false)を使用して全画面表示が 可能なのは、端末資料を見る限りだとFシリーズの903i以降と703i以降だ。 なお、F機はフルスクリーンにしないと端末資料に書かれている 最大画面サイズを使用できない。
勝手直感ゲームまだー?(・∀・ )っ/凵 ⌒☆チンチンチン
823 :
818 :2007/07/31(火) 02:20:57
>819-821 ありがとうございます。 ずっと、任意の領域に変えられるものだと思ってました。。。 >可能なのは、端末資料を見る限りだとFシリーズの903i以降と703i以降だ。 Fと、Dの903/703もいけそうでした。 >Frame.setSoftLabelVisible(false) 今自分が作っているアプリの場合だと、 クライアントアプリ内で端末名判断してやることになりそうです。 ソースにベタで。 新しく同様の機種が出るたびにリビルド。。。
703でも903のアプリは動きそうなんですけどダメですか?
どちらとも言えない。アプリによって答えは違う。 そのアプリが動くかどうかは作った人に聞け。
826 :
821 :2007/07/31(火) 10:08:25
>>823 >Fと、Dの903/703もいけそうでした。
D端末の端末資料には全画面表示非対応となっているが
いったい端末資料のどこを見て全画面表示が可能だと判断したんだ?
俺が言っているいる全画面表示(フルスクリーン)というのは
Frame#setSoftLabelVisible(false)によってソフトキーの表示を消し
その領域まで使用できることだぞ。
240x320など、240x240以上の領域がDrawAreaで指定可能であるのと
全画面表示が可能であるのは、別の話。
F以外の903以降の端末(PとN903iを除く)の端末はソフトキーを消さずに
240x320以上の領域が使用できるということだ。
GestureReaderであれば普通に使えるでしょ? 大して面白い機能でも無いから使わんけど。
>>821 さ、誤解を招くようなおかしい文章を自分が書いといて何で噛み付いてんだい。
>Frame#setSoftLabelVisible(false)を使用して全画面表示が可能なのは、
setSoftLabelVisible()はソフトキーの表示/非表示を切り替えるためのメソッドだ。
でもあんたの説明では全画面表示の切り換えに使うメソッドのように読み取れる。
>>823 が書いた「Fと、Dの903/703もいけそうでした。」はもちろん
Dの903/703でもsetSoftLabelVisible()はサポートしてるようでした、の意味だ。
サポートしてなくても、とりあえずThrowableをcatchしとけばいいんでない?
質問させてください。 アプリから、端末に保存している曲データ(MFiやSMFではなく、圧縮音声データ) を再生したいと思っています。 単純に思いつくのは、MovieStore.selectEntry()でiモーションデータ取得する方法 ですが、このクラスはNとSHの端末でしかサポートされていないようです。 (今回はFをターゲットにしているので、この方法は使えません) 曲データはサイズがでかいので、アプリ同梱や通信でとってくる方法も出来れば 使いたくありません。 あくまで、あらかじめ端末に保存されている曲データを再生したいと思っています。 他に良い方法はあるでしょうか?
偽装gifして読み込む
903以降のFって、偽装GIFのコメントヘッダを勝手にとっちゃうから使えないって聞いたけど…
835 :
831 :2007/08/01(水) 23:27:54
>>831-834 情報㌧クスです。
偽装なんとかについては詳しくないので、一度研究してみます。
836 :
デフォルトの名無しさん :2007/08/02(木) 11:18:52
DoJaってLinkedList持ってないよな? リスト構造が必要になった時って皆どうしてるんだ?
無いなら作れ
838 :
836 :2007/08/02(木) 15:10:32
Vectorで代用することにしたよ。 使えるらしいし。
>>838 LinkedListとVectorじゃ、計算量的な特徴は全く違うけどね。
サスペンドイベントと終了イベント(MIDPで言うところのpauseApp()とdestroyApp())が 取れないことがわかって絶望した。 アプリ終了されたときにセーブか何かするってできんやん……
サスペンド発生のタイミングは基本的に着信やバッテリー残量不足など 即座にアプリから端末へ制御を渡さなければならない状況。 そのためアプリに余計な処理をさせないようにしてある。 終了イベントをアプリで受け取れるようじゃ端末として問題ありだろう。 電源キーで強制終了しようにも、わざと(またはバグで)無限ループ、 バッテリー抜くまで終了できないアプリが作れちゃう。 で、セーブデータ保存タイミングだけど、アプリ実行中にこまめに保存するしかない。 ゲームなら1ステージクリアごととか、タイトル画面へ戻る度にとか。
841だが何かズレたこと言ってるな自分 暑さのせいだ、スルーしといてくれ
もしかしてMIDP準拠のアプリで、destroyAppで無限ループすると操作効かなくなるの?
Maximum byte code length (32KB) exceeded というエラーがいきなり出るようになったんですが なんなんですかこれは? ネットで調べても見つかりません
英語の意味のまんま。 直訳してみ?
バイトコードが32KBを越えた 意味不明
だからそのままだって。 1メソッド32KBの制約に引っかかったから普通のプログラム組めってこと。
>>843 実機依存かもしれないが、イベントハンドラから一定時間リターンしなかったら
強制終了、だったような。
>>844 っていうかこのスレくらい検索しようぜw
ソースうpしてくれ。
>>379 のときは見れなかったんだ。興味あるw
ボタンを一ドット単位で配置設定なんてことできないよね?
852 :
379 :2007/08/04(土) 21:12:12
クラスに32Kの容量制限があるなんて初耳だ
500シリーズとか700シリーズの話じゃね? 30kだっけか。
おそらく暗黙的に宣言される static {} のサイズが32Kを超えたと思われ。 単純な配列データは別ファイルにしてリソースとして読み込むようにして、 その他のものは幾つかのクラスに分散すべし。
856 :
379 :2007/08/05(日) 00:32:23
>>855 レスありがとうございます
リソースとして読み込むってのがよく分からないけど
とりあえず変数は別のクラスに分散させてみます
>>856 855さんが言ってるのは、配列の初期化だと思われ。
byte[] a = { ....};
ってやつね。
>>854 jarのサイズでなく、プログラム的に1メソッドのサイズ制限だと思われ。
どっかのpdfに書いてあった気がするが忘れたし暑くて探す気がしないから調べといて。
クラスのメンバ変数は、バイトコード上ではすべて特別なメソッドに置かれる。 そのメソッドが32kBを超えたからコンパイルエラーになった。 855のリソースにして読むというのは、大きな配列はスクラッチパッドやネットワークとかのクラス外に置いて、実行時に動的に読み込めということだろう。
861 :
379 :2007/08/05(日) 21:17:15
>>860 普通のメソッドは3000行書いても大丈夫だったのに
クラスのメンバ変数はちょっと書いただけで32KB超えたってことは
メンバ変数にすると容量を大量に消費するってことかな
大きな配列は別クラスに移してあるのでリソースにしなくても大丈夫かな
int[] a = { 10, 20, 30, 40 }; とかっていうのは a = new int[4]; a[0] = 10; a[1] = 20; a[2] = 30; a[3] = 40; って書いたのとほぼ同じだから、相当に容量を食う。
byte[] a = { 10, 20, 30, 40 }; に至っては a = new byte[4]; a[0] = (byte)((int)10); a[1] = (byte)((int)20); a[2] = (byte)((int)30); a[3] = (byte)((int)40); と言う感じでintの即値をbyteにキャストするから、さらに食う。
>>863 byteの配列ってそんな実装なんだ。
知らなかった。勉強になったよ。
まさか想定の4倍食ってるとは……。
ヒント : javap -c
どちらにせよ、データは外出ししておいた方が、管理しやすいし入れ替えやすいし良いよ。 理想的には、プログラムをいじらなくても敵キャラやステージを追加できるくらいにすべき。
iアプリで音楽再生するプログラムを書いています。 サンプルを参考にして、MIDIから変換したMLDファイルの演奏はできました。 変換はフリーソフトを使いました。 次は効果音を鳴らしたいんですが、効果音はMIDIではないですよね。効果音は どのように作成すればいいのでしょうか。 プログラムの話とは少し違いますが、iアプリで鳴らせる音について調べても 良く分からなかったので質問しました。 いろんなサイトを見ても、MLD形式のファイルがMIDIだと書いてあるのに、 着ボイスの拡張子もMLDだったりでよく分かりません。あと、YAMAHAのサイトで 変換するツールのようなものを見つけたのですが、NEC端末用と書いてあったので 違うのかもしれません。 お願いします。
>>867 waveからmldに変換するツール探すといいよ。
多分殆どはシェアウェアで、
フリーのは2秒制限とかの制約がつくものが多いと思う。
mldは機種ごとにフォーマットが異なるので、
対応させる機種分mldファイルを用意しないとならない。
Nだけ対応すれば良いのなら、YAMAHAのでもいいかもね。
>>860 ちと試してみたけど、以下のケースでNGだった。
32KB制限云々に限って言えば、
メンバ変数の初期化はコンストラクタ内で実行されるのと同意なんでない?
class app{
static byte buf[] = {0,1,2,3,4,・・・}; // ←バイトコードで16KB以上、32KB未満になる配列
app() {
byte buf2[] = {0,1,2,3,4,・・・}; // ←バイトコードで16KB以上、32KB未満になる配列
}
};
>>861 前にも指摘されてるけどさ、
そもそも「3000行の普通のメソッド」なんて有り得ないから。
cだけどこの辺読んでみるといいかも。
ttp://www.pro.or.jp/~fuji/mybooks/cdiag/ まー、その場しのぎで良いならクラス2つに分けて、
変数部分だけごっそり移動すれば解決するんじゃないかね。
0から作り直したほうが早いと思うけど。
一昔前のiアプリじゃいかにメソッドを作らないかを 試行錯誤したもんだが、随分とヌルくなっちまったな。 いいことだ(・∀・)
インスタンス変数はコンストラクタで、static変数はstaticイニシャライザで初期化される
インスタンス変数とコンストラクタが<init>で、スタティック変数とstatic{}内が<clinit>というメソッド名になる。
>>867 MLDは、MIDIのような情報、Wave(ADPCM)のような情報どちらも扱える。
>>863 配列の初期化のときの代入は、iastoreとbastoreの違いだけで、
バイトコード上でのキャストはなかったはず。
874 :
379 :2007/08/06(月) 16:45:56
>>870 メソッド少なくしたのはどっかのサイトにメソッドは少ないほうが
容量少ないって書いてあったからです。
次作るときはオブジェクトに分けるのを試してみたいです。
配列がバイトコードになったときのサイズどうやって調べたんですか?
キーリビートってどう実装したらいいんですか?
>>869 レイアウト管理オブジェクトを無効にして、
自分でコンポーネントの座標を設定する。
877 :
867 :2007/08/06(月) 19:15:42
>>868 ありがとうございます。
wav2mldというソフトを見つけて体験版を試してみたのですが、長さは
2秒もない音声ですがエミュレータ上では再生できませんでした。
そんなに高くなかったので製品版を購入してもう一度試してみようと思います。
他にも変換ソフトがあるようでしたら教えてもらえると嬉しいです。フリーじゃ
なくてもいいです。自分の端末はSOなのでYAMAHAのものではダメのようです。
>>873 ありがとうございます。
WAV形式のMLD形式(?)があって、どちらも拡張子がMLDということでよいでしょうか。
wav2mldというソフトの製品版を使ってみようと思います。
>>875 毎フレームgetKeypadState()して、過去数フレームと見比べる。
ところで、Java->C, J2ME->BREW自動変換をうたうツールやベンチャーをたまに見かけるが、
GCをどう解決してるかについて何も言ってないのは詐欺認定でいいよな?
>>875 俺はボタンが押されたら別スレッドでループを回して
離れたらスレッドを切るようにしてる
880 :
831 :2007/08/06(月) 23:19:16
>>831 で質問した者です。
偽装JPEGファイル経由で音声iモーション(AACファイル)再生できたので、
やり方など残しておきます。
・ImageStore.selectEntry()でImageStore取得
・ImageStore.getInputStream()でInputStream取得
・InputStream.read()で不要なデータ読み捨て
・MediaManager.getImage(java.io.InputStream in)でMediaImage取得
・MediaManager.use()
・AudioPresenter.getAudioTrackPresenter()でAudioTrackPresenter取得
・AudioTrackPresenter.setSound(MediaImage sound)でiモーションセット
・AudioTrackPresenter.play()で再生
再度、
>>831-834 に感謝。
>>880 おーすごい、レポ乙でつ(`・ω・´)ゝ
>>880 俺偽装ファイル扱うの知らないんだが、最後から2番目の
MediaImage sound
てどこから出てくるん? MediaManager.getSoundの間違い?
AudioTrackPresenterのリファレンス参照しる > 動画のオーディオトラックは MediaImage オブジェクトであるため、 > setSound(MediaImage) メソッドにて設定する必要があることに > 注意して下さい。
>>877 >>376 でも言った気がするが、PsmPlayerがあるだろ。無料で使えてwav変換も出来るぞ。
PsmはN用に変換してもN903iで再生できなかった
886 :
821 :2007/08/07(火) 15:49:06
NはYAMAHAのサウンドを使っているから他と同じにしてはだめ。 今まで各端末メーカごとのサウンド作成する必要がったが 903から統一されて一つのサウンドでよくなった。 しかし、Nだけ903用のサウンドを使用しても鳴らず N902i用のサウンドを使う羽目になった。
IアプリからSOAP経由でWEBサービスを利用する事ってできるんでしょうか? BREWアプリなら可能なんですが…。
す ん
>>886 ごめん、それもっと詳しく教えてくほしい
891 :
886 :2007/08/07(火) 20:07:50
すまん、前提が違っていた。 俺がmld変換に使っているツールはpsmではなく DoCoMoの公式CPに配信されるツールとプラグインなのよ。 ところで、俺はpsmについてはあまり詳しく知らないんだけど これって505の世代までしか対応していないんじゃないかな? そうだとすると、903とは世代が相当違うから 鳴る保障はほとんどないのでは?
MFiToolsか…
893 :
831 :2007/08/07(火) 22:39:16
>>882 AudioTrackPresenter.setSound(MediaImage sound)の括弧の中は、
単なる引数を書いてるだけなので、AudioTrackPresenter.setSoundに
MediaImageオブジェクトを渡すってことです。
("sound"は単なる引数名)
894 :
デフォルトの名無しさん :2007/08/08(水) 23:08:34
Javaを勉強するぞおおぉ!
やっぱりあんまりメモリ気にしなくて良いのは楽だなぁ。 自分で弄れた方が良い場面もあったが、最近は殆ど関係無いから やっぱJavaって良いわ。
896 :
デフォルトの名無しさん :2007/08/10(金) 13:39:35
>886 >今まで各端末メーカごとのサウンド作成する必要がったが >903から統一されて一つのサウンドでよくなった。 これのソースが知りたい… (ソースと言ってもプログラムじゃなくて情報源のほう)
たぶんサウンドというのはMIDI音源のことじゃなくて PCM音源のことを言っているんだと思う PCM音源だと機種によっては実装していない
MFiTools(?)の吐くmldが1種類になったってことだろ
音源がなければMLDに変換してもWAVE再生は不可能ということじゃないの?
900 :
886 :2007/08/11(土) 02:58:10
898の言っているのが正解。一種類で済むようになったって話。 ただしNは例外。 イロイロ調べてみたけど、一般の資料では、この辺の事書いてあるやつないんだな。 ってなわけで、この件について俺はもう語らん。
>>896 903が発売されたころ公式CPにはサウンドの互換性一覧
みたいなのが公開されて滝がする。俺は部署違うので、中身
見てないし、知ってても言えないんだけどそれじゃないのかなあ。
# 知ってはいないが経験的にはN以外全部一緒で鳴る
そうでなくとも、SH/D/FについてはFUETREKのPCM音源を
積んだSH-Mobile G1だと報道発表されているので当然全く
同一の仕様で確定。NがMA-7なのは変わらず。Pだけは音源が
不明だけど、実際に鳴るってことは少なくともROHMからFUETREKの
音源に乗り換えたんじゃないのかな。と思ってる。
ドコモとFueTrekは去年くらいに近業務提携したはずだから、それの影響? wav2mldのサイトを見ると、903シリーズ以降は、[P F D SA]、[SH SO]、Nの3種類みたいだね。 1種類になったってことは、N以外は全部同じになるのか。 そのうちフォーマット公開されないかな
サーバーサイドにあるPHPにアクセスして、 ネットワークごしに画像をダウンロードする方法で戸惑っています。 // PHP側 <?php $img = imagecraetefromgif("img.gif"); header("Content-Type: image/gif"); imagegif($img); ?> // Java側 void downloadImage(String url) {
904 :
903 :2007/08/12(日) 04:42:27
サーバーサイドにあるPHPにアクセスして、 ネットワークごしに画像をダウンロードする方法で戸惑っています。 // PHP側 <?php $img = imagecraetefromgif("test.gif"); header("Content-Type: image/gif"); imagegif($img); ?> // Java側 void downloadImage(String url) { try { HttpConnection hc = (HttpConnection)Connector.open(path, Connector.READ, true); hc.setRequestMethod(HttpConnection.GET); hc.connect(); InputStream in = hc.openInputStream(); byte[] data = new byte[(int)hc.getLength()]; in.read(data); ... } このような関数で、引数urlでphpのスクリプトにアクセスして画像をダウンロードしたいと思っているのですが、 これだとhc.getLength()が-1で、明らかに正常にアクセスできていません。 ちなみに、urlでgif画像の直リンクを張った場合は正常に動作します。 PHPの出力方法に問題がありそうな気がするので若干スレ違い気味ですが、原因がわかる方がいましたらお願いします。
> 原因がわかる方がいましたらお願いします。 ヘッダーにコンテントレングスをセットしていないから。
Content-Lengthの出力はサーバ側の設定によるもの。 アパッチのコンフィグで設定するなり何なり。 一方、iアプリ側はgetLength()が-1になることも考慮した組み方をしておく。 Content-Lengthを設定しておらず、自分でもいじれないサーバではアプリ側で対処するしかない。 if ((int)hc.getLength() == -1){~} else{~} てな記述。 具体的な記述内容はググればいくらでも例が見付かる。
>>904 >これだとhc.getLength()が-1で、明らかに正常にアクセスできていません。
getLength() が -1 でも正常にアクセスできててデータの中身はちゃんと読める。
908 :
904 :2007/08/12(日) 12:06:52
>>905 PHP側でContent-Typeを出力する前に
header("Content-Length : " . filesize("test.gif"));
を追加してみたのですが、connect()の段階で止まってしまうのです。
>>906-907 -1でも正常にアクセスできているのは、初耳でした。
確かにレスポンスコードは200だったのですが・・・、ありがとうございます。
以下のコードで、正常に動作することを確認しました。
// Java側 hc.openInputStream()以下
...
byte[] data;
if ((int)hc.getLength() != -1) {
data = new byte[(int)hc.getLength()];
in.read(data);
}
else {
ByteArrayOutputStream bs = new ByteArrayOutputStream();
while (true) {
int temp = in.read();
if (temp == -1) {
break;
}
bs.write(temp);
}
data = bs.toByteArray();
}
...
公式資料に書いてあるっての
>908 そして第2のはまりポイント in.read(data); は一度で全部読み込めるとは限らないから -1が返るまでループ処理してバッファに追記していくこと
ってゴメン それはちゃんと書いてあるね
いや、getLength() != -1 のほうの data = new byte[(int)hc.getLength()]; in.read(data); これは良くない ↓のようにするか data = new byte[(int)hc.getLength()]; int i = 0, n; while ((n = in.read(data, i, data.length - i)) >= 0) { i += n; } 面倒かったら↓で data = new byte[(int)hc.getLength()]; new DataInputStream(in).readFully(data);
>>908 >connect()の段階で止まってしまうのです。
こりゃ実際に出力しているデータサイズが違うんじゃないの?
たとえば
ContentLength: 100を設定しておいて、データは90バイトしか送ってないとしたら
携帯側は残り10バイトが届くまで受信待ちの状態になってるだろうさ
だな。鯖側の処理おかしいもん。 こんなんでどうよ? <?php $fname = "test.gif"; $fdata = file_get_contents($name); $fsize = strlen($fdata); header("Content-Length: ". $fsize ); echo $fdata; ?>
915 :
914 :2007/08/12(日) 18:04:08
あー、ちなみに何がおかしかったかというとimagecraetefromgif()でイメージリソース として取得したデータを、PHPで出力時にGIFに再変換しているから元のデータと微妙に 変わっているということ(画像としては同じになるけどヘッダとか違う)。 で、出力サイズは元ファイルのを出しているから、正しいサイズになってない。 そもそもgd呼ぶような面倒なことはしないで、そのままバイナリ吐いてやればよかった。
916 :
914 :2007/08/12(日) 18:05:49
ごめ。2行目の引数は「$fname」な。 - $fdata = file_get_contents($name); + $fdata = file_get_contents($fname);
917 :
904 :2007/08/12(日) 21:18:41
>>912 ネット上で調べた文献の多くがこの方法だったので・・・、迂闊でした。
一回のread()で読み切れない場合があるってことですかね?
今ひとつ理解できていませんが、直しておきます。
>>913-916 この方法を使ったら、普通にgetLength()で取得できるようになりました。
file_get_contents()でリソースを取得すれば良かったのですね。
ありがとうございます、おかげ様で理想通りに動作するようになりました。
>>917 InputStream#read は 「1バイト以上読む」 っていう仕様なので。
1バイトでも読めたらそれで返ってくることが許されてる。
女の子にもてもてになるiアプリの作り方を教えてください。
エロゲーでも参考にして作ればいいと思うよ
>>919 女の子にモテモテになってからiアプリを作ればおk
俺の女性の知り合いはみんなau_| ̄|○ il||li
じゃあ、オープンアプリを作ればいいじゃない
オープンだとウイルス入ってそうで怖い
スクリプトのパースメソッドだけで500行行きそうです
質問させて下さい! ショートタイマーを使ったリアルタイム処理のゲームを作っています。 複数の端末で実機テストを行った所、一切エラーは発生しなかったのでユーザに配布したのですが 同じ機種でもエラーが発生する場合と発生しない場合があり、しかも特定の箇所ではなく毎回違う 場所でエラーが発生するそうなんです。 携帯側に処理を渡してないからかなと思い、至る所にスリープ処理を入れたのですが、それでも エラーが発生するそうなのです。 そこで一つ質問なのですが、現在のソースを見るとショートタイマーの発生時間は20に設定しています。 ループ内のスリープ時間の合計を見ると上記の20を超えておりました。 例えばショートタイマーイベントでの処理が終わっていないうちに次のショートタイマーのイベント発生時間に なった場合、強制的に2つの処理が同時に行われてしまうのでしょうか? それが原因でエラーが発生しているのかな?と思いましたので。 自分の端末でエラーが出るなら確認しやすいのですが、なにせ自分の端末ではエラーが発生しないので…。 長文で申し訳ありませんがよろしくお願い致します。
ループ内のスリープ時間ってなによ 何かループしてんの?
while(true)で回して中でsleepじゃなくて timerでタイマーイベント取得して、更にその中でsleep?
個人の携帯の使い方に問題があってエラーが出る事も多いから、 いちがいにプログラムが悪いとも言えない。
タイマー分解能やタイマー精度、CPU負荷の問題で、きっちり20msecずつwaitすることはまずない。 タイマーイベントは同時に起こらないはず。心配ならsynchronizedすればいい。ただしイベントがたまりすぎると変になる機種もある。
とりあえず何のExceptionが出てるんだ? それはそうと、リアルタイムのゲームを作るならタイマイベントで 処理するよりも、while()ぶん回したほうがいいと思うけど。
932 :
926 :2007/08/16(木) 03:55:22
説明が分かりにくかったようで申し訳ありません… えっと、while(true)でぶん回す事も考えたのですが参考にしたサイトでは ショートタイマーでイベントを取得するように書かれていたので、そのようにして おります。20msecおきにタイマーイベントを取得して処理を行っているのです が(その事自体をループと書いてしまいました)そのタイマーイベントの中で Thread.sleep()を含んでいます。この合計が20msecを超えてしまっている という事です。というか書きながら思ったのですが、タイマーイベントを使用して いるのにThread.sleepを入れる必要性はないですね…。while(true)で無限 ループを作っている訳ではないのに…(汗) ただ、どちらにしてもそのタイマーイベントの中で時々forループで約5秒程の描画 処理が入る場合があるんです。なのでタイマーイベントの処理が20msec以内に 終わらない事が多々ある事は変わりません。 とりあえず質問したかった事はタイマーイベント処理が終わっていない時に次の タイマーイベント発生時間が来た場合、後ろをすぐ追いかけてくるような感じで 同時に処理が行われるのか?という事だったんですが930さんのご回答で 解決したように思います。
933 :
926 :2007/08/16(木) 04:02:25
連投&回答&再質問させて下さい…
>>931 それがエミュレータでも自分の持っている実機でも一切エラーは発生しないんです。
なのでどこでどうエラーになっているのか皆目検討もつかないという感じです。。
ただ、友達の端末で試した所、エラーにはならないものの、画面のチラつきが激し
かったんです。描画時には必ずlock~unlockをかけているにも関わらずです。
なので、もしかしたら処理が同時に行われてて描画→描画が変なタイミングに
なっているのかなぁなどと思った次第です。もちろんエミュレータや自分の持ってる
実機では一切画面のチラつきなどはありません。
とりあえずタイマーイベント処理の中から意味不明なThread.sleepを外して、イベント
発生時間を1000msecとか極端に伸ばしてみながら確認してみようと思います。
皆さん、色々ありがとうございました。
だからエラーってなにさ。
935 :
926 :2007/08/16(木) 16:01:17
>>934 だからわかんねぇつってんだろハゲ!
もっと文章読めや
ソース公開してもいいかと思ったが
ひとつ上のレスすら読めねえんじゃ無駄だわ
今日も暑いねぇ。
>>935 読み難い長文書いておいて、「もっと文章読め」ってのは、質問する
立場としてどうよ。
>>934 は、お前さんの書き込みじゃ情報不足だってことを指摘してるだけでしょ。
大体お前さんは、ユーザーのところで起きている「エラー」というのがどういう
現象なのか、それを把握しているのかどうかを書いていないと思うが。
別人じゃろうて。。。
しかし説明するか泣きを入れるかどっちかにして欲しいのは確か
940 :
926 :2007/08/16(木) 19:01:37
すみません、935は私ではありません…。 読みづらい文章を書いて偽者が発生する原因を作ってしまった事をお詫び致します。。 ちなみに、ユーザからの問い合わせでは突然「アプリエラー」と表示されて終了する場合が あるという情報だけです。それも特定の箇所とかじゃなく完全に不特定だそうで…。 自分の実機やエミュでは一度もエラーが発生した事はありません。ちなみに数名から上記 のエラー報告を頂いたのですが機種もバラバラなんです。同じ機種でもエラーが発生する 人としない人がいるという、何とも対応しがたい現象なんです。しかも全ユーザから見る とエラーが発生する人はほんの数名だけ…(報告してないだけかもしれませんが) ただ今日ネットで調べまくって「もしかしたら」というものを見つけたので書いてみます。 ①画面のチラつきが関連しているかもしれない →全てPaintにぶち込んでrepaint()ではなくpaint(getGraphics());に変えてみます。 ②timer処理を一時停止した後のタイマーstart()が二重になっていないか? →全てのタイマーstart()の前に念のためタイマーstop()を入れてみます というか毎回情報不足&ダラダラと長文で分かりづらくて申し訳ありません。 偽者も出てきたので皆に迷惑をかけるといけないので暫く自力で頑張ってみます。 本当にありがとうございました!
まあたぶん携帯のメモリー不足でエラーが出やすいんだと思うけど
アプリで例外をcatchしない場合もαエラーなんじゃないっけ?
すみません。質問させてください。 当方、iアプリでパチスロの収支管理ソフトを作ろうと思っています。 ですが、java自体初めてなものでScratchPadの保存ができても、一覧がうまくつくれません・・・ 本を買ったのですが・・一覧だけはのってなくて・・ 他の部分もこれでいいんだろうか・・という書き方になってしまっています。 一度、一覧を使った全体のサンプルソースを参考にさせて頂きたいです。 かなり、探したんですが見つかりません。 ご存知の方、教えて頂いたら幸いです。 家計簿でもなんでも、一覧を表示しているものであれば・・ 未熟な質問で申し訳ない。宜しくお願いします。
酔ってます(@ω@) 一覧って意味がわからんのですお。 プログラムとしてはデータを読んで、表示するだけですお。 ついでに言うなら、パチは辞めた方がいいんじゃねーか? 2ch的にも人間としても(・∀・)
>943はiアプリのわからないところを質問するって段階以前の話だな 「初めてのプログラミング」とかそういう書籍を読むところから始めてくれ
はじめまして、Javaを勉強しはじめて五日目になります。 wikiを見てもまだ理解が出来る次元ではないので少しお邪魔します。 理由は、ゲームを作りたいからという動機なのでお仕事でやってる方には申し訳ないと思いますが 初心者歓迎の文字を見て入らせていただきました。 (ソフトはiαppliTool DoJa-3.5を使っております) 現在iアプリを作成中で、音楽を鳴らしているのですが音量を再生する場合に SoundPlayer.playTrackSound( 0, 0, 100 ); //トラック,リピート,音量(100max) と、置いているのですが、音量を変える時にソフトキーから切り替えで Int volを作りvolに数字を代入して SoundPlayer.playTrackSound( 0, 0, 100 - vol); としたところ、音楽が最初から再生されてしまいました。 これを現在流していたところまでの音楽から音量を途中で切り替わるようにしたいのですが どうしたら良いでしょうか、説明不足でしたら申し訳ございません。 どうか宜しくお願いします。
SoundPlayerって自分で作ったクラス?
>>947 そうですね、サウンドの管理は別のクラスでしています
>>943 収支管理かぁ昔つくったなぁ・・・練習作品としては悪くないけどな。
他の人も言ってるが「一覧」ってのが一体何を指すのか判らんからアドバイスはできないぞ。
画面に並べて表示する仕方がわからない!って意味なら表現方法なんて無限なんだから誰にもわからん。
ソース晒した方がよっぽどアドバイスもらえるかと。
ついでにいえばスロはもう終わりだから辞めとけw依存症になるまえに!
>>946 まず誰もSoundPlayer.playTrackSound()ってのが何なのか判らないとおもうが。
自作メソッドなら中身見ないことにはどうにもならんが・・・どこかから拾ったものか?
頭から再生されるのはそのメソッドが内部でplayメソッドを使っているからだと思うが。
音量の設定はAudioPresenterクラスの
setAttributeメソッドで音量を指定してセットする。
>>949 ありがとうございます。
setAttributeだけをいじったら音量だけ変わりました。
別のファイルで作っていたので見落としていたみたいです。
私の為にお時間いただいてありがとうございました。
>>944 よってらっしゃる・・
ありがとございます。
すみません。一覧っていうのは縦のグリッド表示の意味だったんですが、
iアプリじゃ無理のようですね。
わかりにくくてすみません。
パチスロは確かに2ch的には完全になかったかもです・・
でも、他に作れそうなものが、思いつかなくて・・;;
>>949 ありがとうございます。
ソースはとてもじゃないですが、晒せるほどのものじゃ・・
実際DOJAで動かしてみたら、
ラベル1 □□□□ ←テキストボックス
ラベル2 □□□□
ラベル3 □□□□
となるはずが
ラベル1 □□□□ラベル2 □□□□ラベル3
□□□□
みたいな画面になって散々でした;;
HTMLLayout を使ってるんですが、何故か改行されませんね・・
DOJAじゃ反映されないのかな・・
この業界も長いので、ついサンプルに頼りがちで申し訳ない
勉強になるとおもってもう少しがんばってみます。
パチスロは実は5号機になってからほとんどいってません
サウンドの話を蒸し返して申し訳ないですが… 結局waveから変換したmldを再生させるゲームを作るには ①各端末用のmldデータをネット上に置く ②アプリ内で端末情報を取得して、それに応じたmldをダウンロードして再生する っていう感じになるのかな? そもそも端末情報(機種)って取得出来るの?
できるよ。
System.get…なんだっけ? 開発資料PDFの後ろの方にまとめてある
System.getProperty("microedition.platform") ただしdoja2.0以降だったと思った まぁADPCMなMLDな時点でdoja3.0以降ぐらいになるとは思うけど
アプリゲットのダウンロード数ってどうやって調べてるんですか?
>>952 あらかじめjam/jarごと機種別データを用意しておいて
ダウンロード時にUserAgent見て判別したほうがいいよ
場合によっては、アプリ本体も機種別処理を書かないと
いけない場合があるから。NとかFとかDとかな…orz
リソースを変えるだけなら、アプリ側だけで済ます方が簡単だろ
ちょっと皆に質問! ボタンの連打対策ってどうしてます? 例えば無限ループで回してるシューティングゲーム等の場合なんだけど 一時的なアニメーション処理をforループで表示させてるんですよ。 その場合、forループでの処理中にボタンが押された場合、ループを抜けた直後に ボタンのイベントが開始されてしまいますよね? ループ前とループ後にフラグを立てて、ボタンイベントの入り口でフラグ判別を してみたんだけど、ループ中のフラグじゃなくループ後に拾うはずのフラグの方に 分岐してしまう。。 これはforループ中は「ボタンが押された」っていう情報を待機させておいて、実際に ボタンのイベントに飛ぶのはループを抜けた直後からって事だからだと思うんだけど。 要するにforループでの処理中はボタン押下の処理を行わせたくないって事なんだけど 皆はどういう感じで組んでるのか教えて下さい。。
getKeypadState
ループの中にスリープを入れてますかぁ?
>>960 早速getKeypadStateについて調べてみます!
ありがとうございます。
>>961 それが入れてるけど駄目なのですよ(T-T)
ループ中にガンガン連打してみると、ループ明けに3回分くらいのボタン押下処理が行われた形になってしまう…
イベント処理の中でループしてんじゃないでしょうね?
質問させてください。 「Illegal protocol」と出てしまいサーバに接続できません。 どのように対処したらよいのか全くわかりません。 どこかにプロトコルを設定する箇所があるのでしょうか。 ご存知のかたおりましたら、アドバイスをお願いします。 以下、設定内容 ・UseNetWorkのhttpチェック済 ・PackageURLにサーバからのパスを設定済 ・トラステッド動作設定で通信許可URLに「*」設定済 ・通信部分ソース HttpConnection conn = null; conn = (HttpConnection)Connector.open(サーバURL, Connector.READ, true); conn.setRequestMethod(HttpConnection.GET); conn.connect();
966 :
964 :2007/08/20(月) 18:35:02
早速のご回答ありがとうございます。 >始まっていないとか packageURLを""で括っていたので、もしやと思い外したらうまくいきました。 非常に助かりました。ありがとうございました。
>>963 えっと、こんな感じです。
void paint{
メイン描画処理
}
processEvent{
ショートタイマー{
repaint();
}
決定キー{
分岐にて各種処理
※ここで場合によってfadeout()へ飛ばしています
}
}
void fadeout(){
forループで描画処理
}
かなり簡略化して書いてみました。
自分は元々Cから入ったのでついつい関数と呼んでしまうんですが
fedeout()関数の入り口と出口にフラグを立てて決定キーイベント中で判別しても
ループ中に溜まってたボタン連打分がループ抜けしてから一気に押し寄せる感じです。
もちろんループ中にスリープは入れているのですが…
スリープ入れるとか関係ないし あるイベントを処理してるあいだ次のイベントが飛んでこないのはあたりまえ イベント処理の中でループしないというのが正しい方法
SDカードへの保存について質問です。
MediaManager.getImage("
http://www. ~~"); で取得したMediaImageをSDカードに保存したいのですが、
StorageDevice sd = StorageDevice.getInstance("/ext0");
Folder folder = sd.getFolder((AccessToken)DoJaStorageService.getAccessToken(0, DoJaStorageService.SHARE_APPLICATION));
File file = folder.createFile("test.jpg");
FileEntity fe = file.open(File.MODE_WRITE_ONLY);
OutputStream os = fe.openOutputStream();
とし、OutputStreamを取得できるのは分かったのですが、ここへMediaImageを書き込む方法が分かりません。
writeメソッドでは、byte配列を書き込むようなのですがMediaImageをbyte配列へ変換する方法があるのでしょうか?
>>968 まぁまぁ、知らないものはしょーがない。
>>967 processEventは大半が単一スレッドで実装されているものなので、
スリープすると他のイベント処理も一緒に停止する。
Win32の実装も同じだったと思うけど、そういうもの。
なので、根本的に作り変えないとダメ。
メインループ作るなら、IApplication#start() が別スレッドなので、
ここで無限ループ作る方法が楽だよ。
タイマーなんて不安定なもの使うより確実。
>>969 httpでダウンロードできるファイルなら、
素直にhttpConnectionでダウンロードすりゃいいんでない?
MediaImageから変換する方法が無いでも無いけど。
971 :
970 :2007/08/21(火) 15:24:54
970踏んだのでテンプレ更新してるんだが・・・
>>1 のまとめサイトが全く更新されてないので消しても良いだろうか。
wikiさえも役に立ってねぇ
>>969 970さんが言っているように、HttpConnectionでjpgファイルをダウンロードするのが吉。
もし、どうしてもMediaImageからbyte配列にしたいんだったら、
MediaImageからgetImageでImage取り出して、それをImageEncoderにぶちこむ。
結果として得られるEncodedImageからはInputStreamが取れる。
974 :
967 :2007/08/22(水) 00:48:14
>>968 >>970 ありがとうございました!
根本的な作り方がよろしくないようですね。。
とは言え、なんとか自己解決しました!
解決方法はこの間のソースを例にとると…
void paint{
メイン描画処理
}
processEvent{
getKeypadState();で決定キー押下の場合{
keywaitフラグが0ならばkeywaitフラグに"1"を立て、メイン処理を実行 ←追加
分岐にて各種処理
※ここでfadeout()へ飛んだりする ←移動してきた
}
}
ショートタイマー{
repaint();
keywaitフラグが"2"の場合に"0"に戻す ←追加
}
決定キーRELEASE
keywaitフラグに"2"を立てる ←追加
}
void fadeout(){
forループで描画処理
}
このような感じで問題ありませんでした。多分、相当な回り道だと思いますが(笑)
これなら、ループ中にいくら連打しても"一度タイマーイベントを通らないと"次の決定キー
が有効にならないためうまくいきました。
>>970 >>973 ご教授ありがとうございます。
MediaImageで取るほうが楽に見えて、HttpConnection使おうとすらしていませんでしたorz
何でもやってみないとダメですね。
お手数おかけしました。
HttpConnectionで取得しようとした際に、
setRequestMethodでHttpConnection.GETを指定し、
setRequestPropertyでContent-Typeにimage/jpegを指定してconnectすると、
Illegal headerと言われてしまいうまく取得出来なかったのですが、
setRequestPropertyを消すとちゃんと取得できました。
>>973 MediaImageで取得した際の方法も教えて頂いてありがとうございます。
umeるか
うめ
うめ
public class ume extends Canvas{
ただうめるのもつまらんな。 なんか情報残して埋めるか。 Doja5.0のエミュレータを起動する際に -u オプションを使用して ADFへのURLを設定する際、そのURLが有効でないと起動時に落ちる
Doja5.0のVer3.0.0のエミュレータはコマンドプロンプトから 起動した場合、DOS画面にSystem.out.printlnの出力を吐き出さないため デバッグ情報が見れない。 なおVer2.0.0以前なら見れる。
んじゃ俺も。 processEventのトラブル多いので、Canvas継承クラス貼り付け。 見た目の都合、全角スペースを沢山含んでいるので要削除。 多少問題もあるけどそこそこ動くと思う。 有識者の方適当に修正よろ。
class appMain extends Canvas { private int keyDown; // キーが押された瞬間にビットが立つ private int keyArea; // キーが押されっぱなしならビットが立つ private int keyUp; // キーが上がった瞬間にビットが立つ public appMain() { // コンストラクタ。お好きにどーぞ } // TODO IApplication#start()で以下を呼ぶ public void appStart() { try { while(true) { keyUp = keyArea; keyArea = keyDown | getKeypadState(); keyUp = keyUp & (~keyArea); mainLoop(); keyDown = 0; paint(getGraphics()); Thread.slepp(100); // 好きな時間で調節 } }catch(Exception e){ // TODO 強制終了前に何か一言 } }
public void paint(Graphics g){ // TODO 描画処理 } public synchronized void processEvent(int type, int param) { if (type == Display.KEY_PRESSED_EVENT ){ keyDown |= 1 << param; } } public void mainLoop() { // TODO キーイベント処理など。以下例 if(keyUp & (1<<Display.KEY_UP) != 0 ) { // 上キーが上がった } } } 今使ってるものからかなりいじってたんで、 コンパイル通らなかったらゴメンナサイ。
ファイル名を指定してリソースを読み込むメソッド byte[] loadResFile(String file) { byte[] b = null; DataInputStream dis = null; ByteArrayOutputStream out = null; try { dis = Connector.openDataInputStream("resource:///" + file); byte[] buf = new byte[10 * 1024]; out = new ByteArrayOutputStream(buf.length); int ret; while ((ret = dis.read(buf)) != -1) { out.write(buf, 0, ret); } b = out.toByteArray(); } catch (Exception e) { } finally { try { out.close(); } catch (Exception e) { } try { dis.close(); } catch (Exception e) { } } return b; }
スクラッチパッドの番号を指定してそのデータを全て読み込むメソッド byte[] loadScratchpad(int num) { byte[] b = null; int size = 0; try { DataInputStream dis = Connector.openDataInputStream("scratchpad:///" + num); int ret; while ((ret = (int)dis.skip(100 * 1024)) > 0) { size += ret; } dis.close(); b = new byte[size]; dis = Connector.openDataInputStream("scratchpad:///" + num); dis.read(b, 0, size); dis.close(); } catch (Exception e) { try { dis.close(); } catch (Exception e2) { } return null; } return b; }
/** Jarファイルからの画像のロード @param fname ファイル名 @return Image 失敗の場合はnull */ private Image LoadImage( String fname ) { Image img = null; //バイナリデータのロード try{ //Jarサイズの取得 DataInputStream din = Connector.openDataInputStream( "scratchpad:///0;pos=" + OFFSET_JAR_SIZE ); int size = din.readInt(); din.close(); //JarInflaterの取得 din = Connector.openDataInputStream( "scratchpad:///0;pos=" + OFFSET_JAR_DATA + ",length=" + size ); JarInflater ji = new JarInflater( din ); //画像の読み込み MediaImage mi = MediaManager.getImage( ji.getInputStream( fname ) ); mi.use(); img = mi.getImage(); ji.close(); din.close(); } catch( IOException e ){ DBGPRINTF( "Load " + e ); } catch( Exception e ){ DBGPRINTF( "Load " + e ); } return img; }
>>985 動かしてないけど・・・10KBまでしか読めない?
ごめん、気のせいだった。 10KB単位で読み込むのね、りょーかい。
FPSを保つコード需要ある?
張っておけば喜ぶ人もいるんじゃない?
ある つか急激に良スレ化
えらそうなこといってあれなんだが、実機ではいまいち正確に保ってくれないんだ まぁ一応置いておく、誰か改変きぼう public class FPS { private static final int FLAMERATE = 30; //フレームレート。 private static final int FLAMETIME = 1000 / FLAMERATE; //1周期あたりの㍉秒 private boolean isFix; // FPSを固定するか private long oldTime; // 一つ前の時間(Control) private long beforeTime; // 一つ前の時間(Draw) private long fpsCount; // 計測用FPS private long fps; // 表示用FPS(1秒に一度更新) FPS() { isFix = true; beforeTime = 0; oldTime = 0; }
あ、コンパイル通らねぇw
>>984 × if(keyUp & (1<<Display.KEY_UP) != 0 ) {
○ if((keyUp & (1<<Display.KEY_UP)) != 0 ) {
他にもありそうだなぁ(=´∇`=)
で、残り7レス。
続き /** * スレッドのループ内に置くとFLAMERATEを調整してくれる * */ public void control() { if(!isFix) return; long nowTime = System.currentTimeMillis(); //経過時間。 long difTime = nowTime - oldTime; if( difTime >= FLAMETIME ) //時間が余っている場合。 { oldTime = nowTime; return; } difTime = FLAMETIME - difTime; //余り時間分待つ。 try { Thread.sleep( difTime ); } catch( Exception e ){}; oldTime = oldTime + FLAMETIME; }
ラスト /** * FPSを計測して描画する * */ public void draw(Graphics g) { long time = System.currentTimeMillis(); // FPS の計測 if(time - beforeTime >= 1000) { // 1秒経ったところで表示用のFPSに代入 fps = fpsCount; // 初期化 beforeTime = time; fpsCount = 0; } fpsCount++; g.drawString("FPS:" + fps, 5, 15); } }
余り時間計測する前に Thread.yield(); を呼んで、他のスレッドの処理を入れてやるのが吉
さぁうめるざますよ!
999 :
345 :2007/08/24(金) 16:17:39
>>993 こんな感じでメインループを空回ししてフレーム固定させてる。
ダイアログ出したりサスペンドの処理は長くなるので割愛。
public void appStart(){
long bt = System.currentTimeMillis(); // 処理基準時間
long nt = 0; // 次に処理する時間
long t, ct = 1;
while( true ){
t = System.currentTimeMillis() - bt;
if( nt > t){
try{
Thread.sleep( 1 );
} catch( Exception e){}
continue;
}
// スキップしたフレーム数分メインループを回す
for(int i = (int)(( t - nt ) * FLAMERATE / 1000); i >= 0; i--)
{
keyUp = keyArea;
keyArea = keyDown | this.getKeypadState();
keyUp = keyUp & (~keyArea);
mainLoop();
ct++;
keyDown = 0;
}
nt = ct * 1000L / FLAMERATE;
paint( getGraphics() );
}
}
345って・・・orz 983でした。ってことで1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。