iモード携帯電話用Java(iアプリ) Part 6
新スレ乙
>>4 確かに3D関係だと演算子オーバーロードあると便利だろうねえ。。
その前に浮動小数点サポートしろよ
Math.sqrt 使えないのは痛いな
CLDC1.1がメジャーになるのを待とう。
DoJa4からはCLDC1.1だろ?
本当なら嬉しい。いつも関数電卓作ろうとして寸前で思いとどまる。
12 :
デフォルトの名無しさん:04/08/02 23:03
逆平方のテーブル持ってへろへろしろと、君は!
>>10 DoJa4ってCLDC1.1なんだ!
しかし、いつDoJa4になるんだろ。来年くらい?
DoJa4って発表あったのか?
でも確かにメジャーバージョンアップならそれくらいしないとな。
Bluetoothとかタッチパネルとか使いたいなあ
F900it買ったけど使い道が・・・
>>13 int _sqrt(int n){
int s, t, n;
if(nNum <= 0)return 0;
s = n;
do{
t = s;
s = (t + n / t) >> 1;
}while(s < t);
return t;
}
>>17 オレが使ってるのと全く同じだ。
もしかしてアルゴリズム事典参考に、
ちょっといらんとこを省略した?
どっかネットから引っ張ってきたわ。
あと変数名変えそびれてる
>>17 nNumが残ってるな。3行目のnNum→nな。
すいません質問です。
画像を大量に使うアプリを作っていますが、端末によって「Out of Memory」エラーが
出るようになったので、はじめはImageオブジェクトを最初に全て作成していたやり方
を、必要に応じて作成→破棄を繰り返すように修正しました。
一度に扱うImageオブジェクトはかなり少なくなったのですが、長時間動作させている
とまた「Out of Memory」が出てしまいます。Imageオブジェクトを作成する際に使用す
るMediaImageオブジェクトは使い回ししており、Imageオブジェクトを破棄する際には
MediaImageオブジェクトは破棄しておりません。
現在Imageオブジェクトは配列であり、MediaImageはひとつだけです。
対策として、MediaImageもImageに対応した配列とし、Imageの破棄と同時にMediaImage
も破棄するという修正をしようと思っています。
この考え方は正しいでしょうか。ご意見をお聞かせください。
>>24 ありがとうございます。
早速試してみます。
MediaImageを開放せずにほかで使用すると、以前のが迷子になったまま
手がだせなくなってしまうのだよ。
その方法ってMediaImageをImageと同じ分作る必要あるの?
そりゃそうだろ。
リソースの実体を保持&管理してるのがMediaResourceなんだから
ImageとMediaImageは一対だろ。
MediaImageをdisposeしたとたん、getImageしたImageは使えなくなるじゃん
disposeしないで、そのMediaImageを使いまわしたら、上書きされた
以前のMediaImageを破棄する手段が失われてしまう。
この辺の実装は機種依存っぽいけど‥
>対策として、MediaImageもImageに対応した配列とし、Imageの破棄と同時にMediaImage
>も破棄するという修正をしようと思っています。
漏れはそうしてる
APIリファレンスにもdispose()汁!って書いてあるし
あと、unuse()してからdispose()するのが正しいやり方みたい
>メディアリソースは、使用する前に use() で使用開始を宣言し、 使用した後に unuse() で使用終了を宣言
>しなければなりません。 また、もはやメディアリソースを使用しない場合は dispose() で破棄しなければなりません。
> dispose() を呼ばない限り、メディアリソースで使用したメモリが解放されない場合があります。
>なお、disposeメソッドを呼び出した後にそのオブジェクトに対してdispose()以外の何らかのメソッドを呼び出した場合
>UIExceptionが投げられます。
> 破棄されていないメディアリソースが GC によって回収されようとしている場合の動作は機種依存です。
iアプリってKeepAlive使えるの?
FomaからHTTP1.1で使えるぽいんだけど
環境変数、HTTP_CONNECTIONを見ると空っぽい。
知ってる人いたら情報キボン
31 :
デフォルトの名無しさん:04/08/06 03:41
あげ
>>29 機種依存というか、NだけはImageをdisposeするとMediaImageまで消える。
おかげでNだけMediaImageへのunuse, disposeが失敗するのを前提としたプログラムにしないといけない。
N逝ってよし
>>32 漏れもそれで悩んだような希ガス
N逝ってよし
>>32 すいません。Nは全機種でしょうか?
あと
MediaImageのunuse
Imageのdispose
MediaImageのdispose
の順で実行すれば、全機種共通でいけませんか?
修正です。
↓こんなかんじです。
MediaImage が null でなければ unuse
Image が null でなければ dispose
MediaImage が null でなければ dispose
>>34 ImageのdisposeでMediaImageまで消えるのは、
N504iで確認した記憶がある。
MediaImageがnullとか、イマイチ言ってる意味がわからんのだが…
どうせTryキャッチするのだから、
Imageの開放
MediaImageの開放
とすれば問題はない。
だが最初は
Imageのdispose
MediaImageのunuse dispose
Imageにnullを代入
MediaImageにnullを代入
としていたので、Imageがnullにならなかったのだ。
(画像仕様のさいに、データがロードずみかどうかをnull==で判定していた)
>>37 何度も申し訳ありません。
具体的に書くと、
try {
img.dispose();
img = null;
mi.unuse();
mi.dispose();
mi = null;
System.gc();
}catch (Exception e) {}
これでいいのでしょうか。
System.gcはcatchのさらに後に書くべき。
それだとNの時にgcが行われない。
それ以外はいいと思われる。
>>39 >System.gcはcatchのさらに後に書くべき。
>それだとNの時にgcが行われない。
そうですね。ありがとうございました。
勉強になった。
42 :
デフォルトの名無しさん:04/08/06 21:43
F900itでやってますが
processIMEEventがimeOnから直接よばれないみたいですが
こういう仕様でしたっけ?
processIMEEventってどのタイミングで呼ばれるのが普通なんでしょうか?
>>44 APIリファレンス Canvas#processIMEEvent()
>IMEイベントが通知されたときに呼ばれるメソッドです。
>このメソッドはimeOn メソッドにより起動されたIMEへの入力が確定した場合、 またはキャンセルされた場合に呼び出されます。
レスどうもです
>>45 って書かれてますけど、imeOnが呼び出されても
一回目はprocessIMEEventが呼ばれず、
二回目呼び出す前にprocessIMEEventが呼ばれてるんです・・・。
Fのバグですかね・・・
imeOnはprocessIMEEventを呼ばない
それが全機種共通の仕様
F900iT以外の全機種とF900iTで動作が違うならバグかもね
>>47 そうなんですか?
じゃあprocessIMEEventの呼び出し条件ってなんなんでしょうか?
Eclipseでデバッグってどうやるんですか?
Part4に↓って書かれてましたけど無いぽいですし
400 名前:デフォルトの名無しさん 投稿日:04/02/03 23:39
続。
5.DoJaのインスコ
例)
D:\Dev\iDKDoJa3.0
プラグインなんかの設定は、
http://www.nttdocomo.co.jp/p_s/imode/make/java/index.html から落とせるPDFのP.154からを参照。
6.デバッグ
これも5.のP.165〜P.166に書いてる。が、
(1)『実行』→『実行(デバッグモードにチェックを入れる)』
(2)『実行』→『デバッグ』→『リモートJavaアプリケーション』→『デバッグ』
の2段で実行しなあかん。
これで半日嵌った 。・゚・(ノД`)・゚・。
使って、矢っ張り変数とか確認しながら
実行できることは便利と実感。生産性向上、とリリースノートに書いてあったのも
あながち嘘じゃない ヽ(´ー`)ノ
ちなみに
>>48の6の方法でやると
起動中に例外が発生しました
理由:
リモートVMに接続できませんでした。接続は拒否されました
と表示されてしまいます
>>47(=42)
んだから、processIMEEvent()は「imeOn メソッドにより起動されたIMEへの入力が確定した場合、
またはキャンセルされた場合に呼び出されます。」って書いてある。
プログラム側から呼び出しに行くんじゃなくてシステム側によって呼ばれるの。
(processEvent()と同じだってば)
imeOn()を実行するとIMEが起動される。制御はプログラム側からシステム側に移る。
ユーザーが入力文字列を確定させるか、入力操作をキャンセルすると
システム側はprocessIMEEvent()を呼び、制御がプログラム側に戻ってくる。
そのときプログラム側はprocessIMEEvent()内で
・制御が戻ってきた理由の判定(ユーザーが文字列を確定させたのか/入力をキャンセルしたのか)
・入力確定ならその文字列の取得
ができる。
ただ、imeOn()はブロックしないメソッドであるとAPIリファレンスに書かれていて、これはつまり
imeOn()を実行したところでプログラムが一時停止するわけではなく、その次以降の行も実行されて
いくということ。もちろん画面上はIMEが起動してユーザーが入力操作中なので、見た目では
プログラムが続行してる様子は分からない。
>>51 imeOnがブロッキングな端末ってなかったけ?
>>52 呼び出しスレッドが止まるのはあるかも。
VMはサスペンドしないのでIMEの裏でBGMとか流せる。
>>51 そういうことか。ありがとう。よくわかったよ
誰かEclipse使ってないですかー
おれEclipse使ってるけど49の方法でできたなぁ。
>起動中に例外が発生しました
>理由:
>リモートVMに接続できませんでした。接続は拒否されました
きっとconection refusedってやつだよね。
リモートデバッグってTCPポート使ってるんだっけか?
パーソナルファイヤーウォールとかが原因だったりしない?
>>59 再起動とか?
>>58 それ系は入ってないんですけどねー
ポートの指定がありますけど、何番にすればOKなんでしょう?
InputStream inputstream = Connector.openInputStream( "resource:///text.txt");
これをやろうとすると
Exception: java/lang/ClassNotFoundException: com.nttdocomo.io.X900i.resource.Protocol
javax/microedition/io/Connector.openPrim (static) +102
javax/microedition/io/Connector.open (static) +15
javax/microedition/io/Connector.open (static) +6
javax/microedition/io/Connector.openDataInputStream (static) +10
javax/microedition/io/Connector.openInputStream (static) +4
K.A (virtual) +53
こんなエラーが出てしまうのですが、どうやったらresフォルダにいれた
text.txtを読みこむことができますか?
Classが見つかりません。と書いてある。
つまり
import com.nttdocomo.io.*;
を行っていないのではないかな?
すいません、上記のエラーは出ているようですが
inputstream.read()したら問題なく読み込めているようです。
お騒がせしました
64 :
デフォルトの名無しさん:04/08/09 11:24
Felicaの開発してるんですが、誰かやったことある人いませんか?
エラーになって困ってます。
try{
Felica.open();
FreeArea fa = Felica.getFreeArea();
byte[] readData = fa.read();
Felica.close();
} catch (FelicaException fe){
System.out.println(fe.toString());
} catch (IOException ie){
System.out.println(ie.toString());
}
上記コードの「fa.read()」でエラーが発生してしまいます。
マニュアルと同じ様にやってるんですけど、
経験者がいたら教えてください。
お願いします。
>>59 パッケージエクスプローラーで、プロジェクトを選んだ状態にしてない、とか。
あとはプロジェクトがDoJaプロジェクトじゃない、とか。
>>64 エラーがでてるならその内容を正しくかかんと
答えをもらいにくいよ
67 :
デフォルトの名無しさん:04/08/09 14:40
>>64 自己レスです。
色々調べた結果、Felica用のデータをきちんと作成しないといけなかった
ようです。
Doja3.0(Ver3.2)の「仮想フェリカデータファイルビューワ」を使って、
ADFで設定した「FeliCaCPID」と「FeliCaPin」を特定のエリアに書かない
といけないんですね。
Dojaのマニュアルに書いてありました。
エラーは、要約すると「読込みエラー」でした。
>>59 当方同じ環境だけどうまく動いてます。
メニューそのものが無い場合はきっと手順抜けです。
PDFのマニュアルを良く読みましょう。
メニューがあるけど選択できないなら
>>65さんので解決すると思う。
プロジェクトを選択してメニューを見てみよう。
>>65 >>68 レスありがとうございます。
いろいろいじってみたところ、
どうやら原因はパースペクティブが「Java」だったからのようです。
「Java ブラウズ」にしたら出てきました。
>>70 普通にみれるけど、adobeReaderが入ってないとか?
>>70 対応してないフォントが使われてるか何かってエラーが出るね。
どっか文字化けしてるかもしれないけど、とりあえず文書丸ごと読めないわけじゃないようだ。
対策はアクロバットリーダーを最新にしてみることかな?
・最新版のAdobeReader使ってるけど
>>72のエラーが出る
・AdobeReaderで保存が出来ない
・FORMを使ってるので「右クリックで保存」が出来ない
仕方ないのでソースを見てURL直打ちでirvineで落とした
ダウンロードのダイアログを出したいんだけどどうすりゃいいの?
意味がわからんな。
落としたなら普通にみればいいじゃん。
DoJa-3.5の各機種オプションAPI・拡張API実装状況ってなんでないんだ?
全部実装されてるとみていいのかな?
>>77 パスが通ってないのが問題であれば、Eclipse自体立ち上がらない。
ところで、OSとEclipseのバージョンとDoJaのバージョンとハードディスクの残り容量は?
80 :
デフォルトの名無しさん:04/08/11 10:36
音楽(mld)ファイルをユーザーに選択させるとき
ImageStore.selectEntry() みたいに選択画面を出したいのですが
どうもそれらしき関数が見当たりません。
最初はSoundStoreかと思ったのですがaddEntryしかないし・・・。
ひょっとして自力で作らないとダメですか?
>>77 cygwinが入ってるとうまくいかないってのが前にあったような。
PATHにcygwinが入ってるか確認してみ。
で、cygwinのパスがあったら削る。
83 :
デフォルトの名無しさん:04/08/11 15:03
eclipseでhttp接続が上手くいかない。
Error:java.lang.SecurityException: Illegal PackageURL in ADF
が出ちゃう。
iappli tool kit for doja3.0で実行すると上手くいくんですが、
eclipseだと設定が何か足りないらしい。
ADFのURLは[ウィンドウ]→[設定]のところからtool kitと同じように
http://www.xxxx.ne.jp/xxx/ と書き込んだし、
「プロジェクト名.properties」に「adfUrl =
http://www.xxxx.ne.jp/xxx/」と
なっているのも確認しました。
教えてエロイ人。
あ、もちろんjamでは
UseNetwork = http
になってます。
よろしくお願いします。
>>78 eclipse.exeはJREだけあれば立ち上がるのでSDKに
パスがとおってなくても立ち上がる。普通SDKをインストール
したら、JREもいっしょにインストールされるからね。
最近PATHとかCLASSPATHとか設定しなくなった軟弱モノ。
CLASSPATH環境変数は、JDK1.2のころから、設定するのは非推奨だと思うが。
いまは-classpathオプションでしょう。
いや、コンパイルはantだし、実行はjarかサーブレットだから、オプション使うこともない。
透過色指定できるのは.gifだけ?
プログラム内で作ったImageに透過色を設定する事は出来ないのかな?
だれかわかりませんか〜?
>>90 ネイティブの着メロ領域から選択したいのか?
それは不可能
自力で作るのも不可能だ。そもそもアプリから読めないんだから
ただしjpg画像とかに偽装すればImageStoreで読めると思われ
(偽装の仕方はググってくれ)
>>94 開発ガイド詳細編にそっくりそのまま答えが書いてあることだから。
(pdfファイルを「透明」で検索してみて)
>>89 Doja3.5ならできるよ>TransparentImage
追伸
拡張APIなのでできる端末とできないのがある。
N900iはできない
SH900iはできる
>>95 ということは、質問するときは、開発ガイドを調べた上で、載ってたら初心者スレにいけと。
開発ガイドに載ってないものはこっちで、と。
開発ガイドを調べて載ってて解決したら質問しなくていいだろw
それより載ってないときはどっちのスレに質問すればいいんだろね。
質問内容が初心者的かどうかなんて主観の問題じゃん。
>>99 そう。
だから、開発ガイドに載ってるのだから初心者向けへ、という
>>93への皮肉ということで。
基本的には初心者スレをわけるのは反対というか、ただ分散するだけで、あまり機能しない/してないと思ってる。
開発ガイドを見ても意味が分からない、開発ガイドの見方・調べ方が分からない。
そんな人だからこそ「初心者」と呼ぶべきなのかも知れない。
皮肉なのかも知れないが、基本的には
>>95の心構えで良いと思う。
「載っているようですが、○○の意味が分かりません」という質問なら初心者スレも
後人のための良スレとなるかも知れん。
過去レス見てから質問するような立派な初心者ばかりではないのです
103 :
デフォルトの名無しさん:04/08/17 13:48
通信するアプリで自分が送受信したパケットをカウントする方法ってあります?
送った文字数とかリクエストしたアドレスからとかである程度はカウントできそうですけど、
なるべく正確にカウントしたいのですが
1パケット128バイトだ。計算しる。
>>104 どこのデータとって数えたら一番効率がいいかなぁ
ヘッダとかもあるし。
ヘッダとか除いた価格だと思ってたんだが。
>>106 ドコモはヘッダを含めた価格です。
auは確か含めなかったカナ?
LastModified をアプリから知る方法ってありますか?
できたら DL 用の html や jam の AppParam に埋め込んだ物を取得するのではなくて jam の LastModified をそのままアプリから知りたいのですが。
>>108 そうなのか。auはその辺もアピールできないと損だなぁ
eclipseでビルドするとDoJaでビルドするより1割位クラスファイルがでかくなるな…
ソースの記述だけにしといた方が無難っぽい。
112 :
デフォルトの名無しさん:04/08/18 22:16
スクラッチパッドから壊れてしまっているgifを↓のような感じで
読み込もうとすると
MediaImage mi = MediaManager.getImage("scratchpad:///0;pos=" + (??));
例外もなくそのまま止まってしまうようなんですが
何か回避策などありませんでしょうか?
どうもN505だとちゃんと例外がでるようなんですが
D505だとほとんどの場合フリーズしてしまう感じなんですが・・・
>>111 eclipseはデフォルト設定だとデバッグ情報全部付加するからね。
>>112 なぜ壊れているのかを調べる方が先だと思うぞ。
自鯖経由でどこかから拾ったとかの理由で壊れているかどうか分からないなら
APIリファレンスによるとIllegalArgumentExceptionを吐くらしいのでそれを調べよう。
それでもダメならgetImageする前にbyte[]に書き出して解析しなさい。
gifの仕様書はググれば直ぐに出てくる。
その気になれば展開ルーチンも自作できるはず。
もし鯖経由で拾ってるなら鯖側でgifのチェックをした方がいいかもしれない。
GIFが壊れてるかどうかなんて、適当な画像ビューワで表示させれば済む話じゃないの?
あるいはImageMagickのdisplay -vとか?
>>113 デバッグ情報全部切っても、ほんのちょっぴりとはいえ、コードが大きくなるみたいだね、JDTは。
その分実行速度とかに恩恵が回ってるのかもしらんが、よくわからん。
どうもJDTが吐き出したJARだと、JavaBlenderとか使う時に変な最適化というか、
ぶっちゃけて、たまに動かないバイナリが作られることがあるみたいなのが気になる。
JDTのせいじゃなくって、この種の最適化ツールが局所的なバイトコードの
並びに依存してる場所があるせいなんだろうけど。
もちろん、漏れの言いがかりの可能性も高い。
誰か詳しいレポきぼん。
何でGIFが壊れるのかね?
そっちの方が問題だろ
それはそれとして、D505iは糞だから何が起こっても不思議じゃないよ
118 :
デフォルトの名無しさん:04/08/19 08:13
>112
スクラッチパッドにgifがあるってことは、ネットワークからの受信かな?
だったらCRC付加してチェックしたほうがいいんじゃない?
>>111 公式ドキュメントにもリリース時はDojaでビルドしなさいって書かれてるね
>>118 データが通信中に化ける事は無いが、「ただ今込み合ってます」みたいなHTMLになる事はある
だから、データにヘッダか何かを付けてそれをチェックするように作るべし
CRCでもいいけど、そこまでしなくても問題ない
GIFファイルなら、データの頭が"GIF"かどうかを調べれば十分
レスありがとうございます。
>118
はい、ネットからgifをダウンした際にデータに欠落やゴミが
入った場合などを想定してテストしてました。
なので予め壊れたgifをサーバに置いて、それをアプリで
DLしてチェックしてました。
さすがに1バイト目から壊れている(不正な)場合は
D505でもちゃんと例外をスローするようなんですが
データの途中がおかしい場合はフリーズするときがある感じです。
>120
>データが通信中に化ける事は無いが
これってホントなんでしょうか?
やっぱり独自にCRCとか入れてチェックするのが
正攻法なんでしょうかね・・。
ほんとです
>>121 チェックサムぐらいでいいと思うよ。
lengthチェックして問題なくても実際には
データがぶっ壊れてることがあるみたいだしなぁ。
504iで十分でしょ。
>121
スクラッチに保存した時点でデータが壊れているのは絶対さけないといけないと思う。(壊れているデータを保存しちゃだめ)
受信データが大きい場合、504なら10KB単位で、505なら20KB単位でCRCをチェックして、
正常ならスクラッチに保存、ダメならリトライ。
ちなみにリトライはユーザーにするかどうか確認したほうが親切かな。
ユーザーがいる場所が悪いかもしれないから。
ちなみに商用アプリはCRCとっている場合が多いよ。(石橋たたいて渡る)
個人的な経験ではデータ化けはまだ経験していないけど、データが欠落したことはあったので、
受信データの受信総容量は最低でもチェックすべきかと。
ALERT: Bad method signature
ってのが出て来るんだが、なんだこれ?
catch出来ないし、呼び出してるメソッドはただのコンストラクタだし
原因がわからん。
こんどはIApplication#start()にくるまえに
ALERT: Invalid constant pool entry
が出てくる・・・
今までこんなことなかったのに
TCP/IPつかっててデータが化けることはないだろ。。
でも無線部分で何やってるかはわからんか。
>>126 ALERTはExceptionだからcatchなんかできるわけないだろ
>>126 エラーメッセージに書かれてるように、シグネチャーがcallerとcalleeで一致してない。
>>127 こっちは、実行しようとしてるクラスファイルが壊れてるって意味。
間違ったライブラリbootclasspathなりclasspathに通してるか、
バグった圧縮ツールとか使ってクラスファイルの構造が壊れてるのか。。
まず、ふつうにDoJaの公式エミュレータでコンパイルして動くかどうかやってみるのが良いと思う。
>>125 >>128 確か過去スレで答えが出てる。
iアプリの通信はエラーフリーで、データ化けは考慮しなくていいはず。
132 :
デフォルトの名無しさん:04/08/20 00:18
おサイフケータイ(Mobile FeliCa)のフリー領域に PaSoRi を使ってアクセス
するための、支援ライブラリ(DLL)を作ってみました。
フリーソフト作者のみなさんに利用してもらおうと考えているのですが、
一般に公開する前に、試しに使ってもらえる香具師いませんか ?
133 :
デフォルトの名無しさん:04/08/20 00:41
>>67 そうなんですよね。
実機だと ADF で指定した CPID と PIN を、自動的に FeliCa チップに書き込んで
くれるんだけど、 Doja だと自分で仮想 FeliCa に書き込まないと認証エラーに
なっちゃうんですよね。私もはまりました。
あと、外部 R/W からアクセスする時、どういった手順で PIN 認証を行うのかが
記載されてないのでちょっと不親切。
write_block_without_encryption じゃなくて、rw_write_block_without_encryption
を使わないとエラー・ステータス返すし。
>>129>>130 レスども
色々思考錯誤して原因判明
自分でPaletteってクラス作ってたんだが
どうやらこれをcom.nttdocomo.ui.Paletteと勘違いしている模様
Paletteを使うクラス(A)では何もインポートしてないんだけど
Aを使うクラスでcom.nttdocomo.ui.*でインポートしてたのがいけなかったようだ
と思ったら違った。
うっかりPaletteクラスのあるメソッドにfloat使ってた。
アホだな、俺
>>131 エラーフリーかもしれんが、
「サイトが混雑してます」というのを返してくれることがあるから、
エラーと区別できないんじゃなかったか?
>>136 それは中身を見れば解決できる。
今回の場合は、120さんの言うように先頭が"GIF"かどうか調べれば十二分だ。
自分でチョン切ったデータなら、先頭数バイトにお好みでFOURCCでもなんでも書いといて
それだけチェックすればOK、でFAだったかな。
実行速度速くしたきゃbyteで足りるところでも
intで計算したほうがはやいかな?
ご自分でお計りなさい。
143 :
デフォルトの名無しさん:04/08/22 12:46
>>139 おっつー
俺も研究してみよ
まだFeliCa端末も浸透してないのでキツイかも知れませんが
またーりと長い目でがんばってくらはい
突然失礼します。
携帯用iアプリを制作していますが、障害物判定が希に抜けてしまい、全然ダメダメで....
5万程度で、誰かバグフィクスお願い出来ないかと思い書き込みしたのですが。
どなたか、お願い出来ませんでしょうか?
こんなところで募集するとは、ある意味すごいな
>>144 その程度の処理で問題が出る程度のコードは他の部分も目も当てられない
状態に違いない。
そもそも、障害物判定なんて、
iモードやjavaなんかと関係なくアルゴリズムの部分だから
ややスレ違い風味かと。
カネ出してバグフィックス頼むってことは、カネもらってやってるんだろうなぁ。
フレームレートが低すぎて
障害物突き抜けちゃってるんだろうなぁ…
>>144 募集する気があるなら捨てアドぐらいはっとけ
一番安直な方法
ゲームの速度を1/Nにして、Nフレーム分の演算→描画→(繰り返し)
恐らく描画が一番重い処理なので数フレームくらいなら平気
気軽にメールお願いします〜
浮動小数点使えないところは、自前でなんとかしろよ。
>>144 ソース貼りゃ、誰か暇なやつが勝手に修正するだろうよ。
自前で何とかするしかないのでしょうか...うーむ。
貼るのは少し抵抗が有りますので、誰かメール送って頂けませんか?
@hotmailでも何でも良いので、見てくれるだけでも....
正直、俺には限界です(;´Д`)
>>144 甘ったれたこと言ってるなよ、勘違いも甚だしい。
あんたが言ってることは「お金あげるからプログラム作って」と同じ。
それならよそのスレ行って募集しろ。
アドバイスもらって自力で解決する気があるならこのスレでとことん聞け。
ソースはどこかアップローダを利用すればいいじゃないか。とりあえず頑張ってみろよ。
と、叱咤するだけじゃなんなので簡単なパターンを書くからちょっと待ってて。
すっぽ抜けのパターンは大抵この2つ。
1.当たり判定で座標計算そのものを間違えている
2.キャラの移動と当たり判定の処理順がおかしい
1.のパターン
キャラAがキャラBの手前から向こうへ移動しようとするとき、
移動量がキャラBの大きさより大きくて、キャラAがキャラBと
重なることなく向こう側へ行ってしまった場合。
このように移動量が対象物体より大きくなる可能性がある場合は、
単純に移動後のキャラAとキャラBの座標を比較するのではなく、
キャラAの移動前後の座標とキャラBの座標をそれぞれ比較して
当たったかどうか(追い抜いたかどうか)を判定する。
2.のパターン
キャラAの移動→キャラBの移動→当たり判定の順だとすっぽ抜ける。
キャラAの移動→当たり判定→キャラBの移動、の順にして、
キャラAを移動させてキャラB(移動前)と当たっていればキャラBの
移動処理を行わないようにする。
キャラA、キャラBがそれぞれ複数ある場合(シューティングの自弾と敵機)、
ともに当たり判定のフラグを持っているとその後の処理がやりやすくなる。
自弾(キャラA)を移動して、当たり判定をして、当たった自弾と敵機(キャラB)
双方の当たりフラグを立てる。
キャラの生死や描画/消去はこのフラグを見ればいい。
実際にはソースを見ないと何とも言えないけど(ぶっちゃけ見る気はないけど)。
まさか2つの領域(四角形領域)の重なりを判定する式自体を間違えているとかは勘弁な。
>>162 もう一つ可能性を挙げてみる。
3. 1フレームあたりの移動量が当たり判定サイズと比べて大きすぎる
この場合、領域同士の重なりで判定するんじゃなくて、線分同士の交差
判定などで取る必要が出てくる。
>>163 あ、そうです。
>>162の1.のパターンは
>>163ってことが言いたかったのです。
分かりづらくてすみません。座標じゃなくて領域って言葉使えばよかったんだな。
大変、参考になります。
募集するだけだと自分の進歩有りませんよね。
少し頑張ってみます。
よーし、ガンガン質問するぞーw
あー、盛り上がってるところ悪いんだけど、ここはiモードスレなんで、
あたり判定とかはアルゴリズムスレに行ってくれないか。
167 :
デフォルトの名無しさん:04/08/24 10:56
金で解決ぶぁいやいやい〜♪
VBとDelphiとC++Builderしか使ったことのないあっしでも携帯javaアプリは作れますか?
C++がわかってればjavaは容易いが、
携帯のお約束は思った以上に多いので、
頑張り次第といったところか?
まあ、その辺は本がいっぱい出てるから参考にするのもいいかと
>>168 (´-`).。oO(あつしの使ったってレバルが気になるな…)
(´-`)つ[どこから突っ込んで良いものやら]
(´-`).。oO(漏れとかgccしか使ったことなかったが…)
ついでにbyteで配列持つのとintで配列もつのも比べてみよう。
携帯はメモリが少ないから出来るだけ配列は考えて作ったほうがよろしいですな。
byte[]で済むなら素直にbyte[]にするべき。
速度が気になるならアルゴリズムを見直した方が速かったりするし。
どうでもいいけどなんでjavaってunsingedがないんだろう。
unsignedだったよゴメン
2chブラウザだから予約語扱いされなかった
>>175 ところがぎっちょん、初期化済み配列については、
byteの方が遥かにかさばったりする。
javacが定数の展開をしてくれず、初期化済み配列も、実際には
さっきキャストが発生すると書かれていたbyteへのキャスト命令を
大量に織り込んだ形で展開されてしまう。
ついでにzipの圧縮効率も落ちるため、時としてJARのサイズに
致命的なまでの違いを生む事がある。
この種のデータが重荷になるなら、生バイナリとして外部に出してしまい、
別途スクラッチパッドに読み込んだものを展開して使うのが常道
…だったんだけど、この辺の事情はどうなったんだろうね、最近。
相変わらずでつか?
色んな機種のキーの同時押しの可否について知りたいんだけど…
とりあえず知りたいのは十字キーの斜めとテンキー(#*含む)のどれか1つとの同時押しが可能かどうか。
ん・ぱか工房の機種依存情報にもある程度載ってますが、
そこに載ってるの以外でも、例えばN505iはできないらしいです。
N900iも無理ですが、ニューロポインターとの組み合わせならできるみたい…。
他、情報がありましたらよろしく。
>>178 ドキュモのサイトで機種別情報をPDFで落としてきて、細かくチェックしる。
>>177 classファイルには、バイト列のデータをそのまま貯蔵しておくような場所が無いからねえ。
解決はできないと思われ。
唯一の例外は文字列なわけなので、どうしてもそういうことしたいなら、がんばって
2バイトずつくっつけたUnicodeの文字列としてコードに埋め込むのかなあ。
で、getChars()で処理すると。
>>175 漏れもunsigned欲しい。
せめてbyteはunsigned使えるようにして欲しかったなり。
>>178 キーの同時押しはCanvas#getKeypadState()使て自力で判定しる。
機種依存がどうこう考えるまでもないだろ。
getKeyPadState()での同時押しに問題が出るのはDシリーズの
123キー、456キー、789キーが同時に2つ以上検出できないのだけじゃなかったか。
Nのは聞いたこと無いなあ。
すまんが情報の持ち合わせが無い。漏れがN504と505でアプリ書いたときには、
特に問題が出た記憶はないが、テンキーと十字キーの同時使用は考えなかった。
(つか、内部でテンキーと十字キーを同じ扱いにしてた)
あまり機種依存ではまるのが不安な様なら、UIの設計変えるのも検討した方が
いいかもしれないと思えるいけど…。
そもそも斜めキーがない端末多いし
>>184 その問題はD504iのみだね。504iの「iアプリ作成に関する注意事項」に書いてある。
123、456、789、*0#、それぞれの組内で同時押しが判定できない。
FeliCaで質問です。
お店とかでリーダーにかざすだけで会員証登録できたりしたら便利だなー なんて思うのですが、
メールアドレスとか電話番号とかを吸い出すことってできるんですかね?
iアプリを使えば可能??
タイーホ
先にこっちだな
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| 通報しますた
\
 ̄∨ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧ ( ´Д` ) < 通報しますた
( ´Д` ) /⌒ ⌒ヽ \_______
/, / /_/| へ \
(ぃ9 | (ぃ9 ./ / \ \.∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄
/ /、 / ./ ヽ ( ´Д` )< 通報しますた
/ ∧_二つ ( / ∪ , / \_______
/ / \ .\\ (ぃ9 |
/ \ \ .\\ / / ,、 ((( ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄
/ /~\ \ > ) ) ./ ∧_二∃ ( ´Д` ) < 通報しますた
/ / > ) / // ./  ̄ ̄ ヽ (ぃ9 ) \_______
/ ノ / / / / / ._/ /~ ̄ ̄/ / / ∧つ
/ / . / ./. / / / )⌒ _ ノ / ./ / \ (゚д゚) ツーホーシマスタ
/ ./ ( ヽ、 ( ヽ ヽ | / ( ヽ、 / /⌒> ) ゚( )−
( _) \__つ \__つ).し \__つ (_) \_つ / >
190 :
デフォルトの名無しさん:04/08/31 10:28
個人情報を無断で取り出そうとしてるからだろ。
情報提供。
仕様書に書いてあるかもしれんけど、携帯のHTTP通信のタイムアウト時間は1分ジャストっぽい。
HTTPをサーバー側で保留して行う擬似リアルタイム通信の際注意すべし。
>>191 会員証登録って書いてあるんだから無断じゃないじゃん
今までわざわざ紙に書いて貰ってたステップを省きたいってことだろ??
>>193 他人のふりして擁護しなくていいから。
会員証登録ってなんだよ。Felica利用のついでに勝手に電話番号とかとられたら嫌だろ?
あほか
イヤとかそういうこと以前に、技術的に可能なのかどうなのかを聞いてると思うのだが。
ヨドバシとかビックのカードもFelicaだろ?
個人情報とか抜かれてるのかな?
>>195 だから他人のふり擁護はしなくていいから。
利用者が嫌と思うようなことが、簡単に出来る仕組みなわけねーだろ。
>>187 まず、Mobole FeliCa の領域を確保するためには、そのエリアを管理するための iアプリが必須。
Mobile FeliCa は、R/W から見れば、普通の FeliCa としか見えない(単なるメモリにしか見えない)
から、IrDA みたいに IrOBEX を使ってアドレス帳とかが読み取れるわけではない。
R/W 側から特定のiアプリの起動要求をかける手順が規定されているから、その FeliCa 領域を
管理する iアプリを立ち上げて、マルチ CPU システムが 2 Port RAM 経由で通信を行うような
手法を使えば、アドレス帳の内容を転送できるかもしれないけど、トラステッド iアプリじゃ
なきゃアドレス帳にアクセスできない。
そもそも、聞く前に
「iアプリコンテンツ開発ガイド for DoJa-3.0 iアプリオプション・iアプリ拡張編」ぐらい
読めや。DoCoMo のサイトから誰でもダウンロードできるし。
これの「第16章 FeliCa チップ」の項目な。
ってかFeliCaにXString食わせるのってできない希ガス
結論
iモードFeliCaでも電話番号やメアドを抜く事はできない
転送できないようにXStringになってるのに、抜けるわけないじゃん。
XStringって、うまく考えられた仕組みだよね。
>>196 抜かれる前に、普通に登録して教えてるだろ。
>>202 CLDCにSerializableが無いからこそ出来た技だもんな。
>205
M3。
でも高いね。
自社で揃えることもある。
>>207 200台維持すること考えれば、安いかも。
着メロでも作ってなきゃ元とれんよ。
そんなに念入りにチェックしないなぁ。
素直な機種と、そうでない機種があるから、素直じゃない機種はそろえてるけど。
Vodafoneはチェックシートに「発売されている全ての端末で正常に動くことを確認した。○or×」なんてあるのが
すげーむかつくんだよな…。
調べられるかボケ。
>>208 iアプリだと、30機種ぐらいか?
それでも自社で持ってたら、すげぇことになるな。
業者のところに出向いて自分らでテストしてる。
テストは一日で終わるよう綿密な計画を立てて。
でも、結構楽しいんだよな、これ。いろんな携帯さわれるし。
まあ、発売された端末のテストは、楽でいいだろうね。
発売されてない端末のテストは、端末かアプリかどっちが悪いかわからんから楽しくない。
213 :
デフォルトの名無しさん:04/09/02 21:46
CanvasでGIFアニメを動かすことは可能でしょうか。
できない場合は、GIFアニメを1フレームずつGIFで持たせて
1枚1枚表示させる方法にすればよいですか。
>>206 そういやimplements Serializableしなきゃだめなんだった。
初心者用スレと同一人物か?全く同じこと出てるぞ。
216 :
デフォルトの名無しさん:04/09/02 23:37
>215
ども。
>>205 この手のサービスって東京でしかやってないのかなあ。
3.0以降ってjpg読み込み全機種対応してんだっけ?
もうちょっと聞く態度というものを磨け。
2.0から全対応。
流石に同一人物ではないだろうが、煽りをわざわざ召喚しないように
>>219
端末の処理速度もっと速くならないかなあ。
RPG作ってるんだけど、マップのレイヤー処理は諦めざるを得ない感じ。
20fps(50ms)を維持しようと思ってるんだけど、これだと背景一枚とNPC描画が限界だよ。
10FPSに落とせば?RPGだし。
絵がそれで倍描けるなら、トレードオフを検討してもいいと思うけど。
224 :
デフォルトの名無しさん:04/09/08 10:57
今度メッセージiアプリをFOMA専用アプリで使うことになったのですが、
送れるメッセージの量が不明瞭で困っています。
MessageDraftのsetDataの例外発生条件には
・メッセージiアプリのメッセージの仕様に準拠していない場合に 発生します。
任意のバイナリデータが設定可能のため、
実際にはサイズ超過の違反のみが該当します
とあるのですが「メッセージiアプリのメッセージの仕様」自体が見つかりません。
企画段階で容量限界のあたりをつけなければいけないのですが、
ご存知の方いらっしゃいませんでしょうか?
誤魔化してなんとかレイヤー処理出来るようになりました。
for二重ループも使い方次第だね。
重いところは16fps位まで落ちる事もあるけど…
>>223 それも考えたんだけど、出来るだけ滑らかに動かしたかったので…
>>225 既にやっていますた。
ちなみに端末はSH505iで、16*16チップを15*15*2layer並べてます。
(下層と上層に分けて、人が建物の影とかに隠れるようにしてる。)
('-`).o0(今更Dシリーズのことなんて言えないよな…)
> ちなみに端末はSH505iで
機種間の差が凄いぞ
他の機種でもやってミソ
マップチップ16*16って、そんなに小さく分ける必要あるのか?
16*16チップを4つ組み合わせた32*32チップを用意して、それで描いた方が良くない?
>>224 うーん?
DXの契約すれば教えてもらえるんだろうと勝手に想像してたのだが、そうではないのか。
今900i用のピンボール作ってるんだけど、
FPSてどれくらい出てればそれなりに見える?
JAVAでずっと画像が動くアプリとか作ったことないからよくわかんなくて。
ちなみに今10〜18(ちょっと画面ごとにばらつきがある)
D900非対応が、いまの流行。
まーFPS10出ればゲームになるね。
15だせばがんばってる。20だせばすげえ。ってくらいか。
会社から書き込めなかった・・・。
>>234 あーやっぱそんなもんか。
描画だけで60ミリ秒超えるもんなぁ。
どうしよ・・・。
DoJa3.0っていつの間にverUpした??
DoJa3.5と見た目変わってるし…
どうせなら3.5も統一してよ。。
>>232 機種は?
Dはともかく、それ以外の機種で10fpsそこそこってのは、さすがに描画周りの
組み方を見直したほうがいいと思う。
>>77 亀レスですが・・・
自分も今日、同じ状況におちいってしまいました。
いろいろいじくった結果解決しましたので自分の場合の解決策を書き込んでおきます。
■com.nttdocomo.eclipse.DoJaBuildException何たら
というエラーが出て実行できない。
→環境変数でj2sdkのbinにpathを通す。
■エミュレータ動いたっぽいが「AppName の値がありません」
というメッセージがコンソールに出力されてエミュレータ実行終了。
→jamにAppNameの情報を追加、ついでにAppClassの情報も追加する。
■エミュ動くもスクラッチパッドの保存できず。
→jamにSPsizeの情報書くの忘れてたので追加する。
■そういやADF設定してなかったなと気づく。
→
http://www.okisoft.co.jp/esc/i-appli.htmlを参考にADF設定できるよう エクリプスの設定を変更する。
つーかみんな思ってたよりFPSあげる努力してるね。流石だ。
漏れなんかいままで書いたアプリ、全部10FPS固定だわ。
N504に合わせて…。
>>237 機種はFかな。
高さ480ドットのフィールドでボールが真ん中に来たときに画面を上下切り替えしてる。
FPSは上は10〜15くらい。
下が15〜20になってる。
条件の判定と描画の処理しかしてないんだけど速度でないんだよね。
Fは結構優秀らしいからこれしか出てないのはちょっとショックだったり。
>>241 F900iでそれだとずいぶん遅いなぁ。
おかしなことしてなけりゃもっと出るはず。
とりあえず、以下の実験をしてみるといいんじゃないかな。
1)Graphics#drawImageで1枚どーんと描く
2)Graphics#drawImageでチップを並べて描く
3)Graphics#drawSpriteSetで1枚どーんと描く
4)Graphics#drawSpriteSetでチップを並べて描く
チップを並べる場合は、チップのサイズと数を何種類か試してみるといい。
16*16でマップチップ埋め尽くしてみたけど、ガクガクだな。
10fps出てるかどうかすら怪しいわ…。
ドラクエとFFってチップサイズいくつ?
>>242 まあ盤面だけじゃなくて、アニメーションさせたり、点滅させたり、
レイヤーみたいなものもあるからなぁ。
とりあえず一番でかい盤面はdrawImageでチップを並べるように書いたらどの数、サイズでも1回で書くより遅かったんだよねぇ。
レイヤーとかがやっぱ遅いかな。
まあとりあえず今度drawSpriteSetを試してみるわ。
ありがとー。
drawImageは実行する回数が増えると劇的に遅くなるぞ。
一度に描画するサイズによる速度差は意外と小さかったりする。
505iと900iでのdrawImageは
どのくらいの速度差があるものなの?
>>243 チップサイズは知らんがDQ,FFはImageMap使ってると思われ
そこで擬似BG面ですよ。
>>245 そうだねー。
ただ、N/P系とF/SH系でこの辺の癖が違うんだよなー。
DoJa3.0/3.5の全機種についてタイマー解像度や
描画更新可能な最小時間を調べた資料が欲しいよ。
後者はこういう意味。
>>239が言うようにN504ではpaint()を仮に10msごとに呼び出しても
毎回描画内容が反映されるわけではなく、100msごとにしか反映されない。
P504だと50msごとに反映できる。そういった時間のこと。
(確か必ずしもタイマー解像度と一致しないと思った)
別にFPS計算しながら描画処理すればいんじゃないの
N504の100msは描画についてのことじゃないし
アプリックスと提携結んだから、901iからは全機種統一されるのでは?
ドコモは動作性能がメーカー依存なところがかなり痛い。
基本と拡張の実装状況も不明瞭で分かりにくい。
ImageMapが速いと聞いたんで使ってみようかと思ったら
setImageMap(int mapWidth, int mapHeight, byte[] data, Image[] images)
Image[] imagesかよ…
チップ毎にイメージ作ってる余裕なんてないよ。
ツカエネ
>>253 しかも言われてるほど速くもないしな。
N900iで試してみたら大惨事。SHとかFだと速いのかなぁ。
eclipse3.1にDoja3.5なんて突っ込んでるから自業自得なんだけど、
The project was not built since its build path is incomplete. Cannot find the class file for java.io.Serializable. Fix the build path then try building this project
とかいってビルドできなくなっちまったよ。
eclipse3.0の時にはできてた気がするんだけどなあ。
誰か詳しい人、おられませんか?
普通のJavaプロジェクトは問題なく動作するし、なんなんだろ。
>254
やはり機種毎に描画方法変えないといけないのかねぇ…。
SHだとImageMap使わないと半分ぐらいにフレーム落ちするけど、
N/PだとdrawImageの方が良いのかな?
>>256 ループぐるぐるでdrawImageするよりはImageMapの方が速い。
ただ、何にせよN/Pは描画アクセラレータの関係か、描画する
Imageの数が多いとやたら遅くなる。
その代わり描くImageの面積が広くてもあまり負荷が増えない。
drawSpriteSetを使うと速いんだが、それだと画像の転送量がある程度
以上増えると描画が乱れてしまうorz
だからそこで擬似BG面(略
キャッシュ用のオフスクリーンイメージを持つ自前ImageMapを構築するのですよ。
描画時には4回のdrawImageで循環スクロールも可能。
DirectDrawなんかでよく使われてた手です。
こっちのほうが速くて取り扱いが素直なんで、はっきり言ってImageMapクラスは無用。
こんなクラスを作る。
import com.nttdocomo.ui.Graphics;
import com.nttdocomo.ui.Image;
/*
* ゲームの背景に使用する、16×16ドットのパターンを組み合わせたイメージを保持するクラスです。
* 家庭用ゲーム機においてBG面と呼ばれているものにほぼ相当します。
* マップは20×20パターンで水平・垂直方向に循環していて、
* ドット単位で任意の座標から表示できます。
* パターンには256×128ドットのパターンセットイメージを使用し、
* 左上から順番に、パターン0〜127に割り当てられます。
*/
public class Bg {
private Image cacheImage;
private Graphics cacheGraphics;
int[][] map = new int[20][20];
private Image patternSetImage;
public Bg(Image patternSetImage) {
this.patternSetImage = patternSetImage;
cacheImage = Image.createImage(320, 320);
cacheGraphics = cacheImage.getGraphics();
}
public void put(int x, int y, int pattern) {
x %= 20;
y %= 20;
// 既にキャッシュイメージに同パターンが書き込まれているなら更新しない。
if (map[y][x] != pattern) {
map[y][x] = pattern;
int sx = (pattern & 0xf) << 4;
int sy = (pattern >> 4) << 4;
cacheGraphics.drawImage(patternSetImage, x << 4, y << 4, sx, sy, 16, 16);
}
}
public void draw(Graphics g, int x, int y) {
x %= 320;
y %= 320;
int dx = 320 - x;
int dy = 320 - y;
g.drawImage(cacheImage, 0, 0, x, y, dx, dy);
g.drawImage(cacheImage, dx, 0, 0, y, x, dy);
g.drawImage(cacheImage, 0, dy, x, 0, dx, y);
g.drawImage(cacheImage, dx, dy, 0, 0, x, y);
}
}
これでRPGのマップなどをスムーズスクロールさせた場合、
1フレームあたりのdrawImageの平均呼び出し回数は、ほぼスクロールするドット数+4回。
あ、ちなみに
> ImageクラスのcreateImage()メソッドで作れるイメージの最大サイズは画面サイズ。
とかいうふざけた機種(DとかDとかDとか)ではそのままでは動きません。
ていうか、こんなもん容赦なく切り捨ててやるのがメーカーへの親心だと思います。
まあ、対応してもクラスサイズが約300バイト増えるだけですけどね。
>>258 これってさ、320*320のイメージ作ってるけど16ドット*20チップの意味だよね?
100*100のマップとかはどうするの?
patternSetImageてのはマップチップの事?
ファミコンみたいだな
>>263 > 100*100のマップとかはどうするの?
もちろんスクロールにあわせてputで描いていくのですよ。
> patternSetImageてのはマップチップの事?
イエース。これってなかなか共通の言葉がないんだよなあ。
あまりコード書くと正体バレそうだけど、まあいいや。例えばこのようにして使います。
// マップデータ
byte[][] map = new byte[MAP_WIDTH * MAP_HEIGHT];
final int PATTERN_WIDTH = 16;
final int PATTERN_HEIGHT = 16;
...
// メインループ内の背景描画
// BG面の描画範囲を決める。mapX、mapYはマップ表示座標(ドット単位)
int x0 = mapX / PATTERN_WIDTH;
int y0 = mapY / PATTERN_HEIGHT;
int x1 = (mapX + WIDTH - 1) / PATTERN_WIDTH;
int y1 = (mapY + HEIGHT - 1) / PATTERN_HEIGHT;
for (int iy = y0; iy <= y1; iy++) {
for (int ix = x0; ix <= x1; ix++) {
// 表示される領域を描画
// Bgクラスのキャッシュ機構で、drawImageの呼び出しは最小限に抑えられる。
bg.put(ix, iy, map[iy * MAP_WIDTH + ix]);
}
}
bg.draw(g, mapX, mapY);
>>258 チップの置き換えが起きるフレームと起きないフレームで処理速度が変わっちゃう
のはもう仕方ないよなw
ウェイト入れるしかないね。
>>258 さっそく実装してみたら40msぐらい速くなった。
いやーチップに切り分けた背景表示は重くなるから困ってたんで
たすかった。アリガトン!
問題はボーダフォン50kにどうやって対応するかだな・・。
>>267 一応描き換えを分散させる手もあるけど、ちょっと面倒くさいね。
>>266 ばれるとしても、身内にしかばれません。
誰も答えてくれないから自己レスしちゃうもん。
エラーのとおりjava.io.Serializableを解決するべく
本来JRE_LIBとして予約されてるはずの
C:\j2sdk1.4.2_05\jre\lib\rt.jarを改めてExternalJarとして追加するだけ。
ついでにJDK Compilance のコンパイラ互換レベルを例によって1.3に落としてやらないと
JAR作るときにおそらくPreverifyに怒られて、サイズ0のJarができてデバッガ使えないよ、と。
チラシの裏に書きますよえーこれからはそうしますよーだ。
マップ読み込み時に全部描くと速度一定に保てるね。
20*20ぐらいのマップだったら1秒ぐらいか。フェードと一緒に処理すればごまかせるかも。
ところで、これってフィールドマップでやろうとしたら滅茶苦茶メモリ食わない?
32*32チップで64*64だと4000000ピクセル以上のImageが…(´д`;)
小さいオフスクリーンイメージでやりくりすると、全部書き直すときに結局遅くなるし…
>>272 全マップを1枚のImageに載せるのは無茶だし無理でしょ。
そんなにでかいImageがそもそも作れなかったりするし。
(Dは240x240,N/Pは320x320が限度)
というか、
>>258のは、そもそもそういう無茶をせずに済むように
するためのテクニックだと思うんだがw
> 32*32チップで64*64だと4000000ピクセル以上のImageが…(´д`;)
あの例で言うなら、オフスクリーンイメージのサイズは320x320のまま
巨大なフィールドマップが320x320毎に分割されてて、320x320の額縁がスクロールにあわせて動く、
って考えると解り易いかも?
流れ無視で質問だけど、SH900iて何が遅い?
なんかしらんけどSH900で処理が異様に遅いんだが。
I/Oが遅いらしいてのは聞いたけどたぶん関係ないだろうし。
>>277 ラスターオペレーションとか遅かったはず。
フェードインとかフェードアウトとか、SHはもたつく。
>>277 スレッド関連に癖がある、という話をどっかで読んだ気がする。
複数のスレッドを回してる場合、明示的にThread#yield()を呼ばないと
他のスレッドやCanvas#processEvent()に処理が回っていかないとか
何とか。
Canvas#run()の中だけでぐるぐる回せば、たぶん起こらない。
>>278 >>279 ありがと。
原因わかった。
setSoftLabelを毎フレームやってるとかいうつまんないミスだった・・・orz
てかそれだけでフレーム数が半分とかすげーな・・・。
なにはともあれお騒がせしました。
DoJa 3.5でswingのjavax.swing.JLayeredPaneみたいに階層を指定する方法ってある?
例えばアプリで、ソフトキーでメニュー表示させた後にメニュー閉じるとメニュー開く前に戻る感じ。
メニュー開く前のユーザの入力を一々記憶して、メニュー閉じたらそれを復元する方法しか俺には思いつかん。
クラス2つはもう限界です…
バトルでの変数の管理がきつくなってきました。
HPMPLV力素早さ精神魔力防御力経験値…
多次元配列+static finalフィールドで管理できない事もないけど、
絶対バグの温床になるに決まってる。
バトルクラス作ります。
まだ10KB位だし。
どうでもいいけどインナークラスの方がサイズ大きくなるんだね。
ちょっと意外だった。
>>282 m_anPlyData[DATA_HP] = 0;
m_anPlyData[DATA_MP] = 0;
m_anPlyData[DATA_STR] = 0;
m_anPlyData[DATA_SPD] = 0;
m_anPlyData[DATA_MG] = 0;
m_anPlyData[DATA_DEF] = 0;
285 :
デフォルトの名無しさん:04/09/17 13:23:45
>>281 DoJaのフレームワークというか、クラスライブラリでは用意されていないはず。
ゲーム関係の機能は強化されているんだけど、それ以外はDoJa1の頃から
変わってないね。
>>281 「ユーザーの入力を記憶して」という考え方だと、バグでまくるけどね。
たぶん。
意味ワカンネ
>>282 どんなレベルで作ってるのかわからないが、504以降なら、クラス2個縛りはある種の神話だと思われ。
内容によっては確かにそうしないと実現できないレベルのアプリは存在するし、
その種の追い込みから得られる成果は、元が小さい分無視できないものがあるけど、
たとえそうであっても、最初はそれなりにクラス切ってちゃっちゃと動作するもの作ってから、
稼いだ作業時間で最適化作業はじめた方がいいと思うよ。
あと、ちゃんとオビュファスケータ使ってる?
プリプロセッサの導入は?
289 :
デフォルトの名無しさん:04/09/18 12:06:14
ちょいと質問なんだけど、
メソッド内で一時的に作成したInputStreamは
スコープを抜けたら勝手にクローズされてgc()の時に回収されるのかな?
出来るだけ異常終了しないようにしようと思ったんだけど、
in.close()がIOException吐くから確実に閉じる方法がないんだよね。
どうすりゃいいんだろ?
>>289 実装依存。たとえばIBMのCLDC/CDC実装だとgcのときでも
クローズはなし。
でもin.close()がIOException吐くのは放置OK.
すまん、MIDPスレと勘違いした。
ネイティブリソースだからクローズしないと駄目でしょ。
IOExceptionって、そりゃコードに問題があるのでは?
>>292 いや、実際に吐いたと言う意味ではなくて、
ドキュメントにそう書いてあったという意味。
今までにin.close()がIOExceptionを出した事はないです。
例えば、
try {
InputStream in = hoge(hoge);
in.read(hoge);
in.close();
} catch (IOException e) {}
これでin.read(hoge)で例外が出た場合に、このinはどうすりゃいいのかってこと。
tryの前に InputStream in = hoge(hoge);を持ってきて確実に閉じるようにさせたいけど、
結局
try {
in.close();
} catch (IOException e) {}
になってしまうから閉じる方法が見当たらないんです。
ま、要するにin.close()で例外が出た場合は
そのinはいったいどうなってしまうのか?って事です。
InputStream in = null;
try {
in = hoge(hoge);
in.read(hoge);
} catch (IOException e) {
if(in != null){
try {
in.close();
} catch (IOException e) {//}
}
}
はイディオムかな。
>>290 iアプリでも放置OK?
てことはin.close()で例外がでたらダイアログでも出して
null返してしらんぷりしていいのかな?
いや、いままで例外放置してたんで、
ちょっとまじめに隙の無い実装にしてみようかと思ったら、
in.close()でループに嵌りそうになってしまったもんで…
間違えた。
InputStream in = null;
try {
in = hoge(hoge);
in.read(hoge);
} catch (IOException e) {
//いろいろ
}finally{
if(in != null){
try {
in.close();
} catch (IOException e) {}
}
}
>>294 をを!
なるほど。
ちょいとやってみます。
>>295 CLDCリファレンスより
public void close()
throws IOExceptionこの入力ストリームを閉じて、そのストリームに関連するすべてのシステムリソースを解放します。
InputStream の close メソッドは何も行いません。
299 :
デフォルトの名無しさん:04/09/18 14:45:27
iモード FeliCa で、「外部 R/W からの i アプリ起動」を試そうとして
います。
テスト用のiアプリを書いて、ADF で AllowPushBy = icc:hogehoge と
指定して F900iC でダウンロードしようとすると、「ソフトに誤りがありま
す」と拒否されます。AllowPushBy を指定しなければ、ダウンロードで
きて、i アプリ自身は正常に動作しています。
F900iC は、「外部 R/W からの i アプリ起動」に対応していないんで
しょうか ?
外部 R/W (PaSoRi) からの Push コマンドは、ちゃんと受け取る(エ
ラーステータスは返らない)みたいです。
300 :
デフォルトの名無しさん:04/09/19 01:18:36
現在、Doja3.0の勉強をしているのですが、
iアプリオプションAPIのMathクラスの使い方が良く分かりません。
com.nttdocomo.opt.ui.j3d.Mathをインポートし、単純に
System.out.println(Math.cos(0));
としただけでもjava.lang.RuntimeExceptionが出てしまいます。
そもそも、Math.cos()の引数として
「角度を4096 分円単位(2πラジアンで 4096)で指定します」
とあるのですが、これは10度を現すときは
(int)4096/360*10を引数として渡すと解釈しているんですが、
あっているのでしょうか?
>>301 どうもありがとうございます
無事に動かすことが出来ました
すいません、質問よろしいでしょうか
今までpaintメソッド内で描画をしていたんですが
使いづらいのでpaintメソッド外でlock/unlockで細かく描画をしようと思ったのですが、
どうも上手くいきません。
ちゃんとCanvas#getGraphicsでグラフィックオブジェクトは取得しているはずなんですが・・・
paintで描くのがどう使いづらかったんだ?
うまくいかないってのは、どういう結果になる?
普通にGraphicsに描画すれば何も迷う必要無いはずなんだが。
paintの使い方、根本的に勘違いしてないか?
>>303 まずCanvas継承クラスのメンバとしてGraphics gを宣言する。
(staticにすると良いと思う。)
コンストラクタでg = getGraphics();をする。
paint(Graphics g) {} として、中身を空にしておく。
これでどこからでも使い放題です。
追記
オブジェクト指向にしたい場合はstaticは止めてprivateだけにすると良いと思う。
Canvasは完全に描画のみに絞ってメインループ専用クラスにオブジェクト渡して
MyCanvas m = new MyCavnas();
for (;;) {
m.method1();
m.method2();
m.method3();
}
みたいなのがスマートかな…
>>304 具体的にいうと、何も描画されないのです。
Frame#setBackground()で背景色はでているのですが。
>>305 そのようにしてるのですが、やはり背景色以外なにも描画されていません。
getGraphics()をすればunlockした時点でキャンバスに描かれると色々なページを見て
思っていたのですが、間違っていますか?
とりあえず何か描画させようとした時はこんな感じです。
g.lock();
//lockとunlockの間に描画命令(g.drawImageなど)を行う。
g.unlock(true);
>>307 とりあえず、
public void paint(Graphics g) {}
void draw() {
g.lock();
g.drawString("test", 100, 100);
g.unlock(true);
}
これやってみそ。
あ、もしかしてコンストラクタ内でg = getGraphics();の直後にdraw()を呼び出していて、
しかもDisplay.setCurrent(new canvas());
とかやってないよね?
ディスプレイにセットされてないのに呼び出しても画面に反映されないよ。
とりあえず、これを試してみてくれい。
import com.nttdocomo.ui.*;
public class a extends IApplication {
public void start() {
exCanvas e = new exCanvas();
Display.setCurrent(e);
e.draw();
}
}
class exCanvas extends Canvas {
Graphics g;
public exCanvas() {
g = getGraphics();
}
public void paint(Graphics g) {
}
void draw() {
g.lock();
g.drawString("Hello World!!", 100, 100);
g.unlock(true);
}
public void processEvent(int type, int param) {}
}
ありがとうございます。
>>308さんの指摘どおり、
setCurrentする前に描画テストやってました。
こんな間違いに気づかなかった自分が恥ずかしい・・・
スレ汚し申し訳ありませんでした。
311 :
デフォルトの名無しさん:04/09/20 17:39:26
問題はそういう細かい部分ではなくて、もっと根本的な部分にある。
一般人でも、
iアプリを売れますか?
vアプリを売れますか?
ezアプリを売れますか?
314 :
デフォルトの名無しさん:04/09/20 21:35:03
506アプリを作りたいときは、DoJa3.5でいいの?
>299
R/Wからiアプリ起動できるのはP506とSo506だけじゃなかったっけ?
>>316 そうみたいだな
SH506iC,F900iCは非対応
(つーか早く公開しろよ>ドコモ)
318 :
299:04/09/22 01:44:20
>>316-317 情報ありがとう。
やはり F900iC は非対応だったんですね。
せっかく PaSoRi で Push コマンド送出するコード書いたのに…。
319 :
デフォルトの名無しさん:04/09/22 22:06:02
>>319 サーバーがわでどんなヘッダー返してるのさ
>>
>>319 >>サーバーがわでどんなヘッダー返してるのさ
サイトにあったソースほとんどそのまま使ってるんだけど。
print "Content-type: text/html\n\n";
サーバーから送ってるヘッダーってこれだよね?ほかにprint文はprint "$data"; ってのしかないし。
サパーリわからんね
ブラウザも串経由で確認してるか?
串がアヤシイと思うんだが
Illegal headerは、レスポンスヘッダじゃなくて、リクエストヘッダがおかしいときに出た記憶がある。
POSTしてるのにContent-Typeがないとか、へんなことやってない?
すいません質問です。
「SDK for FeliCa Lite」と「PaSoRi」を使って PC から iアプリで
確保した Mobile Felica の領域に対して読み書きを行うアプリケーション
を作成する事は可能なのでしょうか?
またはそれ以外の方法で「PaSoRi」を通して Mobile Felica の領域に
対して読み書きを行う方法は有るのでしょうか?
必須であるのならば購入を考えているのですが、そうほいほいと手をだそう
と思える値段をしていませんので…
>>325 フリー領域であれば Lite で全く問題ない。
共通領域で、暗号鍵を利用する場合は、そもそも PaSoRi を使うこと自体が
難しい(SDKだけじゃできない)。
>>326 回答ありがとうございます。
使えるとのことですので早速(研究費で)購入して
いじってみたいと思います。
>>327 conn.setRequestMethod(HttpConnection.GET);
conn.setRequestProperty("Content-Type", "text/plain");
conn.connect();
これ、GETの時にContent-Typeの設定つけたら動作しないんじゃなかったっけ?
>>327,329
そう。GETでContent-Typeなんてつけちゃだめ。
Content-Typeがどういう意味か知ってるならこんなことしないだろうに…。
そもそもリクエストヘッダの問題って言ってるのにCGIのコードを出す時点でかなり理解度に難ありなのだがw
331 :
デフォルトの名無しさん:04/09/25 22:04:13
教えて下さい。
DoJaのDialogってメモリ食いますか?
自作アプリで何回かDialogでメッセージ表示すると、N505では動作不安定になります。
アプリ自体はImage等で画像はかなり使用している状況です。
また同じN505アプリでDialogを開かないようにアプリを動かすと安定して動作します。
>>331 Dialogは使った事無いからよく分からんけど、
高レベルAPIだから内部でいろいろやってそうな感じだね。
ひょっとしたらDialogの影になってしまう部分を
ヒープにコピーしたりしてるかもしれないし。
どういう風に不安定なのか分からんけど、
Imageは可能であればまとめてメモリに展開しておくといいよ。
さらに可能なら一枚にまとめてしまうといい。
あとは出来るだけ細かくSystem.gc()を呼び出すこと。
>>332 N505やD505などのヒープが少ないのは
イメージをまとめてメモリに展開するとOutOfMemoryExceptionがでやすくなると思う。
その逆に細かく使う分だけ展開するのが良いと思うが。
あとSystem.gc()は細かく呼び出してもすぐ実行される訳でないから
それほど細かく呼ぶ必要ないよ。
>>333 細かく展開してgc()しなかったらメモリがすぐ断片化してしまうよ。
見かけ上メモリがあるように見えてもOutOfMemoryになりやすくなる。
やればわかるけど出来るだけローカルで宣言して、
いらなくなったらすぐにgc()するようにすれば、
ある程度のメモリは常に確保できる。
メモリが足りなくなって初めてgc()を呼んでるようだとgc()に時間が掛かる。
しかも参照がバラバラになっていて断片化しやすくなる。
オブジェクトは使うたびに作成しないで使いまわすのが基本。
VMまかせにしないで自分で考えてプログラミングするべきだよ。
便乗スマソ
「gcでメモリコンパクションを行わない」って機種があるんだが、それって細かく断片化たら
大きなメモリは取れなくなる可能性があるって事?
長時間動かすとOutOfMemoryになり易くなったりするのかな?
>>335 そう>断片化。
まあ、Cのmalloc()/free()だってそうだけどね。
でも、実際には殆どのサーバはCで書かれてるわけで。
一部のへたれた機種では、Dialogにnullを入れてgc()しても解放されない。
同様にPannelが解放されない機種もある。
PennelはN503とかそうだったな。
N504もDialog解放されなかったはず。
N505はわからんが、前科持ちなので信用するな。
一度作ったら、使いまわすようにしたほうが(・∀・)イイ
ストレステストとかやってないんかねえ。軟弱というかなんというか。
大人しく全機種JBlendになるのを待つか。
>>338 あまり作るのが簡単になると、商売にならなくなっちゃうの(゚∀゚)
>>338 テストはされているんだけど、
「稀なケースなので」「インスタンス使いまわせば動くので」
「完璧を目指すと開発費が高くなるので」「そのモジュール他社から買い入れたものなので」
なんて理由で修正を間逃れてまつ。
341 :
331:04/09/27 13:56:10
>>332 >>337 ありがとうございます。
まだちゃんと調べてないですが、挙動から言ってN505はDialogはメモリ開放されてないっぽいです。
使いまわしてやってみます。
メモリコンパクションしない機種なんてあったのか…おっかねぇ。
DialogやPanelはシングルトンで使えということですか?
使えというか、勝手にそうなるというか。
>>345 自動的にそうせざるを得なくなる という意味合いだと思われ。
なにも考えなければ、Dialogの場合は、いちいちインスタンス生成するコード書くことが多いと思うけど。
漏れ最初に作ったdialog dで全部まかなってた
どーせモーダルなんだしYNとかYNCとか使わないし
そもそもN504だとダイアログ出してるときに強制終了キー押して、再開するとバグるしな。
N504じゃなかったっけ?
P504はDialog後に再描画を要求するし、ぶっちゃけ商業だと「Dialog禁止」って言われる
350 :
デフォルトの名無しさん:04/09/28 13:35:57
ぶっちゃけ商業(笑)
ダイアログなんて終了確認と接続エラー時にしか使ってない…。
iアプリで特定のアドレスからメールを受信したら、
到着確認のメールを返信するというものを考えています。
デフォルトで入ってるDimo絵文字メールは同じアプリから送ってきたメールしか
そのアプリの受信ボックスに入らないみたいだけど、
メールを受信するときにヘッダか何かを見て割り振ってるのかな?
普通のメーラーから送ってきたときもアプリの受信ボックスに格納したいんだけど、
できますか?
>>352 SDカードか何かにアプリのメール吐き出してPCから見れば
どういう仕掛けでアプリの受信フォルダに入るか判るぞ。
>>349 ダイアログ閉じたときに再描画を要求するのは
別にいいんじゃないカナ?
仕方ないのでダイアログを自前で作ってコードを圧迫して死亡。
典型的な俺の死に様。
>>355 P504だけ ってのがね。
仕様的には「それでもいい」んだが、例外は嫌!
>>357 N504なんかは、わけわからんタイミングで再描画要求しまくってた気がするがw
Graphics#copy()ってどんな使い道があるの???
>>359 ある特別な場面に入る前にコピーしておいて、
その場面でフォント変更とか座標基本位置とか変えまくっていろいろして、
抜けたら元に戻す。
とかの時に使えなくはない。かな。
スクラッチパッドにメモのような大きさの変化するデータをいくつか書き込んで、メモを編集したりすると
ほかのデータを上書きしてしまいますよね?
色々なiアプリがありますけれど、データ管理はどうやるのがメジャーなんですか?
>>361 スクラッチパッドの先頭にデータの個数、
それに続けてそれぞれのサイズと実データを記録して起動時に全部メモリに読み込む。
セーブの時も一度にメモリの内容を全部書き込んでしまう。
オートセーブしたいなら予めサイズを決め打ちしてしまう。
363 :
デフォルトの名無しさん:04/09/30 18:24:12
質問です。
Thread.sleepメソッドに関してなのですが、実行するとNullPointerExceptionが出ます。
別の場所で実行した場合は問題なく実行されるのに、
なぜかstart()からrun()メソッド内で実行するとNULLが出てしまいます。
どうすれば直せるでしょうか?何が原因か分かる方はいらっしゃいませんか?
>>363 オブジェクトがNullになってます。
まずNullPointerExceptionがでるところを確定させること。
どういうわけか本能的にガッってしたくなる。
366 :
363:04/09/30 19:54:41
ありがとうございます。何とかなりそうです。
>>359 なるほどねー。
画面をcopyするんじゃなくて、属性とかをcopyするのか。
てっきり前者だと思ってなんのためにあるんだろって思ってたよ。
サンキュ。
゚・ 。 ・。
。・゚・⌒)
−=≡ _ _ o━ヽニニフ ))
−=≡ ( ゚∀゚)彡。・゚。・⌒)
−=≡ ⊂ o━ヽニニフ ))
−=≡ ( ⌒) チャーハン!チャーハン!
−=≡ c し'
370 :
363:04/10/01 15:15:28
すみません、やっぱりうまくいきません。
NullPointerExceptionが出るのはThread.sleepだけでしか起こりません。
ほかは一通りスレッドは使わずに実行してみましたが、全て問題なく実行されます。
Thread.sleepだけが実行されません。Thread.sleepだけが。
371 :
363:04/10/01 15:26:14
あああ、と思ったら原因をやっとハケーン!!
お騒がせしました。
ちゃんと報告しる!
イライラする質問者の見本のようなやつだな。
原因がまったく別にあったとしても、きちんと詳細報告してくれ。
Thread.sleepに何か問題があるのかとみんなガクブルしちゃうでしょ。
どーせThread.sleep(5000); とかやるところを
Thread.sleep(); とかやったんだろう。
プッ
どうせスリープして別スレッドで開放した参照にアクセスしたんだろ。
378 :
デフォルトの名無しさん:04/10/02 02:44:29
リソースを一本のバイナリにする時、皆どうしてる?
やっぱDOSコピーでヘコヘコしてんのか?
次世代開発環境を聞かせてくれ
スクリプトでも書きなさい。
そういう時はperlとかで簡単なツールを作るべし
漏れはそうしてる
381 :
デフォルトの名無しさん:04/10/02 08:03:04
待ちうけアプリの休眠状態のときって、アプリ側で処理を行うことはできない
ということなのでしょうか。たとえば、休眠状態を継続しつつタイマイベント
を1時間おきに発生させるような処理は可能ですか。
う〜ん。
バッチの方が早そうだ。
コノ作業は10年前から変わらんね。
383 :
378:04/10/02 11:32:47
>>381 setWakeupTimer()
使うと、休眠状態でも定期的に動作させられるぞ。
メンバ変数で宣言してた変数をメソッド内で再宣言してたせいでローカルになって例外になってますた。
片っ端からメソッドを試してたんだけど、下の方の忘れてたようなメソッドにあったので発見にてまどりますた。
>>385 ああ、それってコンパイラが警告してくれてもいいのにねえ。
漏れも初心者のことハマった記憶がある。
>>386 Eclipseに入ってるコンパイラはフィールドとローカルで名前が
被ったとき、エラーにするか警告にするか無視するか指定できるよ。
スタックトレースを表示する方法ってないのかねぇ
>>388 うちでは表示されるから表示する方法はあるんだろうな
喪前と何が違うのかは知らん
servletスレで聞くべきか迷ったけどとりあえずこっちで。
iアプリで文字列をエンコードした時と
servletで文字列をエンコードした時で
結果が変わるのだけど、serlvet上で
iアプリと同じようにエンコードできないでしょうか?
例えばテレビをエンコードすると
iアプリ→%83e%83%8C%83r
servlet→%83%65%83%8C%83%72
となってしまう。eがservletだと文字コードの65になるのは
なんとなくわかるんだけど、自分で変換しなくても
encodeTypeでなんかないのかな?
今はshiftjisでエンコードしてて、他のもいろいろ試したけど
iアプリと同じようなエンコードになるのがなかった…。
いい方法があれば教えてください。
>>390 eが0x65でrが0x72なんだよね?ちゃんと調べてないけど。
だったらどっちも等価なので問題ない。
まともなデコーダなら、どっちもデコードしたら同じ結果になるはず。
>>391 等価なのはわかるんだけど、比較したときに等価だと判断されないので
なんかいい方法は無いかとおもって
そこだけdecodeして比較とかなんかカコワルイ感じもするし
デコードせずに比較する方がカコワルイと漏れは思うんだが
>>392 何でも比較するときには正規化は必須でしょう。
今回のケースでは、正規化はデコードすること。
f505iなんですが、
PhoneSystem.setAttribute(PhoneSystem2.DEV_I_LIGHT, PhoneSystem2.ATTR_I_LIGHT_WHITE );
のライト点灯時、明るさが足りないのですが、
カメラでの撮影時のライトくらい明るくすること
はできないのでしょうか?
あー…たしかF505はアプリでいじっても、携帯での設定が優先されるという
仕様
があるはず…。
それとは違うかな?
常に暗い状態で、ボタンとか押しても明るくならないのなら、それ。
「アプリ時のライトの設定」みたいな項目があって、それが絶対優先されてしまう。
バグ扱いされてコマタ
プログラムの経験全く無い人がいきなりJavaから始めても大丈夫でしょうか?
本人のやる気次第でなんとでもなりますか?
現実にはそういう人いっぱいいるよ。
結果として、使えない人もいるし、驚くほど成長する人もいるし。
結局やる気じゃない?
いきなりJavaからっていうか、初心者にはJavaから始めるのはそう悪くない。
ていうか、むしろ推奨されるくらいだろうな。
初心者ほど、世代の新しい言語がいい。
Javaは開発環境も整ってるし、iモード携帯Javaは癖があるように見えて、
端末の個体差を意識するレベルまで踏み込むまでは、きっちりとした
Java端末でしかない。
アップロードも自由にやっていいし、自分の持ってるケータイで
自分の書いたアプリが動くのは、結構感動する(w
調子に乗ると、パケ代が馬鹿にならないけどね。
そんなわけで、まずははじめてみれ。
少々の事なら、このスレの住人優しいし、皆いろいろと教えてくれるさ。
そうそう、cとかは演算子とか文法に分かりにくい部分が沢山あるから
初心者にはjavaの方がいい。
*a+i と a[i]は同じなんだぜとか言われても混乱するだけ。
釣り氏キタキタ━(゚∀゚)━ !!
同じじゃねぇだろ
*(a+i)なら同じになりそうなんだが、*a+iだと違うんじゃねーか?
405 :
デフォルトの名無しさん:04/10/05 11:40:36
やさしい住人達ですね(´ω`)
Cだと、それどころかa[i]とi[a]も同じなんだよなw
意外に知られてないけどね
だからって仕事で 5[a] とか書いたら殴られるぞ。
>>409 うん。漏れもそれやられたら殴るかも知れんw
>>396 サンクス。常に暗い状態なのです・・・。
PictureLightも非対応のようなので、
あきらめます(´・ω・`)ガッカリ・・・
ありがとうございました。
412 :
デフォルトの名無しさん:04/10/06 06:13:03
javaスレでも聞いてしまったのですが、こちらで聞かせてください。
Calendarクラスのaddメソッドを使うとコンパイルエラーになります。
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -5);
「シンボルを解決できません。」となります。
Dojaではこのメソッドは使えない?のでしょうか
リファレンスにもこのように書いてあるのですが・・・
>>412 CLDC1.0では使えないんじゃないの?
CLDCのAPIリファレンスを見るベシ
>>2
>>412 CLDCは1.0も1.1もCalendar#addなんてメソッドはない。
416 :
デフォルトの名無しさん:04/10/07 23:54:01
417 :
デフォルトの名無しさん:04/10/14 18:10:16
すいません質問があります。
現在
携帯のフォント文字が飛び交うようなアクションゲームのアプリを作っているのですが、
paint内で
キャンバスにdrawStringで一文字ずつ描画してまして(スプライトのような感じで)、
それを1秒間に10フレームくらい更新してアクションゲームとして進行させているのですが、
実機上で(D505iなど)
20〜30文字くらい表示するともう処理が追いつかず、処理落ちしてしまいます。
文字以外は何も表示していません。
基本的に
drawstring はけっこう処理を食うものなのでしょうか?
食います。以上。
文字数より実行回数に比例するけど。
D505もってないんだけど、6x12でdrawImageするのとdrawStingで1文字はどっちが早いんかね?
それは機種によりけりだと思うが、平均するとdrawImageよりもdrawStringの方が
ずいぶん重たい感触がある。
まあ、普通に考えてもフォント描画するほうが処理量多いだろう。
421 :
デフォルトの名無しさん:04/10/14 20:26:08
>>418-419 レスありがとうございます。
なるほど、やはり重たいのですね。
逆に安心しました
そうすると、一画面に30文字以上とか表示する場合に、
毎フレーム全文字描画していては
あまり速度が期待できないわけですね。
iModeのサウンドノベルとかはけっこうな文字数表示していますが、
どうやっているんでしょうか
まぁあれはアクションではないですし、
毎フレーム全部drawStringしている、というわけではないのかな。。
>>420 drawImageでしたらけっこう描画いけるのですが、
今回drawStringを試したとたん処理落ちしたので、今回の質問をさせていただきました。
やはりフォントの描画は
かなり重い感じなんですね
フォントをイメージに描画しておいて、それを使い回しするように
すれば速いのかな?
>>421 ぶっちゃけ、1フレ1文字とかで書いて、絵を保存してるだけではないかと。
つまり
>>423か、単に前に書いた絵を消してないという例のアレ。
使い方間違えなければ、そんなベラボウに重たいわけでもないけどね。
漏れに限らず、4回+1回描画で縁取りフォント書いてる例なんてのも
よく見かける。
試したわけじゃないが、フォントサイズ等でも結構変わったりするもんなのかな。
12x12か24x24の標準フォントってやつしか使ったこと無いから、よくわかんないや。
425 :
デフォルトの名無しさん:04/10/15 00:58:38
>>423-424 なるほど、とても勉強になります
イメージにフォントを保存しておいて、drawImageで毎フレーム描画するか・・
それとも描画を消さずに書き足していく例のソレにするか・・・
なかなかの悩みどころですね
ちなみに
>>424さんは、1文字につき5回描画していらっしゃるようですが、
その場合毎フレーム描画しているのでしょうか?
>>425 字数にもよるけど、毎フレーム書く場合もあるます。
例えば
//RGB
void setRGB(Graphics g, int rgb)
{
g.setColor(Graphics.getColorOfRGB(rgb
>>16, (rgb
>>8)&0xff, rgb&0xff));
}
//文字描画縁取り有りアンカ指定無し
void drawString(Graphics g, int baseRGB, int edgeRGB, String str, int x, int y)
{
setRGB(g, edgeRGB);
g.drawString(str, x, y-1);
g.drawString(str, x+1, y);
g.drawString(str, x, y+1);
g.drawString(str, x-1, y);
setRGB(g, baseRGB);
g.drawString(str, x, y);
}
こんなゾンザイなコードだけど、1画面10文字ちょいくらいなら、気にせず書いちゃうかな…。
確かに負担は少なくないので、使いどころは気をつけます。
アクションゲームとかなら、フォントは原則drawStringよりdrawImageかも。
特に数字とかだけなら、GIF刻んで表示した方が断然速いですし。
427 :
デフォルトの名無しさん:04/10/15 01:25:19
>>424=426さん、
コードまで拝見させて頂きましてありがとうございます。
縁取りのやり方、なるほどと思いました。とても為になります。
そうですね、今回作りたいものがアクションゲームよりですので
表示文字が動く場合にはやはりdrawImageの方がよさそうですよね。
ちょっとその方向で頑張ってみようと思います。
夜分遅くどうもありがとうございました。
とても勉強になりました。
質問よかですか?
プログラム容量減らしたいんですが、
scratchpadにプログラムを置く事って出来るんでしょうか?
また、シェープアップの裏技とかってあるんでしょうか?
ターゲットは505と900です。
リソースならscratchpadに置いたり、サイトからダウンロードしたりして
本体側をスリムに出来なくはない。
出来るだけ、後から読んでOKなリソースは外に出しておくのがいいかと。
ソフトを、オーバーレイみたいな感じで外に出すのは無理なんじゃないかな。
> プログラム容量減らしたいんですが、
>>2 ■ アプリを省サイズ化するツール(ObfuscatorまたはOptimizer)
jargはバグってるので-nobcoを付けないとダメ
> scratchpadにプログラムを置く事って出来るんでしょうか?
クラスローダーが無いから無理
> また、シェープアップの裏技とかってあるんでしょうか?
jar.exeのかわりに7zipを使う
クラスを作り過ぎない
アプリからアプリを起動できるから、アプリを2つに分けるって手もある
おおお。
素晴らしい。
聞いてみるもんだね。
>>429 >>430 プログラム以外の部分は、既に外に置いとるのですよ。
その事、書くの忘れてますた。
>>431 お陰さまで31kが19kに生まれ変わりました。
ありがちょ。
433 :
デフォルトの名無しさん:04/10/15 20:29:29
アプリをネットワーク経由じゃない方法で動作させる方法はありますか?
作ったものをテストするのにパケット代がかかるのは嫌なんです。
パケホーダイ
436 :
デフォルトの名無しさん:04/10/16 09:39:03
質問よろしいでしょうか?
505i用に作ったアプリを900で動かしているのですが、N900iだけ
初回起動時は普通に動いて、2回目以降はタイトルからゲーム中に行く時の
画像読み込みでアプリエラーが発生してしまいます。
メッセージはこれなんです。
/***********
message = Uncaught exceptin happened
throwable = java.lang.OutOfMemoryError
throwableMessage =
curClass = com/nttdocomo/ui/MediaDatalmpl
curMethod = use
***********/
これはADF設定でSpSizeを変更(DLLする容量+10KBに)することで解決したいのですが、
ヒープエラーだとしても原因が分かったわけでは無いのでスッキリしません・・・。
よろしければどなたかご教授下さい。m(__)m
メモリリークじゃないのか。
>437
あ・・System.gc()は画像を読み込む毎にかけていますが…。
強制終了時に画像解放していないから、とかでしょうか?(汗
質問ばかりですいません。
それと訂正です。
× 初回起動時は普通に動いて、2回目以降はタイトルからゲーム中に行く時の
○ 初回起動時は普通に動いて、2回目の起動以降はタイトルからゲーム中に行く時の
まさかとは思うが、読み込もうとしてるのJPEGじゃないよな?
過去ログ嫁
といおうとしたら、過去ログまだHTML化されてないのか…。
N900とP900にはJPEG読み込みにバグがあって、一定以上メモリーを使ってから
JPEGを読もうとするとメモリーエラーで落ちる。
解決方法としては先にJPEGを読むか、(なぜか)SPサイズを409600にする
P900iなら動くのか?
NとPはスクラッチパッドから絵を読むときlengthを付けないとOutOfMemoryになるぞ
441 :
436:04/10/16 11:58:47
>439
画像は全てgifを読み込んでいます。説明不足ですいません(汗
>440
P900iは普通に動作しています。
じつは、画像が30枚あるのですが、スクラッチパットからの読み込み順を
0〜29から29〜0に変更したら、アプリエラーが発生しなくなりました(汗
ナゾだ・・・。
また別のところにしわ寄せがいくだろうな・・・
SPサイズの変更でも起きなくなったのと、
読み込み順番を変えたら起こらなくなったのを考えるに
やっぱりJPG読み込み系と似た症状だな。
でも全てGIFなのか…。
拡張子はGIFだけど、実は中身がJPEGとかそういうオチはないかな?
444 :
436:04/10/16 13:50:29
>443
バイナリを確認したところ最初はGIFでしたので大丈夫かと思います…。
色々やってみますんでまた何かわかったら報告させていただきます。
皆さんご助言ありがとうございました〜。
>>444 きちんとバイナリチェックまでするとは、見上げた向上心。
いつでも歓迎するから、何かわかったら是非報告しに来ておくれ。助かる。
446 :
デフォルトの名無しさん:04/10/16 17:32:40
すいません質問があります。
パネルに
大きさが1文字分のテキストボックスを縦に並べたいのですが、
デフォルトでLayoutManegerに任せるとテキストボックスはどんどん右に並んでいって、
画面端に到達すると一段下に行く、という感じになってしまいます。
これをひとつずつ縦に並べたい場合、
一般的にはLayoutManegerをnullにして
コンポーネントのXY指定で並べていくしかないのでしょうか?
レイアウトマネージャーに
<br>効果のメソッドがあったはずだが。
2回目以降って、iアプリを終わらせてからってこと?
449 :
436:04/10/16 19:55:31
>448
はい、そうなんです…。
1回目の起動で画像をDLして、スクラッチパットに保存。
その後スクラッチパットから読み込んで使用。
ここで一度終了します。
2回目以降の起動ではスクラッチパットから読み込んでいますが、途中で落ちます。
この時、SpSizeの値によって落ちるタイミングが違います。
(画像 30枚 : 合計 38KB)
SpSize = 200KB の場合、17枚めの読み込みでアプリエラー
SpSize = 100K の場合、28枚めの読み込みでアプリエラー
SpSize = 50KB の場合、30枚全て読み込み可能でエラー出ません。
それと見当違いかも知れませんが、try catch で UIException を取れずに落ちました…。
単にでかい画像を何枚も読み込んでメモリ不足ってことはない?
使用メモリを各所で表示するようにして実験したらどこがまずいのか分かるかも。
初回起動時とそれ以降で、スクラッチパッドからの読み込み部分の頭で違うかもしれない。
役に立たないかも知れないですが
Nだけ初回起動と2回目の起動でなんか動作違うことあったなぁ・・
なんだったっけかな
読み込み順でOutOfMemoryエラーがでたりでなくなるのはこういうことじゃないのか?
例えば、画像サイズが1番から1,2,3,4,5のとき、
スクラッチパッドから画像を読み込むときに画像サイズと同じメモリを使用するとすると、
1番から読み込む場合、最後の画像を読み込んだ瞬間の使用メモリは1+2+3+4+5+5=20
逆だと5+4+3+2+1+1=16
内部的にどうなってるか知らんので当て推量だが。
>>451 今回は、初回と2回目以降で処理内容が違うから関係ないのでは?
> それと見当違いかも知れませんが、try catch で UIException を取れずに落ちました…。
java.lang.OutOfMemoryErrorがスローされるんだろ?
Throwableをcatchしてるか?
ExceptionじゃなくてErrorだから、両方の親のThrowableをcatchすると楽
ああ、やっぱりこの件か。
NとPは通信と画像読み込みにバグがある。
解決方法としてはSPサイズを409600にするか、起動直後に(無駄だとしても)JPG画像を
最低1枚読み込み(すぐ解放してもよい)、通信を行う(openする。すぐcloseしてもよい)ことだ。
これで大筋正常になる。
はっきり言って ビチ糞にも劣るハード だが、ソフト屋はハードのバグにも対応するのが慣例らしいな。
さっさとパッチあてろといいたくなる。
456 :
デフォルトの名無しさん:04/10/17 15:05:07
panelクラスで表示するテキストのフォントってどう指定すればいいんでしょうか
>>456 Font#setDefaultFont() ぐらいは試したんだろうな?
ギガアプリの逆アクセスランキングのお知らせが来たけど
SEO対策にしても、ちとやり方が露骨すぎねーか。
相互発展も何も力関係が不平等すぎるし。
少なくとも俺はウチのサイトに来た人間を逃がすつもりなどさらさらない(w
つーかギガアプリ、メルアド漏洩させやがったわけだが('A`)
糞重いメール届いたと思ったらヘッダに大量のアドレスが…
>>459 あの会社はいまどき1000人以上にメール送るときでもメーラーつかってんのかな。
MLにでもしたらいいのに・・・
901iのVMどーなんの? JBlendまだ〜?
誰かこっそり教えて。
教えて君で申し訳ないけど・・・
3D表示(視点移動などする)でワイヤーフレームを表示したいんだが、
参考になるサイトはあるかな?
マスコットの3D表示は出来るんだが、
ワイヤーフレームを表示となるとよく分からなくなってくるもので・・・。
iアプリにこだわらず、3Dのサイト探すべし。
ワイヤーフレームといっても色々あるからな…。
単純なスクリーン投影タイプでよければすぐできるんじゃない?
>463
単純なワイヤーフレームなら計算で線引きするけど、
やりたい事というのが、ワイヤーフレーム内部にポリゴンオブジェクトを表示して
動的にカメラ視点の移動をさせるという事で、
さらに俺には、3D系の知識は皆無なんですよ(物理や数学が苦手という、最大の問題もあるけど)。
まあ、あわよくば3D表示データを数値設定しているようなサンプルソースが手に入れば・・・
とも思っていたんだけどね。
ん・ぱか工房のサンプルソースだと、ちょっと心許なかったもので、聞いてみました。
他に参考になりそうなサイトがあれば、(iアプリじゃなくても)教えてくれませんか?
>物理や数学が苦手という
まあ、苦手でも必要な部分は理解しておかないと
サンプル見て作っても後々苦労することになる。
今のうちに勉強しとけ
>465
うむ、現状おかれている難問で勉強する気にはなった。
しかし・・・、プロトタイプ版の作成が期限間近なんで勉強する暇はないんですな(泣)。
まあ、実開発でも始まれば、教材を買いに行く時間ありそうだけどねぇ。
とりあえず出来るか分からんが、プリミティブ配列に線のプリミティブ12個(ワイヤー数)を
設定して立方体の描画テストしてみるわ。
・・・つうか頂点座標の計算どうしようかなぁ・・・。
勉強ガンガレ。
頂点計算はたいていライブラリが持ってたりするので、
利用するのが良いと思う。
あと、ん・ぱか工房の説明は見ておいたほうがいい。<アフィン変換と視点座標
あとは、点の座標を保持して、透視変換したあと線を描いたほうが良くないか?
468 :
デフォルトの名無しさん:04/10/19 16:56:32
すいません質問があります。
テキストボックスで入力モードをカナ漢字モードに設定すると、
実機ではちゃんとカナ漢字モードになっているんですが、
Doja3.5のエミュレータ上だと数字入力モードになっていて、カナ漢字に変更する事ができません。
エミュレータでカナ漢字にするには何か別の設定が必要なのでしょうか?
>>467 PrimitiveArrayを使って、座標は変換前のものを保持するようにして、描画時に
ワールド座標からの変換をすればよろし。
既出?
ま、コード示してないからよくわからんけど。
携帯のレベルにその本いきなり役に立つかなあ…って、追いつくのはあっという間か。
確かに勉強にはいい時期かもしれん。
あと、古典的だけど、ゲーム数学の勉強には、普通に計算幾何とか計算機数理の教科書がいいよ。
とりあえずガンガレ。
>>471 もう、レンダリング手法とか、テクスチャの手法は十分な感じで、動きの表現もたいがい出揃った感があるね。
>>468 エミュレータ上では、カナ漢字は普通にキーボードから入力することに。
エミュレータのキーを押してもカナ漢字変換されないよ。
>>473 煮込めばまだまだいくらでも煮詰められるんだろうけど、
努力の量と得られる利益の分岐点は超えた気がするよね。
でもケータイにシェーダ載るとなったら、もう一ネタあるかな?
…如何に消費電力を抑えるか、なんて、シェーダからアプローチできたら面白いんだが。
面白そうだけど、難しいだろうね。
>>474 レスどうもありがとうございます。
キーボードを押すという事にまったく気づかず
必死にエミュレータのボタンだけを押してましたw
勉強になりました。
どうもありがとうございました。
ワイヤーフレームに関するレス、ありがとうございました
(特にサンプルを作ってくれた >462 さんに多謝)。
フレームの描画と回転に関しては、とりあえず出来るようになりました。
理論の部分に関しては、>471 さんの紹介してくれた本を勉強する事にします。
で、たびたび教えて君な質問で恐縮だけど・・・。
一つのモデル(Figure?)を複数、別々の座標に描画させたいんだけど、iアプリ(Javaの命令)
で出来るかな?
マニュアルを読むと、「Micro3D においては,モデル座標はFigure の中に隠蔽されています」
と書かれていて出来なさそうな感じ。
今はプロトタイプ作成なんで、無理矢理「setScreenCenter」で座標をずらして描画してるけど、
なんか別の方法があるような気がして・・・。
うわ、番号間違えた!
サンプル作ってくれたのは >476 さんです。申し訳ないです。
>>479 結論から言うと出来る。
各モデルごとにローカル座標→ワールド座標変換用のAffineTransを持たせておいて、
描画時にワールド座標→視点座標変換用のAffineTransとの積をとって、それを
Graphics3D#setViewTrans()で設定してから描画すればいい。
Figureを平行移動したり回転させるには、そのつど視点を動かすしか無いっぽい
保守
static byte[] loadData(int sp, int point, int len){ // sp = 0, point = 0, len = 18
if(point<0 || len<=0) return null;
byte[] ldByte = new byte[len];
InputStream in = null;
try{
in = Connector.openInputStream("scratchpad:///" + Integer.toString(sp) + ";pos="+Integer.toString(point));in.read(ldByte);
in.close();
in = null;
}
catch(Exception e){
if(in!=null){
try{
in.close();
}catch (Exception err) {}
}
in=null;
return null;
}
if (ldByte == null) {
String not = "There is nothing.";
return ldByte = not.getBytes();
}
else
{ return ldByte; }
}
テキストボックスの保存内容が無いときに、メモ欄に ldByte == null を表示したいのですが
ldByte がどうしてもnullにならなくて、空白になってしまいま・・・
スクラッチパッドを初期化してもだめで、
ldByte をint にすると17とでたので、参照があるぽいので
String に直したら変な文字化けぽいのがでます・・
文字が " " でない保存、読み込みは普通にできますが・・
>byte[] ldByte = new byte[len];
としてるわけだからldByteがnullになることはないっしょ
486 :
デフォルトの名無しさん:04/10/28 23:18:20
F900iTにbluetoothが搭載してますが
iアプリからbluetoothを利用することはできますか?
>>484 485も言ってるが、
>byte[] ldByte = new byte[len];
この行を百回声に出して嫁!
>>489 APIが無いのに利用なんてできないだろ
JNIで。
ガセネタ
Image#createImage(int width,int height)で書き込まれるイメージを
透明色で塗りつぶすことってできないんでしょうか?
できない。
透過が表現できるのは透過gifを画面に描画するときだけ。
>>494 サンクス。
透明色無いとマップレイヤー付けられん。
何使おうかな…。
496 :
デフォルトの名無しさん:04/10/30 18:48:26
iアプリでBGMと効果音を同時に鳴らすことについて質問です。
MIDIファイルをPsmPlayerでMLDに変換したファイルと
wavファイルをPsmPlayerでMLDに変換したファイルを2つ用意してます。
この2つをiアプリで同時に再生しようとしたらBGMのドラムパートが鳴りませんでした。
そこでネットで調べてみると
N505i/N900i/SO505iは「1ch〜8chを使ってBGMを作らないとマズイ」らしいので
MIDIのドラムチャンネルをデフォルトの10chから7chにエクスクルーシヴ使って変更してみました。
が、PsmPlayerでMLDに変換するとドラムパートが10chにもどってしまいます。
うーん。
もしかしたら大きな勘違いをしているのかもしれません。
プログラム上では
AudioPresenter.getAudioPresenter( 0 ) ... BGM用
AudioPresenter.getAudioPresenter( 1 ) ... SE用
としており、問題はないと思っているのですが。。。
ダラダラ長文質問ですみませんが、どなたかご存知の方いらっしゃいますか。
>>496 N系の音源にエクスクルーシブでドラムCHを変える昨日はないし、その意味とは違うよ。
素直にノートデータをch8以下のところに変更してバンクセレクトを適切に入れてください。
もしかしたらpsmplayerでは出来ないかもしれないけどね。
>>497 レスありがとうございます!
バンクセレクトを入れるというのは、コントロールチェンジ0,32を使って
ドラムの音色があるバンクに切り替えるってことでしょうか??
MIDI素人なので「基本」だったら申し訳ないです。
何番のバンクを指定すればいいのだろう。。。
バンクの番号って携帯機種依存なのでしょうかね?
そういった情報をネットで探してるのですが、なかなか見つからない。。。(汗
またしても見当違いでしたらすいません
>>499 レスありがとうございます!
ほんと助かりました
こんなツールがあったとは。。。
>これはNの仕様なので、他の機種はまた別の仕様になると思う。
>ただ他の機種は1〜8制限とか無いから、10chドラムにして普通に変換しておいてOKだけど。
すると、N用(SO505iも?)とそれ以外の機種でダウンロードを分ける必要があるのか。。。
とにかく助かりました。
>>495 イメージを透明色でfillすることはできないが
透過gifでイメージを塗りつぶすことはできる
まぁ、面倒くさいけど一応
レイヤーとして持ってるオフスクリーンイメージを透明扱いにさせることはできる
>>501 オフスクリーンで作成したイメージの背景色を
透過扱いにすることができるってことですか?
もし良かったら詳細教えて頂きたいです。
503 :
デフォルトの名無しさん:04/10/31 04:36:21
DoJa3.0で開発してます。
バッチファイルからjavacを起動してiアプリをコンパイルしてます。
コンパイルは正常で起動も出来るのですが、絵文字が文字化けします。
バッチファイルはこんな感じ。
@echo off
set classpath= C:\iDKDoJa3.0\lib\classes.zip;C:\iDKDoJa3.0\lib\doja_classes.zip
set preverify= "c:\iDKDoJa3.0\bin\preverify"
javac -encoding SJIS -g:none -d classes -bootclasspath %classpath% -source 1.3 -target 1.1 src/*.java
%preverify% -classpath %classpath% classes
JAR cMvf pcw.jar -C output .
JAR uMvf pcw.jar -C res .
で、色々調べたり試したりしたところ、
・SJIS_iなるドコモの作った文字コード体系があるらしい。
・「-encoding SJIS_i」でそれを指定できるらしい。
・しかし自分の環境(j2sdk1.4.2_05)ではうまくいかず。
・インターネットで「-J-Xbootclasspath/a:[hogehoge]dojaconv.jarなるオプションを指定するという記述を発見!
(dojaconv.jarのパスは実際のパスを指定しました)
・それでもうまくいかず…(javacのバージョン違い?)
・「C:\iDKDoJa3.0\bin\dojaconv.jar」にそれらしきクラス発見。しかし使い方が分からず…。
あたりまで試して挫折してしまいました。
解決方法ご存知の方いらっしゃいませんでしょうか。
実機でも化けるのか?
Win2kだと文字化けしないけど、WinXPだと文字化けしたことがあった
同じjar,jamを使ったんで少なくともコンパイラのせいじゃないと思う
-encoding SJIS_i は無くても動いたような希ガス
505 :
デフォルトの名無しさん:04/11/01 03:18:53
>503
コンパイラ設定の解決方ではありませんが、
テキストをだけをバイナリリソースファイルとして作成し、
それを起動時にnew Stringすれば”〜”や”−”の文字化けを回避できると思います。
参考まで。
win2000で開発しているものです。どなたか、画面内で文字列を動かす方法を教えてくださいませんか?
今は、
drawtextで表示→画面ロック→背景を書き直して→1ドット(とか2ドットとか)動かしてdrawtextで表示
→ロック解除(ここで描き直し)→
…を繰り返して動かしてはみてますが、激しくチラチラしてしまい、困っています。
やりたいことは、F900iの方ならわかると思うのですが、標準搭載の「ルーインエクスプローラー」というiアプリの文字枠のように、
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃モナーに12のダメージ ┃
┃モナーは毒に置かされた ┃
┃モナーに20のダメージ ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
↓
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃モナーは毒に置かされた ┃
┃モナーに20のダメージ ┃
┃モナーは氏んでしまった! ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
↓
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃モナーに20のダメージ ┃
┃モナーは氏んでしまった! ┃
┃モナーを手に入れた! ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
※わかりにくかったらスミマセン、4行目以降が表示されるとき、ウィンドウの下辺からスクロールするようにスルリと現れ、それと同時に一番古い行(一行目)は、ウィンドウの上辺へスルリとスクロールしながら消えて行く。
…というように、新しい文字列(行)を下から表示させるたびに、ウィンドウ内を上へ上へとスクロールさせたいのです。
何か良い方法がありましたら、教えていただけませんでしょうか?
>>506 > 激しくチラチラしてしまい、困っています。
Graphics#lockしろってこと?
CopyRect
>>506 キャンバスでつくってるのかなぁ。
もしキャンバスなら描画関係を記述してるであろうpaint()をなにで呼び出してる?
repaint()ならちらつきが多いと思う。(理由はわからないが・・)
paint(getGraphics())で呼び出すと緩和された気がする。
この辺りは詳しくはわからね〜。俺も知りたいw
drawtextやらCopyRectやら自作のメソッド書かれても困る
>>506 文字列をスクロールさせることとチラチラすることは別問題として切り分けよう。
>>508が言いたかったのは、文字列のスクロールはGraphics#copyAreaを使っては
どうかってことだろう。
メッセージウィンドウを空白で塗りつぶす目的で背景を描き直しているのなら
その処理と、何度もdrawString()する処理が省ける。
(drawtextはdrawStringって言いたかったんだよな?)
もしチラチラが背景上書きに起因するのであればそちらも解決するかも。
解決しなければ描画の仕方自体が原因だろうからそれは別に考えるってことで。
>>503 絵文字が文字化けって意味がわからん。
ソースファイル中に絵文字を直接埋め込んでると文字化けするってこと?
だったらUnicode escapeしろ。
絵文字とUnicodeの対応表はドコモのページにあるから。
なんか最近iアプリのゲームが飽和状態で
どのアイディアも他のパクリくさくて辛いっぽ(´・ω・`)
容量増えて公式にも値段は高いが魅力的なコンテンツも増えてきたし…
もう、自分がやりたいゲームを作ってみるぐらいしかできない…
○絵文字を外字登録&辞書登録。ベクターに一式揃ってる
○ソース中に絵文字を直書き
○ソースの外に出す場合もSJISで直書き
これで絵文字が化けたことは無いぞ
>>513 >もう、自分がやりたいゲームを作ってみるぐらいしかできない…
貴様!最高の財産隠し持ってながら何言ってやがる!
謝れ!女房子供食わせるために劣化再生産の歯車として働き
疲れて傷つき錆び折れてしまったプログラマンたちに謝れ!!
ていうか、自分が好きなゲームが作れて普通に食えるならいいじゃねーか。
ほかに何を求めると、君は!
textboxって、半角500、全角250の文字数制限ありますよね?
SH505isで確認すると、そこで切れてるorz
FOMA900だともっと入るよー。10000バイトだっけ?
結局、iアプリってゲームでしょ?
iアプリのゲームは、結局、ゲームだね。
>>518の言いたいことはきっと
「ゲーム以外のiアプリってあるのかな?」
ってことに違いない
521 :
デフォルトの名無しさん:04/11/02 16:39:52
522 :
デフォルトの名無しさん:04/11/02 18:54:53
CameraクラスのtakeMovieを実行した際に
com.nttdocomo.system.InterruptedOperationExceptionが発生する事があります。
JavaDOC等を調べると
「競合条件などにより、 ユーザインタフェース操作がユーザの意図によらず終了させられた
場合に発生する例外です。」
と書かれているのですが、具体的にどのような時に発生するのかピンとこず
対処に困っております。
どのような状況で発生するか御存知の方いらっしゃいますか?
CameraクラスはObsolete
Cameraクラスと言っても色々あります
com.nttdocomo.opt.ui.Camera
com.nttdocomo.device.Camera
com.nttdocomo.opt.device.Camera2
525 :
503:04/11/03 01:42:09
亀レスすみません。
>>504 実機でもPCでも両方で化けます。しかもご指摘どおり、WinXPのみ化けました。
それで、ご指摘頂いて思い出したのですが、Office2003をインストールしたときに
勝手にインストールされるハングル外字のおかげでi-mode絵文字がうまく表示されないことがありました。
この辺ぽいです。
(ですのでウチのマシン、テキストエディタなどでは絵文字表示できるのにOffice系アプリだとハングルになります)
>>512 確かに基本ですよね…。しばらくの間はサボらずそれで頑張ります。ありがとうございます!
>>521 外字は登録してました。どうにも皆さんのご意見によるとレアケースぽいですね。
スレ違いの気もしてきたので、自力でもう少し頑張ります。有難う御座いました。
>>525 おまいは俺の言ったことが少しは分かったのか?
分かったんなら何がどう「確かに基本」なんだか説明してみろ。
‥といいつつ具体的に教えてやる。
以下のようにすれば、どんな環境でもうまくいくからやってみ。
1. ドコモのページから技術資料をダウンロードする。
2. それを開いて、「iアプリ対応携帯電話の絵文字」に載ってる表を引いて、Unicodeを得る。
例えば「晴れ」マークならばE63Eだ。
3. それをソースコード上では\uE63Eと書く。
String hare = "\uE63E";
Win95でもiアプリ作成環境整いますか…?
整います。
ん?そうだっけ?
確かに初期のエミュは95や98でも動いたと思うが
いまリリースされてるのって2000やXPでないと動かなかったような?
バージョンいくつからだっけかなぁDoJa3.0からだっけか??
作ろうと思えば一応95でも出来るだろうけどさw
>>529 もう今は使ってないけど、
Win98SE2でDoja3.5動かして開発してた。
>>529 必ずしもDoJaを使う必要はないから。
結局コンパイルしてpreverifyしてjarにまとめればいいだけだから。
>>527 なんでそんな無駄なことするんだろうと小一時間
>>501 そんな方法ある?
ImageやGetImageのメソッドじゃ無理っぽいけど。
エミュレータさえLinuxで動けばなあ。
コンパイルできても動作確認ができないんだよな。
>>534 ガセネタ
透過GIFをImageに描いたらImageの地の色が出るだけだ
オプションAPIのTransparentImageを使えば出来るが、機種依存だから使い物にならない
全くのド素人なんですが・・
外部コントローラーをつけて、アプリを操作させる事って可能ですか?
単純に何かのキーに対応した入力するコントローラーがあれば可能だろうけど、アプリの知ったことじゃない。
Vodafoneに至っては、端末つなげられるゲーセン筐体まで存在する訳だが。
TAITOが出してた奴。
多分、その種のアイテムは探せば結構あるもんだと思うよ?
>>431 今更なんですが、「アプリからアプリの呼び出し」ってどうやるんですか?
>>542 IApplication.launch
>543 アリガトン!
>543
移動できません…
ボタンを押したらDicというアプリを起動したいので、
launch(LAUNCH_AS_LAUNCHER,new String[]{"Dic.jar"});
としたんですが、ボタンを押すと
java.lang.NumberFormatException: the entryId is not an integer value
というエラーが出ます。
おそらくIDの書き方が間違っているんだと思いますが、
なにか勘違いしてそうなので助言よろしくお願いします。
com.nttdocomo.system.ApplicationStore
を調べるべし
詳しいことは開発ガイドを見てチョ
547 :
名無しさん:04/11/06 22:10:50
>>535 たしかに。
当方、しかたがないからwmwareでwindows 2000を動かしています。
なぜwindowsをつかなわいか?
サーバ側の開発もあるからです。
普段全然UNIX系のOSを使わないのに(使えないのに)、「UNIXでの開発が
できます」という恐ろしい会社(人)がいますねぇ。
併用しなさいよ、そのくらい。
ていうか下の二行関係ねえし。
549 :
デフォルトの名無しさん:04/11/06 23:42:42
前スレに既出かもしれませんが、探しても見つからなかったので質問させて下さい
携帯電話にシリアルポートで接続するおもちゃを作ろうと思っています。
外部装置から、携帯電話の内部に電話番号を追加したり、Webにアクセスする
アダプターの類は作れるのですが、せっかくなのでiアプリを利用して画面で
いろいろ操作出来るようにしたいのです。
しかしiアプリの開発ガイドを読んでもシリアルポートの制御に関する説明が見つ
かりません。
Vodaではそれらしい資料が有るようですが、i-modeではAPIは無いのでしょうか?
>>546 「を調べるべし」か。
おそるべし、となぜか読み違えて、わくわくした。orz
>>547 普段全然Windows系のOSを使わないのに(使えないのに)、
「Windowsでの開発ができます」という恐ろしい会社(人)はおまえか?
PerlとかPHPでのプログラム組むのに、普段からUNIX系のOSを使わないとできない会社も痛いね。
PerlとかPHPでのプログラム組むだけなのに「UNIXでの開発ができます」という会社は恐ろしいですね。
Perlは知らんけど、PHPはWindowsではかなり速度が落ちてしまうんだよ。
だからUNIX系のOSじゃないと、パフォーマンスが悪いということもある。
開発時に使うなら、パフォーマンスはそんなに問題にならないんじゃない?
あと、Linux使ってて「UNIXでの開発」っていう痛いところもたまにあるね。
WindowsにはVisualStudioがあるから、CなりでCGIを組むなら効果あるだろうけど、
PHPなら二度手間になるから最初からLinux上でした方がいいんじゃない?
だからといって、アプリの開発までWinで出来ないというのはヘボイが。
>>550 そんな、血も涙も無い。
>>553 うーん、IrOBEXは赤外線ポートの制御だと思うんですが、何かシリアルポートを
制御出来る技が有るんですか?
559 :
デフォルトの名無しさん:04/11/07 18:17:03
IrOBEXは赤外線ポートだけじゃないよ
Ir=赤外線だろ?
意味ワカンネ
>>558 だって無いんだから仕方無いじゃん。
IrOBEXとか言ってる香具師は釣りでしょう。
IrOBEXは赤外線でデータをやりとりするためのもの。
OBEX自体はアプリケーションレイヤのプロトコルなので、下のレイヤは選ばないけど、
とにかくiアプリからOBEXを扱えるのはIrOBEXだけだ。
iアプリの製作を依頼されてDOJAでやりはじめたが実機テストは
端末でダウンロードさせるとか方法はないのでしょうか
ケーブル繋いで転送できると楽&金がかからなくて済むのですが
素直にパケホに入りましょう。
あるいは費用として一定額まではクライアントに請求することも考えましょう。
それなりのアプリの細かなテストしてると、最終的にはン万円コースに踏み込むことも
考えられないじゃないし、個人請けとかだったりすると馬鹿にならない。
端末メーカーと仲良くなれば、ケーブル貸してもらえるよ。きっと。
パケ代気にならないくらいの会社じゃないと無理だろうけど。
ケーブルで接続しても、転送時間長くて楽じゃないかもしれないけど。
やはりサーバからのダウンロードしか凡人には無理ということですか
実はi-mode端末を持っていないのですよ
ケーブル接続でできれば買ってみようかと思ったのですが
パケット定額の友人に協力してもらいます
凡人 -> 貧乏人
プログラムを外に出すってどーゆーこと?
JAMに書き込んどいて、呼び出すってことでOK?
エー
スクリプト化の一歩手前みたいな
572 :
デフォルトの名無しさん:04/11/08 23:11:10
CLOCK_TICK_EVENTイベントが発生せず困っています。
Doja3.5使用しています。
待ち受け起動時にsetClockTick(true)を行い、processSystemEvent内で
パラメータのCLOCK_TICK_EVENTを見ているのですが
23時59分までは1分おきにイベント発生するのですが0時0分以降イベントが
発生しなくなるのです。
どうすればよいのでしょう。
573 :
デフォルトの名無しさん:04/11/09 19:56:58
doja3.5で開発をしています。
外部クラスを含めてビルドするように指定するにはどのようにすればいいのでしょうか?
やりたいことは、ksoap-midp.zipを含めてコンパイルしたいのです。
よろしくお願いいたします。
575 :
デフォルトの名無しさん:04/11/09 20:06:04
>>574 解凍するとたくさん.classファイルがあります。
これをどこに入れればいいのでしょうか?
いろいろ勘で試してみましたが・・・orz
手動でjarかけるしかないと思われ
つーかクラスファイルがあるならコンパイルする必要ないよな
577 :
デフォルトの名無しさん:04/11/11 00:40:12
一部Java全般の話題かもしれませんが。
DataInputStream,DataOutputStream配下の
readByte(),readBoolean()や
writeByte(),writeBoolean()は
プラットフォーム間の互換性はあるのでしょうか?
何をしたいかというと、簡単なロープレ作ってるのですが、
予想よりデータが膨大になってしまったので、
フラグ列とかイメージマップ用の数値列を
バイナリデータとして外部リソース化しようと思ってます。
ところがこれらデータ、既にもうDoJaのソース内に埋め込まれた状態で
それら変換するだけで膨大な時間が必要になりそうです。
なので出来れば、配列定義の部分をコピペ・ソース流用して
JREのライブラリから吐き出させたいと思ってます。
データ内容はbooleanやらintやらlongやら混在してますが、
書き出す順序と読み出す順序は当然揃えます。
この場合に、例えば、各型のbit長の違いなどで、意図しないデータが
読み出されてしまったり、こういったことはあるのでしょうか?
今回は、Windows上のJREで書いてDoJaで読むことを想定してますが、
うまくいきそうであれば、ServletからのリプライをDoJaで読んだり
色々と試せそうなのですが。
>>577 通信相手もJavaなら、J2SE、J2ME問わず互換性あるよ。
readIntなども、ちゃんとネットワークバイトオーダーにしてから送ってくれるし。
便利な世の中になったものだ。
579 :
デフォルトの名無しさん:04/11/11 01:07:03
>>578 ありがとうございます!!!
DOSでCやってましたが、10年以上ブランク空いて
この度Javaで社会復帰しました。
しばらく見ないうちに、便利になっていたのですね。
>>575 resに入れれば一応jarには入る。
コンパイルエラーについては
コマンドラインオプションを変更するしかない。
従ってEMUだけで解決させるのは困難。
doja3.5でアプリを作ってます。
実機でテストするためにFOMAを購入しようと考えているんですが、
どの機種(900シリーズ)がいいでしょうか?
Nが一番評判悪そうだから、Nがいいんじゃない?
>583
なぜ?
評判の悪いNで動けば他でも動くと期待できるから。
現実はそうでもない気がするが。
Nはアプリ自体はそこそこだろ?
オススメはDだな。最凶。
D900iなんて実在しません。
あれは都市伝説ですよ。
D非対応が最近の流行ですよ
D505みたいには売れてないから問題なし
>>582 FかNだな。NのかわりにPでもいいが
Dは忘れろ
SHは性能がいいから止めとけ
901でDoJaのVerUPするの?
Dは放置プレイだな。
N900iとP900iは中身大体一緒で、この2系統だけで5割くらいアクセスあるから
このどっちかにしときゃ間違いなかろ。
携帯電話としては、Nは液晶とかレスポンスとかクソなのでPがお勧めだ。
ということはテスト機はNでってことだな。
executeCommandListのマニュアルは
JavaDocのjguidefordoja3_5_apiref_opt_031218.zipしかないのでしょうか?
なんとか、思い通りにポリゴン描画を出来るようになったのですが、
JavaDocだけではかなり説明不足で苦労しました。
みんなサンクス!
DかNで検討します!
PかNでした・・・
>>596 ありがとうございます。
Micro3Dの方、参考になりました。ただそれを読んで疑問が発生しました。
私の所ではコマンドリスト毎にCOMMAND_PERSPECTIVE1を設定しないと
正常に透視変換をしてくれない現象発生していますが、Micro3Dの
サンプルプログラムでは設定していませんでした。
このような変な現象が起きているのは私だけでしょうか?
---------------------------------------------------------------
int[] com = { COMMAND_LIST_VERSION_1,
COMMAND_SCREEN_CENTER, SCREEN_CW , SCREEN_CH,
COMMAND_PERSPECTIVE1, zNear,zFar,angle,
COMMAND_TEXTURE | 0,
COMMAND_VIEW_TRANS | 0,
COMMAND_END};
int[] com2 = { COMMAND_LIST_VERSION_1,
COMMAND_RENDER_TRIANGLES|TEXTURE_COORD_PER_VERTEX|(1<<16),
0,0,0, 300,0,0, 300,300,0,
0,0, 32,0, 32,32, COMMAND_END};
executeCommandList(com); //描画環境用
executeCommandList(com2);//プリミティブの描画
これだと、正常に描画されない。com2にCOMMAND_PERSPECTIVE1などの描画環境を
入れれば正常に描画されます。
------------------------------------------------------------------
あと、ん・ぱか工房の方ですが普通のプリミティブ描画
(第4話 505iシリーズで動くポリゴンゲームを作る)
の解説はあったものの、executeCommandListの解説
を見つける事ができませんでした。どこにあるのでしょうか?
あ、ん・ぱか工房には「executeCommandList」の説明ないね…(汗)。
ポリゴン系の説明は見た気がしてたんで、混同してたわ。申し訳ないッス。
透視変換については、setPerspective の説明に
>このメソッドを呼び出した後は、レンダリングは全て透視投影で処理されます。
>同様に、setScreenScale(int, int) メソッドおよび setScreenView(int, int) メソッド
>を呼び出した後は、レンダリングは全て平行投影で処理されます。
ってあるんで、setScreenScale か setScreenView に類するコマンドが影響しているかもしれないよ?
executeCommandList使ってる人っているのね。
誰も使ってないのかと思ってたw
>>596 ありがとうございます。
色々試したものの分からずじまいです。orz
Panel内にaddしたコンポーネントを削除する方法ってありますか?
スレ違いだったらすいません。
iモードでいうところのPanelクラスってVodafone用では実装されているのでしょうか?
604 :
デフォルトの名無しさん:04/11/13 19:01:15
>>602 ないハズ。
コンポーネントを不可視にすれば、表示されなくなるが
削除とは違うし、元々表示されていた空間は埋まらなかった記憶がある。
一度配置したコンポーネントの再レイアウトは「しない」って仕様みたい。
605 :
デフォルトの名無しさん:04/11/14 11:43:44
すいません
MediaImageとImageの確保、解放の順番について質問があるのですが、
MediaImage a = MediaManager.getImage( スクラッチパッド );
a.use();
Image b = a.getImage();
ここまでが確保で、解放は
b.dispose();
b = null;
a.unuse();
a.dispose();
a=null;
という順番でよろしいのでしょうか?
>>604 いくつかの文字列をラベル等を使って出力するパネルがある。
あるときは文字列が10種類あるかもしれない。
ほかのパネルで文字列が消された場合、再表示したときには文字列が5種類になっているかもしれない
最初からコンポーネントの数上限を決めてパネルに配置して表示させるのはスマートじゃない
いちいちPanelクラスをnewなんてしてられないし、何かいい方法はないですかね
607 :
デフォルトの名無しさん:04/11/14 14:08:29
>>440 >NとPはスクラッチパッドから絵を読むときlengthを付けないとOutOfMemoryになるぞ
亀レスですいませんが、
スクラッチパッドから絵を読むときにlengthをつけるというのは
具体的にどの関数の引数にlengthをつければよいのですか?
そういうときはまずマニュアルをlengthで検索するんだ。
>>605 前スレか前々スレあたりに同じ話が出てるから読み返してくれ。
質問者からのあと少しやりとりが続いて正解の形が出てるから。
executeCommandListは、昔実験したときにどうにもうまくいかなくて挫折したなぁ。
API呼び出しのオーバーヘッドって、どんぐらいあるもんだろう?
だいぶ大きいんだったらもう一度試して何とかしたいところだが・・・
Panel使用時に、Lineを書く方法ってありませんか?
画像で代用しようにも、重なったり、配置を換えたりすると
その分の画像も作らないといけないのは辛すぎる
あきらめろ。
元々画像アドレスは指定してるんだから、
ちょこっと文加えるだけじゃないの。
N505でバグることと、Doja3.0以降しか対応していないことが問題。
N505でバグるの??
でも
>>440だとNとPはLength付けないとOutOfMemoryが出るってことは
N505は
Length付けないとOutOfMemoryでしくる
Length付けると画像リソースのサイズによってはエラー
どうすりゃいいのorz
>>619 440のNとPとは、900のことだよ。
いや
N505でもlengthつけないとOutOfMemory出る事あるよ
N505でlength使ってバグった経験が全く無いんだが‥
たぶんあそこのサイトの説明が
「lengthつけないとエラーになる」
って言いたかったんじゃないのかとすごい思う
なんにしろ、504と互換性がなくなるのが痛いな。
プロファイルバージョンが違うのに互換性を求めてるのか
どうせN系だけ他より著しく遅いから、描画をはしょるとか端末にあわせた処理が必要になるので、問題ないかと。
N504用特別処理を書いたりするのと同じ感覚でN505用特別処理を書けばいい。
627 :
名無しさん:04/11/16 00:44:57
透過色を使わないという前提だが。
最初に必要な分だけ Image.createImage() でイメージを作っておいて。
こんな感じ
for (i=0; i < xxxx;i++) {
tmpImg = MediaManager.getImage("scratchpad:///0;pos=XXXXX");
tmpImg.use();
Graphics g = picsImg[i].getGraphics(); <-- これが最初に作っておいたもの
Image img = tmpImg.getImage();
g.drawImage(img,0,0);
tmpImg.unuse();
tmpImg.dispose();
}
のようにコピーしてやれば回避できる。
透過色を使うイメージだけしかたがないから、getImage()から作るしかない。
アプリ作者もストライキしようぜ。クソ端末には一切対応しない。
>>627 それだとNとPは
>tmpImg.use();
ここでOutOfMemoryが出る事がある
>>628 大手は対応するから、ストライキした作者以外だれも困らない。
631 :
名無しさん:04/11/16 18:54:29
どうせ全機種コンパイルかます覚悟できてるからなぁ。
(余裕あればUserAgent使って直で処理分岐しても…)
落ちるモンは落ちる、クソだがしょうがない。
>>631 メモリの状況にもよるが
1個だろうがImageのサイズが小さかろうがOutOfMemoryが出る場合がある。
「場合がある」っていうだけですでにOUT
クソ端末に対応しなかったらアプリ製作者側が責められる現状は間違ってるよな。
端末作ったとこを責めろよー。
せめて不具合の回避方法くらい、ハード側が出して欲しいよな…。
N900/P900は通信にも不具合あって、その回避方法、友達のソフト会社が発見して
まわしてもらったんだぜ…。
(゚∀゚)さっそく2chのこのスレにもかいたけどさw
D900iはクソ端末、描画遅すぎでメーカーでも非対応が多い。
ドラクエ、FFとか非対応です。
>>636 D900i?
何言ってるの?それ都市伝説だよ。
>>632 UserAgentを拾って処理分岐させる方法だと、
新端末が発売される度に納品しなおしになる可能性があるのでは?
可能であればUserAgent拾うのではなく、問題ありそうな部分をtry{}catchして
catch内に代替処理を書く方が後々楽ですよ。
話題は異なりますが機種依存の端末リソースを制御したいときもUserAgentは使わず
isAvailableのみで完結させる、基本ですね。
>話題は異なりますが機種依存の端末リソースを制御したいときもUserAgentは使わず
>isAvailableのみで完結させる、基本ですね。
詳しく教えてください
>>638 ほう。
> 新端末が発売される度に納品しなおしになる可能性があるのでは?
どうせ新端末が出るたびに納品しなおすハメになるんだから。
動きがめっちゃくちゃ遅いとか、gcするとサスペンドするとか、どうせ対処できないからね。
納品するものだったら、「xxxとxxxにしか対応しません」っていうのは当たり前だよ。
OutOfMemoryとか、例外が出てから対処してもどうしようもない。
基本ですね。
>>639 例えば、振動機能を使うアプリで、オプションで
「振動ON/OFF」みたいな切替機能が必要だとする。
しかし「振動ON/OFF」という設定項目が振動非対応の機種で
表示されたらそれは不自然だ。てな時に、
1.ドコモの資料でAPI実装状況確認して、
2.アプリの機種判定で対応してない機種は表示を外して、
みたいなことすると新機種が出るたびにイタチごっこになるわけだ。
なので、2の処理を
PhoneSystem.isAvailable(PhoneSystem.DEV_VIBRATOR);
で代替すれば良い。これであればわざわざ1を確認する必要もなくなる。
という意味なんだけど、質問の意図とあってますか?
>>640 まあそれは確かにね。
まあ、この辺りのやり取りを通じて漏れが機種ごとの処理が必須になるような
シビアなアプリを作ったことがないことがバレたわけだw
>>642 オプション機能の有無みたいな、仕様上正しい動きに関してはそうやるのが当たり前だけど、ここでの話は端末ごとの変な挙動だから。
644 :
デフォルトの名無しさん:04/11/17 21:41:20
超初心者な質問ですいませんが.
画像を表示する場合、画像はファイルにしないとダメですか?
HttpConnectionで取得した画像を、そのまま表示したいんですけど、
スクラッチパッドに保存しないと表示できないですか?
645 :
名無しさん:04/11/17 23:18:59
>>644 MediaManager.getImage(byte[]);
ただし、DoJa 3.0以降
646 :
デフォルトの名無しさん:04/11/17 23:32:53
>>645 レスどうもです
そんなのあるんだ。今日買ったiアプリの本は古かったのね。
初版 2001って...
dojaが4.0になったが。さすがにJarサイズは増えないか・・。
あら何時の間に。
目玉はなによ。
ペリカ取り扱いでつか?
Audio3dって。。ステレオって3dなのか。
651 :
デフォルトの名無しさん:04/11/18 08:54:48
>>647 え、resource:/// とかの代わりに
http:// でもいけるんだ。
クラスのリファレンス主体の本だけど、そんな例が載ってなかった。
Generic Connectionどころか、パス指定方法の説明すら載ってない。例のみ。
どうもありがとう
>>649 3D音響機能が不自然なほど充実。
3Dグラフィックも拡張されたが、
まあ使えることと使い物になることは別ってことで。
2Dでは大した拡張は無いが半透明描画が可能。
機種を変えない貧乏人としては
ベンチマーク系の話題でこのスレが盛り上がってくれることを祈る。
>>652 以下抜粋。
getColorOfRGB
public static int getColorOfRGB(int r,int g,int b,int a)
RGB 値、ならびにアルファ値を指定して、 対応するカラーを表す整数値を取得します。
このメソッドで取得した値を setColor(int) などで設定することで、
図形の半透明描画が可能となります。
半透明描画をサポートしているのは、以下のメソッドのみです。
fillRect(int, int, int, int)
------------------------------------------------------------------------
一つだけですかwないよりは良いけどさw
CLDCが1.1になりましたね。さて、まともな関数電卓でも作るか。
ドキュメントをDoJa-4.0で検索して一通り眺めたが、
>>652-654でほぼ変更点は全部らしいな。ノーサプライズだ。
3DグラフィックスはプロプライエタリなAPIじゃなくてOpenGL ESよこせって感じだし、
3Dオーディオは、俺なんか携帯で音を鳴らすこと自体嫌いだからな。
ImageMapが性懲りもなく微妙に進化してるけどどのみちイラネーヨ
つーことで望みはVMだけなんだが、全機種JBlendになったんか? まだか?
誰か Base64 使ってる人いますか?
DoJa-3.5 で、エミュレータと SH900i ならデコードするのに
P900i と N900i は
java.lang.IllegalArgumentException: String is not Base64 encoded
なんて返してきます。
少なくともエミュレータの Base64.decode に与えてる String の
先頭 2 文字、最後 1 文字だけは、
実機も同じものってことは確認してるんですが・・・。
あと、その String の長さも、エミュレータと実機で一致。
ちなみにその String は http 経由でダウンロードしたものです。
リソースではまだやってなかったんで、これから試してみますが、
何か既知な情報とか、あるもんでしょうか?
>>642 どうもです!
質問の意図とばっちり合ってます
なるほど勉強なります
>>656 JBlendかどうかは知らんが、だいぶ絶望的なことになる模様。
>>657 途中に改行が入ってたりしない?
>657
備後です。
がんがん入ってました。
感謝です。
>>653 イマイチだ…いや、イマサンぐらいだ。
ImageMapといい、ドラクエでスクエニから喝でも入ったのかw
結局、900iとの互換重視になりそう。
662 :
デフォルトの名無しさん:04/11/18 21:27:05
JarInflaterで圧縮したサウンドファイルを展開し、
それを別クラスに渡して再生したいのですが、
JarInflaterのリファレンスは画像のみなので
それをサウンド用に置き換えて
MediaManager.getSound()で抜き出したり
MediaSoundを返すところでエラー続出・・・。
リファレンス以外のサンプルも見つからず
四苦八苦してます。
どなたかサンプルの載っているところとか
ご存じないでしょうか?
663 :
デフォルトの名無しさん:04/11/18 21:46:37
662です
連続スマソ
上記の件は解決しました。
圧縮ファイルに入っている曲は全て鳴ります。
・・・が、なんかテンポが速くなっているような・・・?
圧縮かけるとテンポ速くなる?
あれれ?
>>662 MediaManager.getSound(ji.getInputStream("hoge.mld"));
これでダメか?ダメならサウンドファイルが壊れてないか疑ってみろ。
それでもダメならソース晒してくれ。
てかそれ以前に、CLDCのInputStreamについて勉強してみろ。
そこをきちんと理解すれば、イメージだろうがサウンドだろうが
どんなデータでも扱い方が解るぞ。もう少し頑張れ。
665 :
デフォルトの名無しさん:04/11/18 22:29:09
ご説明ありがとうございます。
動作はするのですが、サウンドの再生がやはり早くなっているので
メディアデータ関連についてもう少し勉強してみます。
>>662-663 自己解決したのならどういう経緯で解決したのかを書いておくれ
そうでないと単なる日記帳に(ry
>>666 同感だ
>>665 器用にテンポ情報のみ壊れるのは凄いな。
聞くとレアケースぽいので、やはり、665の言うとおり漏れも詳細を聞きたい。
皆キミの情報を待ってるんだ!
668 :
デフォルトの名無しさん:04/11/19 02:04:47
iアプリレベル0 の初心者です。
よくある入口用アプリ "Hello World" をWebサーバにおいたのですがブラウザ起動しません。
P504iSで「指定されたソフトがありません」
P900iではメッセージは何もでないが aタグista属性で指定したURLが表示される。
エミュ(DoJa3.0)では起動しました。
a0301.jam
LaunchByBrowser = any
LastModified = Fri, 19 Nov 2004 01:44:17
AppClass = a0301
AppName = a0301
PackageURL = a0301.jar
AppSize = 752
起動html
<html>
<head></head>
<body>
<OBJECT declare id="iappli" data="
http://x.x.x.x/mobile/appli/i/a0301.jam" type="application/x-jam">
</OBJECT>
<A ista="#iappli" href="dummy.html">a0301の実行</A>
</body>
</html>
jam、jar、html は同じパス(/mobile/appli/i/)に入れました。
サーバ Apache Win32
アップロード FFFTP で無変換
だれか私をレベル0.1くらいにして下さい
>>668 アプリ自体は端末にダウンロードしてあるのか?
670 :
668:04/11/19 02:15:38
>>669 レスどうもです
ダウンロードしてません
一度ダウンロードしないとistaで起動しないってことですか?
671 :
デフォルトの名無しさん:04/11/19 02:23:04
JavaBlenderで
「アセンブラに関する内部エラーが発生しました。(Phase = 1)」
となるんですが、
どういう状況でこれが出るのかを知っていたら教えてください。
このスレにJavaBlenderの作者がいるのか?
>>665 だいぶ前、SH505でゲームを作っていたら、何もしてないのにどうしても曲が超速く再生されたなぁ…。
実機は信用おけん!
自力で解決しました。ありがとう、さようなら。
頼むから、自力解決したらその解決方法を書いていってくれ…
>>670 その通り。なので、istaで失敗したらijamで書かれたページに飛ばすか
両方のリンクを貼るのが一般的。ただし前者の方法だと
サイトからのバージョンアップが出来なくなるからこれは不便かな。
>>676 HttpConnectionクラスで使用できないだけ。i-modeブラウザは大丈夫。
しかしまあ、getSourceURLからHttpConnectionで使用できないホストが
戻ってくるわけだから、そのアプリは実質、使い物にはならないわけだ。
ども、悩める3Dプログラマです。
スレ違いな気がものすごくするけど、実際動かしているのがiアプリなので、こちらで質問させてもらうッス。
今、プリミティブ配列で作ったワイヤーフレーム立方体の中に数個のフィギアを描画させるアプリを
作ってるんですよ。で、そのアプリで一つ問題がありまして…。
正面から見ると、フレーム立方体内に収まってくれているフィギアなんですが、カメラ位置をずらすと
一定の地点でワイヤーフレームからはみ出るんですわ。
見る限りでは、ボールの位置に問題はなさそうだし、ワイヤーフレームのサイズも問題なさそう。
あと他に問題になりそうな部分ってあるかなぁ? 知っているヒトいましたら教えて下さい。
実行環境の演算精度が悪い悪寒
680 :
662:04/11/19 20:33:59
お騒がせしました662です。
職場で2chは無理なので対応遅れました。
で、質問時は余計にInputStream()使っていたことが原因です。
修正の結果以下のようになりました。
MediaSound ms=null;
try{
InputStream in = Connector.openInputStream("scratchpad:///0;pos="+jpos+",length="+jsize);
JarInflater ji = new JarInflater(in);
ms = MediaManager.getSound(ji.getInputStream(sound+".mld"));
ms.use();
}catch(IOException e){
System.out.println("ScratchPad getData Err."+e);
}catch(JarFormatException je){
System.out.println("ScratchPad getData Err."+je);
}
return ms;
読み込みの開始位置とサイズは、これがスクラッチパッドを管理するクラスの一部なので
その変数が入るようになってます。
これで今は動作してます。
しかし、テンポ狂いの件は未だ解決してません。
圧縮ツール等で変わってくると思いますので実験してます。
無圧縮にするとテンポ狂いが無い状態になるのですが・・・。
>>680 移動機のバグっぽかったら、DoCoMoに問い合わせた
方がいいよ。「市場問題」って扱いで
次モデルで修正されるかもしれず。
>>678 各フィギュアの平行移動にMicro3Dがなぜか推奨しているsetScreenCenter()を
使っているという落ちではないですよね?
「正確な意味合いでは別操作・・・」とマニュアルに書いてあるとおりなんで・・・
>>680 >圧縮ツール等で変わってくると思いますので実験してます。
おそらく、【Jar】Inflaterって位だから正式に動作保証されてるのは
Sunが吐くjarのフォーマットだろう。
実際には中身はzipだったりとかあると思うが、
7zみたいに無理してるのもあるだろうし、
まずはj2sdk同梱のjar.exeで試してみそ?
コマンドラインから、
jar cMf <圧縮後ファイル名> <圧縮するファイル.....>
だ。
684 :
668:04/11/20 00:12:39
>>676,677
そうだったのか。ありがとう。
HOST名指定とダウンロードしてから実行を試してみます。
685 :
662:04/11/20 00:24:17
662です。
>>683 レスありがとうございます。
JAR圧縮試していますが、FTPにUPするとファイル容量が0に。。。
なのでダウンロード時にエラーでます。
でもアプリ本体のJARはしっかりしてるしで、う〜ん。。。な状態に。
ご存知の方がいらっしゃったら教えて下さい。
プログラムでグラデーションを生成しようとしてます。必要なのは開始色と終了色の2つだけです。
しかし、getColorOfRGBの実行結果をもとに中間色を指定できれば
パラメーター二つで済むので楽ですが、getColorOfRGB自体、どういうロジックかわかりません。
まともにその都度、getColorOfRGBすると、開始色のRBG要素、終了色のRGB要素で、パラメーターが
6つになってしまいます。これは美しくないと思い…。
ご存知の方いらっしゃいますでしょうか?
え?え?
脳内設計の過程を書かれても・・・
>>686 「必要なのは開始色と終了色の2つだけ」とか言ったって、
数値2つから直接 中間の色が求まるわけではない。
R,G,Bに分解してその成分ごとに中間の色を算出して、
それらをまた合成して、初めて中間色の値が求まる。
つまり見せかけ上、開始色と終了色の2つのパラメータだけを与えれば
済みそうに思えても、実際には6つのパラメータがどうしても必要。
グラデーションの中間の色を求めるメソッドを作って、引数を開始色と
終了色の2つを与える形にしても、そのメソッドの内部で開始色、終了色
ともにR,G,Bへ分解しなければならないわけだから、「パラメータを2つ」
にこだわることは結局無意味。
>>689 ありがとうございます。なるほど了解しました。
実はグラフィッカーにも同じ質問したのですが、全く同じ回答でした。
doja_classes.zipを逆コンパイルしてgetColorOfRGB調べても何も出てこなかったし。
これは諦めるしかないですね。
実は現行のソースが、
private final int
COLOR_BLACK= Graphics.getColorOfRGB(000, 000, 000),
COLOR_WHITE= Graphics.getColorOfRGB(255, 255, 255),
COLOR_GRAY= Graphics.getColorOfRGB(128, 128, 128),
COLOR_RED= Graphics.getColorOfRGB(255, 0, 0),
COLOR_BLUE= Graphics.getColorOfRGB( 0, 0, 255)
;
みたいに、色関係はクラス宣言で生成してるので、
今回はその構造を変えたくなかった無精でございます。(反省)
みなさんありがとうございました。
アプリ作ったけど遅くて遅くて…
高速最適化に参考になる本やサイトないですかね
>>691 イメージ描画をとにかく限界まで抑える。
ブロック崩しだったら玉付近以外の描画は邪魔。
スロットだったら筐体の全体描画は邪魔。
全画面のメニューだったら、カーソル付近以外の描画は邪魔。
>>693 そういや、差分描画してるアプリの場合
レジューム時の画面再描画はどこまで保証されてるの?
>>694 サスペンド前に描画されてた部分のままと思うけど。
塗りつぶされるとかいうことはなかった。
(MIDPではこの辺アクが強かった気がするけど…)
>>695 さんきゅー。
差分描画を取り入れようとしてたが
その辺わからなかったので決心が付かなかったのだよ。
ちなみに
>>691とは別人。
697 :
662:04/11/20 21:14:37
662です。
FTPのUP時にJARファイルがおかしくなるのは
サーバー側による様です。
別の場所にUPしたら大丈夫でした。
・・・が、UPできたけど未だサウンド早い。。。
テンポの値ってプログラム上から制御できないものでしょうか?
ご存知の方お願いいたします。
>>697 テンポの設定・・・ないはず。
Basicみたいに
PLAY "T3CDEFGAB"
じゃ通用しないしw
>>662 いつまでも直らねえとかスレ違いの事言ってないで、発生してる端末名くらいかけよ
で、俺の予想としてはMLD内のマーカー位置とテンポの場所がバグってて、
再生する順番や読み込む順番で正常動作しないとか、そんなオチだろ
>>697 なんか、単にいろんなことを理解できてないだけかと
701 :
デフォルトの名無しさん:04/11/21 17:26:49
携帯内の画像の表示について質問があります。
ImageStore imgst;
MediaImage m;
Image img;
imgst = ImageStore.selectEntry();
m = imgst.getImage();
m.use();
img = m.getImage();
として携帯内の画像を読み込んでいるのですが、
drawImage(img,0,0);
drawRect(0,0,img.getWidth(),img.getHeight());
として画像の周りに腺で枠を表示させようとしているのですが、
N505iで試してみたら、
----------
|画像画像|
|画像画像|
| |
----------
となり、下の方に隙間ができてしまいます。
Dojaでは隙間が出ずに表示されました。
この原因ご存知の方いたら教えてください。
画面サイズが違うから
用語の意味を正しく理解しろ >Doja
704 :
701:04/11/21 21:39:04
先ほど書き込んだ701です。
>>703確かに使い方間違えてました。指摘どうもです。
resフォルダに入れた画像、ネットからスクラッチパッド
に保存した画像でどうなるかも試したのですが、
それでは隙間ができずに表示されました。
ImageStore.selectEntry()で取得した画像は
getWidth,getHeightで正しく値が入らないとかあるのでしょうか…?
あります
隙間ができるできないの見た目じゃなくて、ちゃんと縦横の数値で確認したの?
携帯内にある取り込もうとしてる画像の縦横の値と、
drawRectするときの縦横の値を比較して、それがどうなってるかが問題でしょ。
707 :
701:04/11/21 22:24:56
説明不足でしたが、getWidthとgetHeightで取得できる値と
携帯内にある画像の縦横の値は確認とりましたが値は同じでした。
resフォルダのものでも値は同じでしたが、それは正常に表示されました。
>>701=707 言ってることがやや意味不明なんだが。
マイピクチャにある画像の縦横サイズと、
resフォルダにある同じ画像の縦横サイズと、
drawRectの引数の縦横サイズ、の3つが全部同じ値であることが確認できたんだよね。
それでマイピクチャにある画像のときに隙間が空くって、画像が縮んで表示されるのか?
なんだか701の手元で何が起こってるのかよく分からないけど
画像(jpegかな?)の後ろに何かしらのゴミデータが
くっついてるんじゃないかと予想するがどうか。
>getWidthとgetHeightで取得できる値と
>携帯内にある画像の縦横の値は確認とりましたが値は同じでした。
同じなのに隙間が出るって事は、画像が縮んでるか途中で切れてるかだな
>>701 つか
エミュレータの画面をキャプってドットを数えてみろ。
実際にキャプった画像の大きさがもしも変わっていればそこがおかしいし、
画像の大きさが変わってないのに隙間が生じるなら
枠の幅と高さが画像と一致してない。
あと、
drawRect(0,0,10,10);とかやった時に
何ドットの矩形が描かれるのかを勉強しなさい
712 :
デフォルトの名無しさん:04/11/22 09:18:45
猪突だけど、F900iって速度速いの?
あまり良い噂聞かないけど、
itMediaの記事だと良い線行ってるよね。
714 :
デフォルトの名無しさん:04/11/22 13:43:06
猪突?
もしかして唐突って言いたい?
715 :
デフォルトの名無しさん:04/11/22 14:03:04
DoJa4.0でコンパイルされて、
DoJa4.0の新機能なども使っているアプリを
DoJa3.0で実行させることは可能でしょうか?
色々試したのですが、
1.新機能自体は使われているが新機能の箇所に実行が到達しない。
→実行OK
2.新機能の箇所に実行が到達する。
→αエラー(トレース情報も出力なし)
3.try{}catch()
→Throwableでも拾えないので根本的に拾えない?
プロファイルバージョンが拾えればそこで条件分岐させるのですが…
>>716 ClassNotFoundExceptionをcatchすれ。
サンプルのテトリスをいじっているのですが、
右キーを1回押したら右に1マス移動、素早く2回押したら右端まで移動、
というような処理をさせたい場合、
キー判定はどうすれば、いいのでしょうか?
わかる方いましたら、ご教授ください。
>>716 それやると、根本的にDLさせてくれない機種があったような。
あれ?DojaじゃなくってMIDPだっけ?
>>718 2秒間くらいまでのキー操作ログを保存しておくようにする。
そして、右キーを押したとき「ここ最近にも右キーが押されてなかったか」を調べるのだ。
>>716 System.getProperty()は試したのか?
ダブルクリックで端に移動はぶっちゃけあり得ない。
ブロックを2マス動かそうと思ったらいきなり端に! うわーどうしよう。
「*」キーと同時押しの場合は、高速移動って
ことにしてみては。
押しっぱなしかどうかだけを判定する。
・・・初押しからのタメが邪魔か。
>>720 >>721 >>723 >>724 >>725 たしかに、この操作方法だと最悪です。
で、721さんのレスを参考に、下記を作りました。
絶対1回は右に移動してしまいますが・・・。
レスくださった皆さん、どうもありがとうございました。
boolean b_left=false; ShortTimer st;
public void processEvent(int type,int param) {
if (type==Display.TIMER_EXPIRED_EVENT && param==0) {
if(st!=null){st.dispose();}
b_left=false;
//右キーを押しっぱなしにしていたら
if((getKeypadState() & (1<<Display.KEY_RIGHT))!=0) {
右に1マス移動をスレッドで繰り返し;
}
}
if (type == Display.KEY_PRESSED_EVENT && param == Display.KEY_RIGHT) {
if(b_left){
b_left=false;
右に1マス移動をスレッドで繰り返し;
} else {
if(st!=null){st.dispose();}
st=ShortTimer.getShortTimer(this,0,400,false);
st.start();
b_left=true;
右に1マス移動;
}
}
}
>>717 メソッドはないけどクラスはあったから無理でした。
具体的には、getColorOfRBG(int, int, int, int);です。
GraphicsはDoJa1.0からあるし。
>>719 ダウンロードできました。
確かその仕様は、J-PHONEでしたっけ?
>>722 今回は素直にそれにします。
901iの次の機種名が解らないので躊躇してましたw
機種名じゃなくてプロファイルバージョン拾えれば万事解決なのに。
>>727 今後はADFのProfileVerキーをちゃんと書いてリリースしような
729 :
名無しさん:04/11/22 23:11:54
>>713 F900iは描画は遅い。
ITmediaのベンチマークは描画部分は信用できない。
どうもrepaint()呼び出しただけで、描画が終了するのを待っていない
気がする。
スマソ。ADFにプロファイルのバージョンが記述されてても、それを拾っても意味ないね。
その端末が最高どのバージョンのプロファイルまで対応してるかってのが取得できるわけ
じゃないもんな。
>>731 記述通りによむなら各頂点かプリミティブ単位で法線情報持たせ、
NORMAL_PER_FACE あたりを設定するように見えるが。
D3Dみたいに頂点の順番とON/OFFスイッチでは切りかえれないように見えるが、それはあってる?
733 :
522:04/11/23 18:58:10
激しく亀レスすみません。
takeMovieの競合なのですが
その後、色々試して見たのですが
どうも、takeMovieよりも先にgetAvailablePictureSizesを行うと
発生してしまうようなのです。
また、アプリ起動後にしばらく放置しておくと
takeMovieでの競合が発生しないようです。
放置しておくことでgetAvailablePictureSizesで使用したカメラデバイスの
解放が行われるのでしょうか?
明示的にデバイスの解放を行う方法があったら教えてください。
ちなみにF900iやiアプリエミュレータでは競合は発生せず
P900iでおきています。
>>524 com.nttdocomo.device.Camera を使用しています。
>>733 PでgetAvailablePictureSizesできるのは
静止画のときだけだった希ガス。
スマソ
いい加減なことを言ってしまった。スルーしてちょ。
>>732 NORMAL_PER_FACEを指定してみたが片面ポリゴンにならなかった。
エミュ、P900で確認しました。
頂点の順番(時計回り)なども関係なく両面ポリゴンになってしまう。 orz
裏面消去するだけで、処理速度だけでなくポリゴン割れなどもかなり
改善できるのにな〜。
自前で裏面かどうか調べてプリミティブ登録しなおすのは
処理速度的にツライし困ったな。。。
どう考えても既出ぽいですが、dat落ちで過去ログ読めないので勘弁して下さい。
アクション、シューティングなど、getKeyPadStateが前提となる作りのゲームは
どうすればSOのジョグに対応できるのですか?
processEventでフラグ管理も考えましたが、今度は、SO以外のチョイ押しで
SO処理並にたくさん動かれても困るので…。
ジョグとノーマルとの2パッケージ作る。
>>738 公式見てると、2パッケージになってないアプリがあるんですよ。
(ADF情報表示して判断してます)
ジョグが嫌なら数字キーでやってもらう。
SO503以外はそのままでいいんじゃないの?
742 :
522:04/11/24 02:20:43
>>733 スルーという事なんですが一応。
getAvailablePictureSizesは別の処理で静止画撮影もするので
サイズ取得の初期処理で使ってます。
動画のサイズ取得はgetAvailableMovieSizesというのがあるので
それで別個に取得しています。
すみません。
ずっとsage忘れていました・・・
その辺の操作性云々はSOユーザーも解ってるっぽだから、
数字キーのみでSO専用操作は一切作ってない。
元から数字キー目一杯使うアプリなら南無としか。
>>694 すっごい遅レスだが、レジューム時の描画されたものの保障は機種依存。
今ではほとんど対象にはならないだろうが503系は崩れた画像になる機種が多い。
描画が保障されていない証拠にエミュでレジュームを起こしてみるとわかる。保持されない。
が、504以降で描画を保持してないものはなかったと思う。
アプリ容量があるならレジュームが発生した場合は全部描画しなおせるよう組み上げるのが良い。
ミニマムスペックでない以上今後保持しない機種が出ないとも限らんない。(無いとは思うがw)
レジュームが発生した1フレームを全描画しなおそうが処理速度の低下を感じることはないしな。
HttpConnectionってinputConnectionを
スーパーインターフェースに持ってるので
openDataInputStreamをサポートしてますよね。
そのHttpConnection.openDataInputStream()のインスタンスからの
available()ですが、CLDC仕様書には
「ブロックせずに入力ストリームから読み込むことができるバイト数を返します。 」
と書いてあります。が、SO505iでは、常に0が帰ってきてる気がします。
これって端末バグかなあ?
Content-length返さない糞鯖でコンテンツ長が欲しいのに。
900i用のドラクエで敵と遭遇したときのような
スムーズなホワイトアウト処理ってどうやってやってるんだろ?
ImageとGraphicsのメソッドだけじゃできないよね?
748 :
デフォルトの名無しさん:04/11/24 19:06:49
こんばんわ。質問なのですが
HTTP通信をアプリでおこなった後、closeを行っても
iモード待機状態(iのアイコンが点滅している状態)が解除されないのですが
これをアプリ側で解除する方法はないでしょうか?
>>748 無理。
「通信してるんじゃないですか?」「パケット代かかるんじゃないですか?」とか
ユーザーサポートに死ぬほど問い合わせが来るんだろ?気持ち解るよ。
751 :
デフォルトの名無しさん:04/11/24 20:07:38
>>746 available()は使ったこと無いんだけど、SO505はskipBytes()が正しく動作しないので何かあるかも。
ちなみに単にread()で0がくるまで読み込むってのはダメなんですか?
Content-lengthはサーバーサイドに返すようにお願いしてもらうのも1つの手かと。
>>751 確かに怪しいですね。諦めるのが吉に思えてきました。
>ちなみに単にread()で0がくるまで読み込むってのはダメなんですか?
神経質になりすぎなのかもしれないのですが、20480バイトとかフルに読むと、
DやNであからさまに動作速度が異なるんですよ。
20480×5のファイルを取得する初回起動で1.5倍ほどの時間差がありました。
(しかしメソッドだけは汎用的に作っておきたいのでバッファ長を定数で記述するのは嫌なのです。)
>Content-lengthはサーバーサイドに返すようにお願いしてもらうのも1つの手かと。
ウチ、孫受けなんですよ。大人の事情ですねw
>>749 Graphics3DとPrimitiveArrayを使ってやってみようと
調べてみたけどハーフブレンド(50%透過)しか指定できないですね…。
ワカンネ(;´А`)
>>753 ちょっと白いPrimitiveArray数枚を加算で加えれば
出来るのでは?
徐々に重ねる(表示する)枚数を増やせば
ホワイトアウトの出来上がり。
>>754 その「ちょっと白い」の実現方法が見つからないんですよね。
で、さらに調べてたらどうもGraphics2#setRenderMode()を使って
ラスタオペレーションが出来ることがわかりました。
ちょっとこれで実験してみます。
ついでにわかったこと。
拡張API実装状況のPDFを眺めてたら、900iの実機のうち、
Graphics2#setRenderMode()に非対応なのはD900iだけでした。
ドラクエがD900iに非対応なのはコレのせいですかね。。。
PrimitiveArrayって色指定出来なかったっけ?
ちょっと白いってのは要するに RGBが同値
例えば R:32, G:32, B:32 とか。
これを8枚加算合成(ADDBLENDだっけ?)すれば
真っ白になったと思ったが。
>>755 もっと調べると2Dの半透明は機種依存が激しすぎで使い物にならない事がわかるよw
他の人が言ってるようにポリゴンを加算モードで描画すれば出来る
レッドアウトとかは無理だけど、白(加算)か黒(減算)なら簡単
ドラクエがD非対応なのは、こいつだけヒープが極端に少ないからだろう
いや。多分Graphics2を使ってると思う。
使って無くてもヒープ少なすぎてD900ではできないだろうけどw
あの処理の早さを見る限り、ポリゴンの複数重ねがけはやってないと思われる。
うちもそれ試したんだけど、遅くて使い物にならなかったから、間違いない(苦笑
>>758 非公式メソッドのIApplication#isDraqueメソッドをオーバーライドしてtrueを返すようにすると速くなります。
760 :
デフォルトの名無しさん:04/11/25 09:58:37
テキストボックスにデフォルトで、小文字のアルファベットで入力させたいんですが、
textbox=new TextBox("",5,1,TextBox.ALPHA);
とした場合、実機でためしたところ、入力が全角かなで、表示は***
となりました。
どーしたらうまくいくのでしょうか?
>>758 ポリゴンは一枚でいい
色を変えるんだよ
>>760 よく見ろ
初期入力モードの設定はここじゃ無い
>TextBox(String text, int columns, int rows, int mode)
> 初期文字列と桁数、行数、表示モードを指定してテキストボックスを生成します。
isDraque?ドラクエだったら高速化するって事か?
ありえねぇw
ネタでしょ
764 :
デフォルトの名無しさん:04/11/25 13:03:45
isDraqueUをTrueにすればもっと早くなるよ
>761
でけた! ありがd
Dってそこまでヒープ少ないかね?
んぱか工房に載ってるのだとJAVAヒープがFより1000KB少ないだけじゃん。
1500KBも以上JAVAヒープ使うことって普通ある?
>>766 他のサイトを読んだ解釈でしかないが以下のような事で説明できると思う。
DのJAVAヒープが足らなくなる原因は大きく分けて2つ
1:もともと少ない。
2:画像1ドットあたりで消費するJAVAヒープの量が他の機種より多い。
(他の機種では1ドットあたり2〜3バイト程度消費、Dは1ドットあたり4バイト程度消費するらしい)
とくに最近の機種は画像増加の傾向があるので2の差は凄いことになると思う。
Dは内部32ビットカラーなのか?
メモリの無駄っぽい。
Dは少なくとも505の時、1バイトあたりの消費容量がほかよりでかかった。
多分32bitだと思う。
ところでD900iのシェアってどのくらい?
不具合も多いし、遅いし、Graphics2も使えない。
900専用ゲームでは切りたいんだけど、具体的シェアがわからないと説得しづらい。
俺の勝手アプリサイトのトップページの900iのアクセス比率、直近2週間
N900i系 39%
P900i系 29%
SH900i系 18%
F900i系 10%
D900i系 3%
結論:放置プレイ可
>>766 昔の知識ですまないんだが、DってJavaヒープで画像扱ってたか?
F以外は皆、Imageの実態はCヒープで管理していた気がするんだが、最近は皆Java
ヒープを使うようになった?
Dって描画命令使ったときに激しくメモリ消費する機種でしょ?
>>764 やってみたら、なんか、あぶない水着っていうのがでてきました。
>>746 available()が正しく実装されていても、Content-Lengthの代わりにはならないと思うのだが。
776 :
デフォルトの名無しさん:04/11/26 08:36:05
>>746 データの先頭4バイトにデータ長を入れておけばよいのでは
777 :
デフォルトの名無しさん:04/11/26 09:07:44
777
778 :
デフォルトの名無しさん:04/11/26 09:31:15
>>773 お前、それisDraqueVじゃんか。
Uよりも早いけどデータ消える事あるから注意な
あるスレッドに外部から割り込みかけることは出来るんですか?
javadocのInterruptExceptionを読むと
あるスレッドが長い間の待ち状態、休止状態、または一時停止の状態であるとき、
他のスレッドが Thread クラスの interrupt メソッドを使って
この状態に割り込みをかけた場合にスローされます。
と書いてあるのに、Thread読んでもinterruptがない??
>>779 CLDC1.0がJ2SEのサブセットであることによる呪縛。
interrupt()は削ったけど、sleep() throws InterruptedExceptionは残したので
InterruptedExceptinoは消せないのよ。
ちなみに、CLDC1.1だと、interrupt()が復活したから、InterruptedExceptionも使えます。
> ちなみに、CLDC1.1だと、interrupt()が復活したから、InterruptedExceptionも使えます。
ほうほう
仕様書のマイナーチェンジとバグフィックスの所に書いてあるね
■ Boolean.TRUE and Boolean.FALSE
■ Date.toString()
■ Random.nextInt(int n)
■ String.intern()
■ String.equalsIgnoreCase()
■ Thread.interrupt()
まあ901専用アプリは作らないから関係ないけど
>>782 どういうことやりたいかによるけど、waitとnotify(やnotifyAll)使っても無理そうなことなの?
>>782 あ、interrupt()した時にInterruptExceptionが発生するのは、sleepとかwaitとかしてる時に
interruptされた時だけだからね。
それ以外はisInterruptか何かがtrueになるだけ。
そっちはbooleanでインスタンス変数1つ持っておけば簡単に実装できるし。
>>783 描画して、sleepして、を繰り返してるスレッド(してることはスタッフロールの表示)を
外部からの割り込み(この場合はユーザーからのキー入力)で
強制終了させたいんですよ。
while(loopflag){ /*描画*/ }
みたいな実装なら外部からloopflagいじるだけなのですが、
諸般の事情でそうもいかないという。
今日の機種依存:
N900i系、P900i系、N505i系で動かないときは、
320×320を超えるイメージを使っていないか疑いましょう。
>>785 特殊な状況っぽいので、もっと詳細がないと期待された答えが返ってこないと思う。
描画してsleepしてフラグチェックして、を繰り返せばいいだけじゃないの?
フラグはprocessEventで変化させればいい
そもそも、描画してsleepしてフラグチェックしての繰り返しで足らないなら
interrupt()があってもやっぱり足らない罠。
790 :
デフォルトの名無しさん:04/11/29 18:50:38
FOMA900シリーズのiアプリでは、バイブレータは作動しないようですが、
どうなのでしょうか?
>>790 んなこたーない。
端末側の設定でバイブレータOFFにしてあるだけじゃないの?
>>785 うーん、諸般の事情がわからないと何とも言えないが、
どうしてもsleep()中にユーザーのキー操作で起こしたいの?
それやるんならタイムアウト付きのwaitとnotifyでもできるんじゃない?
タイムアウト付きのwaitってCLDCにもあったよね?(今手元にAPIリファレンスがない…)
>>787-789 亀レスすみません。Thread#interrupt()がなくて困っていた件です。
>>788 確かに定石ですね。ありがとうございます。
ただ今回採用できなかったのは、強制終了させたいスレッドから
自作メソッド(こちらもthrows InterruptException)をかなりコールしてて、
それらメソッドは他のアプリでもそのまま流用するので、
極力、外部変数を参照させたくなかったのです。
つまりクラス内変数以外で外部との通信手段が必要な箇所がある、ということです。
>>789 確かに。なので、仮にinterrupt()あったとしたら、
終了確認するまでinterrupt()を無限ループさせる感じの実装ですね。
それで皆さんにご助言頂いたあと色々と試行錯誤してみたのですが、
メソッドの引数で配列を渡せばCのポインタみたく使えることを知ったので、
ユーティリティメソッドにはフラグのポインタを渡して、
強制終了の指示はそちらからやってみよう、という結論に達したのですが
この考え方はで何か弊害など出る可能性はあるのでしょうか??
どんどん変な方向へ行ってないか?
>つまりクラス内変数以外で外部との通信手段が必要な箇所がある、ということです。
直接代入するとか
a.val = 0;
アクセサメソッドを作るとか
a.setVal(0);
795 :
デフォルトの名無しさん:04/11/30 10:41:38
Java Blender1.18aで圧縮しようとしたところ
「足りないクラスがあります(phase=2)」
と表示されたんですが、コンパイル&実行でエラー無いのになんで?
クラスにパスとおってないんだろ。
環境も、Versionも、パスも設定も書かずに分かるか。俺らはお前か?
・使い方が間違っている
・JavaBlenderのバグ
・ソースがDoJa4.0用
誰か知っていたら教えて欲しいんだけど…
N506 で以下の処理を実行したら、3行目でエラーがでて困ってます。
Fig[0] = new Figure(Connector.openDataInputStream("resource:///0.mbac"));
Fig[1] = new Figure(Connector.openDataInputStream("resource:///1.mbac"));
Fig[2] = new Figure(Connector.openDataInputStream("resource:///0.mbac"));
Tex[0] = new Texture(Connector.openDataInputStream("resource:///TX0.bmp"), false );
Tex[1] = new Texture(Connector.openDataInputStream("resource:///TX1.bmp"), false );
Tex[2] = new Texture(Connector.openDataInputStream("resource:///TX2.bmp"), false );
Tex[3] = new Texture(Connector.openDataInputStream("resource:///TX3.bmp"), false );
やりたい事は、テクスチャが違う Figure を使いたいだけなんだけど、SH505 ではきちんと動くんだが、
N506 では「too many resource connections」とかいうエラーが出てしまう。
そして、3行目をコメントアウトするとエラーは出ないんですよ。
もしかしてNシリーズは、リソース使い回しできない?(もしくは別の回避方法があるのかな?)
close()はどうなってんの?
こういう場合勝手に閉じてくれるのか?
closeしないでopenを2回やったらエラーが出て当然。
>799-800
おおっ! とんでもなく初歩的な事を忘れていた。
エミュや SH505 では問題なかったんで、全然考えてなかったよ。
とすると、開いた Stream は手動で閉じなきゃイカンから、openDataInputStream
を間接で指定して、使い終わったら close() を実行しなきゃいけない訳ね。
スゴク助かったよ、ありがとう〜。
>>790 こちらも同じく、バイブレータが作動しません。
ただ、作動しないのはN900だけですけど。
804 :
デフォルトの名無しさん:04/12/01 08:53:41
791,803に同意
FOMAはマナーモードの設定がPDCより複雑になっているので設定を確かめるべし。
わからなければ端末設定全リセットだ。
オレは幾度と無く振動しねえとバグ扱いされたぜ。(くそ)
>>803 >>804 携帯側の設定を変えると、他のサイトでDLしたアプリは
振動するらしいんですけど、問題のアプリは振動しないです。
他の機種では問題なく振動しているのですが・・・
Nだけ何か特別な設定が・・・?
>>805 Nだと、バイブの動きが
「通常iアプリ」と「待受iアプリ」で
違った希ガス。
>>806 問題のアプリは「通常iアプリ」
他の問題なく振動しているのも「通常iアプリ」なんです・・・
朝からずっと情報を集めているんですけど、
他に同じ症状の人が見当たらないんです。
これは、こちらのソースが悪いんでしょうか・・・?
携帯端末側の設定が問題無いと仮定すると
原因はプログラム側だろうね。
ためしに違う部分で振動させてみたら?
例えばゲームであればタイトルで1キー押したら
振動させるとかのデバッグモード作ってみるとか。
面倒だったらタイトル入ったら振動でも良いし。
809 :
802:04/12/01 22:08:37
>>808 違う箇所でも振動しないです・・・。
もとはDoJa3.0で作ってて505で動かしてたんですけど、
そのときはほとんどの機種で動いたのに・・・。
何のためにJavaを採用したのか不明だな
Javaは機種依存問題を解決するための銀の弾丸じゃないし。
お前銀の弾丸言いたいだけちゃうんかと。
ワロス
ゲーム実行中にカクッってなるのを防ぐことは出来ませんか?
何がどうカクッなんだ。
ちゃんと説明しろ
817 :
デフォルトの名無しさん:04/12/02 18:21:49
Display.setCurrent(x);で画面を切り替える場合、
画面それぞれでソフトキーの動作を変えることって可能でしょうか?
>>815 こまめにSystem.gc();汁
>>817 メインの画面とソフトキーは独立してる
自前で処理汁
x1.setSoftLabel(x1.SOFT_KEY_2,"次へ");
x1.setSoftKeyListener(this);
x2.setSoftLabel(x2.SOFT_KEY_2,"次へ");
x2.setSoftKeyListener(this);
public void softKeyPressed(int softKey){}
public void softKeyReleased( int softKey){
if( softKey == p0.SOFT_KEY_2){
Display.setCurrent(x1);
}
if( softKey == p1.SOFT_KEY_2){
Display.setCurrent(x2);
}
}
これだと連続して切り替わっちゃう…
なぜ〜?
↑間違い
↓訂正
x1.setSoftLabel(x1.SOFT_KEY_2,"次へ");
x1.setSoftKeyListener(this);
x2.setSoftLabel(x2.SOFT_KEY_2,"次へ");
x2.setSoftKeyListener(this);
public void softKeyPressed(int softKey){}
public void softKeyReleased( int softKey){
if( softKey == x1.SOFT_KEY_2){
Display.setCurrent(x2);
}
if( softKey == x2.SOFT_KEY_2){
Display.setCurrent(x3);
}
}
public void softKeyReleased( int softKey){
if( softKey == Frame.SOFT_KEY_2){
if(Display.getCurrent() == x1){
Display.setCurrent(x2);
}else if(Display.getCurrent() == x2){
Display.setCurrent(x3);
}
}
}
こうかなぁ‥試してないけど
x1.SOFT_KEY_2とx2.SOFT_KEY_2は定数(1)だよ
softKey == 1 って書くのと同じ
あと
>>818の言ってることが良くわからんが、
setSoftLabelの説明見る限りでは各Frameに属するっぽいぞ
>設定したラベル文字列は、このフレームがカレントフレームになったときに、
>ソフトキーのラベル文字列を表示する位置に自動的に設定されます。
>>823 できました!
if(Display.getCurrent() == x1){}
の考えはあったんですが、方法がわかりませんでした。。。
ありがとうございます!!
>>822 しかし我々にはその手段しかないのだ。
精一杯それをやるしかあるまい。
オブジェクトの破棄とメモリの回収をいつするか意識して、
造ることですな。
元々ゲームみたいに、リアルタイム性重視のソフトにJava
使うのはおかしいんだけど。
最近のほんとんどのゲームではリアルタイムは重視されてない。
そもそもSystem.gc()頻繁に呼ぶと本当に何か効果があるの?
そもそもGCってのはそういうものじゃないはずなのだが...。
>>829 伝説のように「安定させておきたいなら呼んでおけ」っていうのを聞いたことはある。
都市伝説
頻繁にgcすればプチフリーズは無くなるよ
リアルタイム性の高いゲームなんかじゃ必須
GCの実装にもよる。
メモリがどうしようもないくらい圧迫されてからガッと一気に解放するような実装なら
頻繁にSystem.gc()を呼ぶのは有効。
アプリケーションメモリとスクラッチパッドの入出力速度の差ってどれくらいありますか?
836 :
デフォルトの名無しさん:04/12/04 05:23:15
>>834 速度計測アプリつくって是非ここで結果をアップしてくれ。
>>829-830 一年に一度しかデフラグしないHDDと一週間に一度デフラグしてるHDD、
一度あたりのデフラグ時間はどちらが短いか、ファイルの破損確率は
どちらが高いか、そういう話です。
>>833 漏れの場合、そもそもgc不要なアプリを「目指して」作ってる。
String型の操作は一切行わず、クラス内変数の宣言以外ではnewは使わない、
文字列を操作したいときも、あくまで静的に確保されたバッファの中でやる。
この辺り守るだけで、SPへのアクセスや通信時以外は
メモリの新規確保はなしでアプリは走るよ。
>>837 > 一年に一度しかデフラグしないHDDと一週間に一度デフラグしてるHDD、
> 一度あたりのデフラグ時間はどちらが短いか、ファイルの破損確率は
> どちらが高いか、そういう話です。
つまり、System.gc()についてよくわかってないってことですね?
画像の展開やらサウンドのAPIそのほか何らかのAPI呼び出しの中で
ヒープなんかガンガン使われてると思うんだが。
>>837 > この辺り守るだけで、SPへのアクセスや通信時以外は
> メモリの新規確保はなしでアプリは走るよ。
現実問題として、そこまでしなきゃならん端末あるのか?
具体的な機種名分かるなら教えてくれ。
N504iがSystem.gc()を頻繁に呼ぶだけで解決するのは知ってるが。
841 :
デフォルトの名無しさん:04/12/05 03:12:33
WEBから画像を複数枚数DLしてスクラッチパッドに保存し、日替わりで画像を入れ替えられる待ち受けアプリを作成して
いるのですが、一部の機種で画像のDL時にConnectionExceptionが出て困っております。
同じプログラムでありながら、Doja,F2102V,N505iS,SH900i,SO505i,F900iCでは問題なく画像をダウンロードします。
ですが、P2102V,N2102Vでは画像DL時に上記のエラーが出て落ちてしまいます。
もしかして原因がわかるかも?と思い、ConnectionExceptionの時ダイアログを出るようにして、試しにP2102Vを通常
起動させてみるとダイアログが表示されたのですが、その時そのままダイアログを出しっぱなしにしておくと裏で画像を
なぜかDLしていました。
iアプリ作成初心者なので、全然原因がわからず困っております。
お知恵を貸していただけないでしょうか?よろしくお願いします。
メモリの管理は
>>837に似たような事はよくやる
Brew移植とかを考えると都合が良いし
あとは高速性を求められるアプリでもよくやる
ていうかさあ、VM実装してる連中だって無能じゃあないのよ。
いわゆるふんづまり現象は、ゲームだけでなく、サーバアプリケーションのレスポンスや
GUIアプリのユーザビリティなんかにも支障ができるから、
インクリメンタルGCとか、メモリコンパクションをせいぜい1回数msまでにおさえたりとか
ちゃんと計算してる。角度とか。
ついでにJ2SEの話だが、Java 1.0や1.1あたりの頃はそうやってメモリ確保を避けたコードでも
なぜか頻繁にふんづまり現象を起こしまくってた。
結局、VMやAPIのネイティブ部の実装次第でどんなコードを書こうが問題は起こるし、
どんなコードを書こうが問題は起こらない。
携帯によりまともなVMが載るに従って、その手の努力はまったくの無駄になろう。
というか、現状で既に無駄だと思うんだけど。
画像を大量につかうアプリを作ったとき
大量に配布すると、ごく僅かな人からgetImageあたりでUIExceptionが出ると
報告を受ける。同じ機種なのに動く人と動かない人がいるケース。
こんなときは、その周辺にgcを置くだけで動いたりするんだよな。
これ本当によくあるケースね。
携帯Javaの場合、JavaといいながらネイティブのAPIにデータ渡すだけ
っていうパターンが多いからね。機種依存ありまくりです。
>どんなコードを書こうが問題は起こらない
ここだけ違うな
どんな実装でも問題の起こる可能性を最低限にするために
GCを配置しておく、というのが正解
たとえばアクションゲームなら、ステージ切替やメニュー選択の
ときに明示的にGCすれば充分効果あるでしょ。
>>843 >ていうかさあ、VM実装してる連中だって無能じゃあないのよ。
なにか夢を見てませんか
正直
有能とはとても言いがたいクソ端末のなんと多いことか・・
プログラマ側が>837ぐらいのことしないといけない現状は変だよな。
端末の方がおかしいんだから、もう皆で開き直らない?
まあ、端末によってはGCが必要だと判断するタイミングにバグがあるのかもしれんね。
普通、メモリを確保しようとして、だめそうだったら、GCしてから再度確保するのがまともな実装なわけだが、
だめだったらあきらめる実装とかがあるのかねえ。
>>852 前にもいったけど、
実際毎回GCかけつつヒープの使用量を表示したことがあったが、
メモリ足りなくなるまでGCかけてもスルーされる端末が存在するよ。
854 :
デフォルトの名無しさん:04/12/05 22:43:17
なんかスレ違いかもしれませんが、プログラマのみなさまに質問したいのです。
まず携帯電話で、カメラを起動させます。
カメラを左に動かすと、それに伴って映像も左に流れるわけですが、
これを検知するようなプログラムは、作成可能なのでしょうか?
カメラの画像をリアルタイムにプログラム処理できるわけじゃないので不可能。
そうですか・・・残念です。
レスありがとうございました。
一定周期でGC呼ぶと呼んだフレームだけカクっと処理が落ちるのは俺だけ?
呼んだ方が定期的にカクっと落ちるので使うのをかなり限定した。
毎フレーム呼ぶとかなり糞重いのでそれは却下したけど。似たような奴いない?
>>858 900i専用ゲーム作ってた時になったよ。
シーン切り替え時とデータ展開後以外GCは止めた。
>>858 それは当たり前だ、そのために処理遅くなってもよいタイミングで、
明示的にGC呼ぶんじゃないのかと思うのは俺だけか?
gcってそんなに重いのか?
900iの特定の機種だけじゃないの?
つうか、一応仕事とかで全機種対応を迫られる人が見てるケースが多いと思うんだよ、ここ。
だから「System.gc()は頻繁に呼んだほうがベター(N504などで起こるプチフリーズが解消できるから)」
という台詞に「起こらない端末のほうが多いのだから、それは無駄」と答えるのはいかがなものか。
なるべく全ての端末で(なるべく共通のソースで)やるためには、
そういう無駄も仕方ないし、そういう情報はみんな欲しいんじゃないのか?
901以降開発コストを下げるために共通化が進むみたいだから、機種による差が減ることを祈るばかり‥
>>863 共通化が進むってどこの情報?
ソース希望
雑誌の日経エレクトロニクスにも出てたよ
867 :
デフォルトの名無しさん:04/12/07 02:15:18
2年後にはこのスレも無いかもな。
2chもろとも
BREWの波はそこまで来てる。
引き潮。
で、結局gc呼びまくらにゃならん具体的な機種どれよ?(N504i以外で)
正直オカルトの類な気もするんだが。
SH901iC
なんかgc呼んでる回数の割に効いてない気がする
>>871 開発するアプリ内容でかわってくるから一概に言えないと思うが。
基本的に画像データを頻繁に入れ替えるアプリではN>D>その他
みたいな感覚は持ってるけどな。GCの使用頻度は。
過去にGC使いつつメモリの容量の流れを見てたことがあるが
GCを使ってもどんどん空き容量が・・つまり開放される容量が
減っていくんだよなぁ。でDなんかはその減りつつあるときに
デカイ画像をポンと表示すれば落ちるわけでw
874 :
デフォルトの名無しさん:04/12/07 12:54:58
>>871 自分の経験だけで応えると
D505iとP505i(s)でgc入れただけで動くようになったことアリ。
>>871 スマソ
俺が言ったのは一瞬固まる例の現象のことではなかったぞぇorz
単にリソースたんねーってエラーが出て動かなかったのが
gc入れただけで動くようになったって話デスタ。
着メロ止めたいんだけどどうやるの?
>>879 質問の意図が不鮮明すぎ・・。
プログラム的に答えるなら単純にstop使え。
つか鳴らせるなら当然判ることだから・・
まさかとは思うがiアプリ関係のプログラムには
一切関係ない質問じゃないだろうな・・・。
任意の整数からdate型またはカレンダー型に変更するには
どうしたらいいですか?
残り時間 = 現在時刻 - 整数で作った時刻
みたいな式をしたいんですが・・
new Date(1000);
900i用のゲームを作ってるんですが
F900iでなんか処理がやたら重くてどうしようか困っています。
なんかF900iって変な癖ありますか?
F900iは優秀なほうだと思うけど…。(F505は糞だったがw)
具体的にどういうことやらせてるん?
>>883 グラフィックへ描画命令と実際のディスプレイへの反映が非同期で、
描画命令を受け取っても一旦バッファにたまる。
で、実際のディスプレイへの反映が間に合わないくらいの速度で
描画命令を繰り替えると、バッファが一杯になって急に速度が落ちたり、
バッファが急にフラッシュされて描画が飛んだり、という現象が
組み方によっては発生することがある。
うろ覚えなので、違ってたらフォローよろ。
N505iに続いて、描画非同期か…。
糞機種が…。
速度が落ちるんじゃなくて、それが本来の速度って思ったほうがいいかも
描画が飛ぶのは知らん
repaint()使ってるとか?
getImage() と dispose() を
毎フレーム実行してたりしてな。
ありえないか。
>>883 サウンド使ってる?
setSoundでやたらと負荷かからない?
890 :
名無しさん:04/12/08 22:47:04
F{505,900}iの描画はたしかにかなり怪しい。
repaint()の後、paint()が呼び出されるタイミングが分けがわからん。
続けてrepaint()を呼ぶとその数だけpaint()が呼ばれないというのはdocomoの
仕様通りなのだが、最後の1回のrepaint()でpaint()が呼ばれない事がある。
repaint();
....
repaint();
....
//全ての描画が終わるぐらいThread.sleep()する。
repaint(); <-- これのpaint()が呼び出されない場合がある。
repaintに限らず、イベントとかも機種依存しすぎて怪しすぎ。
1つの裏スレッドで全イベントが順に呼ばれるのもあるし、イベント毎に違うスレッドになるときもある。
あるイベント処理中にタイマーイベントが起きない機種なんかは、スレッド共有してる。
repaint()が怪しいのは昔からなんだから、駄目と思ったら使うの止めろ。
Dojaでイベントが必要なのってCanvas#imeOnくらいだしね。
タイマ、描画、キー入力、音関連の機能は全部自前で用意するのがベター
>>893 音でMediaListener使わない良い方法あるの?
>>890 すべての描画が終わってるんだから、repaintの必要がないんじゃないの?
int jikan
Date a = new Date();
long l = a.getTime();
Date b = new Date(l - jikan * 60 );
cal.setTime(new Date(b.getTime()));
g.drawString(String.valueOf(cal.get(Calendar.HOUR_OF_DAY)), 130 ,80);
とゆうふうに書いたんですけど値がかわりません・・・orz
ヒント下さい。。。
で、jikanには何が入ってるんだ?
0〜23の整数です
>>879 もちろん、セミコロンがなくてコンパイルエラーなので気にする必要はないのでしょう
「言う」を「ゆう」と書くやつのレベルはたかがしれてる、という諺の証明ですね。
・・・・・orz
ヒントくれー
色々やってもできんよー
なぜか時間が9時間多くなる、なんで?
902 :
デフォルトの名無しさん:04/12/09 04:56:54
>>901 タイムゾーンの罠に嵌ってそう。
ローカル時と標準グリニッジ時がごちゃごちゃになっているのでは。
DateとCalendarで内部のタイムゾーンが違うとか。
CLDCのAPIリファレンスを参照してませう。
ヒントありがとう
また暇になったらやってみます
+9時間は時差ということかな…
>>903 >また暇になったらやってみます
対応できるようになってから聞け
>>894 MediaListenerで何するの?ループ再生?
MediaListener使わなくてもループできるよ。
repaint()は使わないなぁ。
>>905 ファンファーレが鳴り終わるまで待つとか?
ループ再生は頭に戻る時曲が一瞬止まる機種があるから、むしろプログラムでループさせないほうがいい
(勝手にループ再生するようなMLDを作るのがベスト)
>>907 MLDにループ情報を埋め込んでもループしてくれない機種もあるらしい。
>>907 プログラムでループさせるほうがループは確実
一瞬止まるのはプログラムの書き方の問題か音の最後に空白ある場合
>>896 そもそもjikanって単位は何なんだ?
60倍してる理由が全くわからん。
lの単位はmsだぞ。
>>910 jikanの単位・・・。
mm(ミリ分)?
前のを少し変えてDate bを 9時間多いので -9時間して初期化
Date b = new Date( ( ( ((jikan-9) * 3600) + ( minute * 60) ) * 1000) );
これから現在時刻のミリ秒 long l の値を引いてもまだ正しい答えになりません
なぜに?
>>909 是非、MediaListenerを使わないでループを実現する方法を教えてください!!
ヘタレなので、どうやるのかサッパリ分からんとですorz
jikanって、hoursのことなの?
だから0から23の整数なのか。。
だとしたら
>>896のやってることは全然駄目だぞ。
現在時刻よりもjikan[hours]前の時刻が知りたいのかなぁ。
だとしたら
int jikan;
long genzai = System.currentTimeMillis();
long kotae = genzai - jikan * 60 * 60 * 1000;
Calendar cal = Calendar.getInstance();
cal.setTime(new Date(kotae));
System.out.println(cal.get(Calendar.HOUR_OF_DAY));
じゃない?全然動作確認してないけどw
何だか行き違ったようだ。
>>912 そのminuteはどこから出て来たんだ?
まず自由変数の無いプログラムを書けw
で、何か大きな勘違いをしてるように見えるんだが、new Date()で渡すlong値は
何を表してるのか知ってるのか?
1970年1月1日(GMT)から経過したミリ秒数だぞ。
なので、bは1970年1月1日(jikan-9)時minute分0.0秒を表していることになる。
レスさんきゅ
アふぉなんで小一時間勉強して理解したらまた質問にきます
ありがと
ファイルの任意の行をピンポイントに読む方法ってある?
ないよね?
cal2.setTime(new Date());
cal2.set(Calendar.HOUR_OF_DAY,jikoku);
cal2.set(Calendar.MINUTE,minute);
cal2.getTimeInMillis ←ここで
メソッドgetTimeInMillis()は型Calenderで不可視です!とでます
説明書を見るとプロテクトになってるようなんですが。。。
使い方がわかりません、ヒントくださいましorz
920 :
デフォルトの名無しさん:04/12/10 13:33:12
>>919 CLDCのAPIリファレンスは読んだんでしょうか。
それでも意味不明だったら、J2SEのDateとCalenderの
例を漁るのといいかも。こっちはコードサンプルを入手しやすいはず。
>>918 君が無いと思うなら無い。
君が(そういう機能に対応したファイルフォーマットを)作ろうと思うならある。
>>918 シークする位置が分かれば、行単位のランダムアクセスができるはず。
一旦ファイル(iアプリだからスクラッチパッド?)の中身をすべて読み出して、
すべての改行コードの絶対位置を、バッファに格納してしまえばよいのでは?
こういう話はiアプリとは関係ないので、詳しくはほかのスレで質問しる。
端末による速度差を減らすためにはどういった処理をすればいいのでしょうか?
「DoJa4.0プロファイル向けiアプリ作成ツール」を使って505向けアプリを開発した場合、
浮動小数点は使えるのでしょうか?
>>923 厳密にはむり。
単純遅い機種にあわせてFPSを設定すれば良いが
処理ってか描画の内容によって毎回速度が変わってしまう。
で・・・遅い機種で一番遅い処理が動いた場合を想定して作ると
とんでもないぐらい遅くなるだろうしな。
ま、FPSをあまり早く設定しないってのである程度は緩和されるだろうが。
>>924 使える。が、素で使うのはあまりお勧めしない。
固定小数でいける部分は固定小数が良いと俺は思ってる。
Doja3.0での質問です。
カメラデバイスを呼ぶ時、内側カメラがあるかないかの判定をしたいんですが、何か方法はあるでしょうか?
デバイスのナンバーが機種によって違うらしいので、
Camera.getCamera(1);
これでカメラが認識できないならgetCamera(0)を実行できれば良いのですが。
try {
camera = Camera.getCamera(1);
} catch(Exception e) {
camera = Camera.getCamera(0);
}
>>927 あ、そうか・・・
すいません、舞い上がってました。仕事間に合いそうです。
ありがとうございました!
>>919 まず何がしたいのか書けって。
CalendarのgetTimeInMillisは使うもんじゃない。
Calendarが表現してる、1970年1月1日0:0:0(GMT)からのミリ秒を知りたいのだったら
cal2.getTime().getTime()だ。
>>923 とりあえず、最速の端末で最速の動きができるようにする。
>>909 MediaListenerを使わないでループを実現する方法を教えてくださいよ〜
>>933 なんだ、そうだったのか
どうもアンガトね
>>932 909じゃないが、Ver2か3以降のMLDはループ情報を持たせることができる。
なので1回playすれば、後は端末のサウンドドライバが勝手にループしてくれる。
プログラムでどうこうより、MLDを作る段階でループデータの入れ方を知ってるかどうかが問題。
>>935 レスあんがと〜
やったことないから知らんのだけど
MIDIファイルの段階でループ用のエクスクルーシヴかなんか入れて
変換するとできたりするのかな?
900iではNがお薦めということでFA?
>937
テストという意味ではNとDで、ふぁくとりーおーとめーしょん。
まあ、Dは規格外品ではないかと噂されてるけど…。
Nでテストして、Dには対応しないことを明記ってのが、ファイナルアンサーですか?
>939
素人なら構わんが、もしプロならそういう考え方してていいの?とマジレス
初心者スレの質問で何度もすいませんが・・(ここしかないので。
具体的にやりたい事は、予定時刻までの残り時間のカウントダウン表示です
int jikoku , minute; // 予定の時間の時間と分
TimeZone zone = TimeZone.getDefault();
Calendar cal = Calendar.getInstance(zone), cal2 = Calendar.getInstance(zone);
cal.setTime(new Date()); // 現在時刻
cal2.setTime(new Date());//予定時刻
cal2.set(Calendar.HOUR_OF_DAY,jikoku); // 予定時刻の時間セット
cal2.set(Calendar.MINUTE,minute);
cal2.set(Calendar.SECOND,0);
if (cal.before(cal2) ) {
message_no = 28;
String time;
long nokori = cal2.getTime().getTime() - cal.getTime().getTime();
cal2.setTime(new Date(nokori));
time = cal2.get(Calendar.HOUR_OF_DAY) - 9 + ":" ;
time += cal2.get(Calendar.MINUTE) + ":" ;
time += cal2.get(Calendar.SECOND);
System.out.println(time);
これで一応時間の表示はできたのですが、やっぱり時差9時間が直せないのと、
最終的にはtimeを数字イメージで表示したいので
ほしいのは時間情報だけなので、もっと簡単な方法ないですかね?
低レベルな質問かもしれませんが初心者なんで。。。
もっとこういう簡単な考え方(他の関数とか)があるだろ、みたいな感じでいいのでお願いします。orz
Dは珍しくクライアントの方から対応しなくていいと言ってきたよ(w
スペック的な問題もあるけど、やっぱりドラクエ非対応が効いたのか。
>>940 今までもDは酷かったけどD900iは段違いにヘタレ過ぎるし、
やっぱりDQ、FFだね。
あれでクライアントを説得しやすくなった。
日曜なのにレスないな・・・・orz
ところで質問変わりますが、、
僕は今スケジュール管理の既存アプリ(公開アプリ、free)を使っていて
そのアプリのビジュアルが自分のイメージと合わないので
それなら皆簡単に作ってるみたいだから・・
と思い、自分でも始めたのですが
昨日友達が来てたのにかかわらず、ここの自分へのレスを見て
それなら。。と思い、プログラムの書き直してをしていました、、、
そこへ友人の一言・・・
こんなの作って何の意味があるの?
僕:いや。。こんな感じのスケジュールアプリを作りたいから・・・
友人:これ(既存アプリ)でだめなの?
僕:いや、これでいいんだけど。。自分なりの背景とかイメージに直してるの・・
友人:直してどうするの、意味あるの?出てくる時間は一緒なんでしょ?
僕:・・・・( ´,_ゝ`;)
こんな場合・・なんていいます?
ちなみに私は意味ないけど・・なんとなく・・と答えました。。orz
>>945
見てなかったごめん
32767回読み直します
すまソ( ´,_ゝ`;)
>>946 「ビジュアルが自分のイメージと合わないから」って言えばいいんじゃねえの?
>>946 そんな友達は、メーラーもFTPもTelnetで充分なんだろうね。
どんな高機能なメーラー使っても、届くメールは一緒だからね。
Telnetって?
ftpはなんとなく解りますけど・・
って聞く前に自分で調べろやゴルァ!ってきそうだから
調べてくる・・・
Telnet
読み方 : テルネット
インターネットやイントラネットなどのTCP/IPネットワークにおいて、
ネットワークにつながれたコンピュータを遠隔操作するための標準方式。
また、そのために使用されるプロトコル。
Telnetサーバを立ち上げてあるコンピュータにネットワークにつながれたほかのコンピュータからTelnetクライアントを使ってログオンし、
そのコンピュータの目の前にいるのと同じように操作することができる。
・・・なに・・・怖・・・( ´,_ゝ`;)
Telnetでメールサーバーにつないでコマンド入力すれば、メールの取得は可能。
そろそろ次スレいる?
>>881 雑談なら他でやってほしいな
やっぱり迷惑か・・orz
消えます・・( ´,_ゝ`;)
なんか面白いページとかあったら教えて。
消える・・と言って何だけど
スレをたてるには?
どうすれば?
>>955 迷惑とまでは思わんけど。単にスレ違い。
スレ建てかた解らんのじゃ!
ページエラになるよ
>>942 お前は
>>915 を読んだ上で、なんで
> cal2.setTime(new Date(nokori));
こういうコードが書けるんだ。
人のアドバイス読んでるのか??
ちなみに、「残り時間」を勝手にX時間Y分Z秒という形で表現してくれるメソッドはない。
自分で計算しろ。nokoriはms単位での残り時間だ。
さすがに計算方法は分かるよね:-)
>>881 まず普通のJavaで書け。J2SE1.4を入れて、System.out.println()で要所要所の
数字をだしてどこが間違っているか自分で確かめろ。
TimeZoneなんていらねぇよ。Calendar.getInstance()はデフォルトのタイムゾーンと
ロケールで作られる。日本向けの端末のデフォルトは日本の標準時だ。
まあ、TimeZoneの件は942のコードでも問題ないはずだけどね。
Nやたらモッサリじゃねぇか!キーレスポンス遅杉。
騙された!
今FとN実機で触ったけど確かにNはひどいな…
スクロールかくかくだしキーの押しっぱなしも効いてないし
ところでspにうまく書き込めなくて困ってる
初回起動チェック用にspの1バイト目が0ならば1を書き込んで起動するごとに判定してるけど
毎回毎回1バイト目が0ってされて、保存したデータも読み込めてない
エミュでspを覗いてみると確かに書き込めてるのに…
closeしてないとか?そんな実機があるかどうか知らんが。
SP遅いって書いてあったがそれほど遅くなくないか?
100kbyteを0で初期化してみたが一瞬で終わったな
>>971 機種しだい。
アプリ終了時に書き出す機種すらある
>>969 機種は何?
全機種だったら他の場所でクリアしてるんじゃない?
スクラッチパッドのポインタチェックしてみな。
>>972 そんな機種あるのか??というか教えてくれ!その機種。
それだと正常終了しなかった場合スクラッチの記録がなくなる?
アプリからの正常終了は良いし、
エラーや電源ボタンによる終了もまぁ良しとしても
いきなり電池パック取られたり、もとい電池切れたりしたら・・・。
976 :
デフォルトの名無しさん:04/12/21 17:28:21
>>975 PDCのPがそうだよ。FOMAは分からん。
ベンチマークでSPが異様に速い機種は、RAMをキャッシュにしてます。
フラッシュに書き出すのはアプリ終了時。
電池パック取られたらたぶん、データ退避されないと思うけど
データが更新されないだけで、それ以上の悪影響はなし。
>>976 おお、レスサンクス。
Pなのかぁ・・・。確かにフラッシュされないだけで問題はなさそうだけど
一応覚えておいて損はないなぁっと思って。
>>975 976代わりに答えてくれてありがと。
P504とか終了時に異様に時間がかかるからすぐわかるよね。
ていうか、俺、どの機種の実装もそんなもんだとばっかし思ってたよ。
じゃないとめっさ遅くなるはずだもんな…。
N504はめっさ遅かった気が
N の こ と は い う な
かえるくんって、小さいときはおたまじゃくしじゃ・・・
そろそろこっちは埋めたほうがいいんじゃないか?
話が分散するのはあんまり良くないような気がするが・・・
埋め
っつか、早く Part4 と Part5 読めるようにならねーかなー
電車男のゲーム作ってよ。
チャレンジャー?
要マッコウクジラ