[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 07/22 13:26 / Filesize : 254 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

iモード携帯電話用Java(iアプリ) Part14



1 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 18:13:16 ]
NTT DoCoMoのiモード携帯電話用Javaに関する話題を扱うスレッドです。

※DoCoMo以外は下記スレへ。
CLDC+MIDP+携帯電話用Javaスレッド part 6
pc11.2ch.net/test/read.cgi/tech/1155174514/

■ iアプリ特有ではなくJava一般に関する質問はこちらへ
【初心者】Java質問・相談スレッド99【大歓迎】
pc11.2ch.net/test/read.cgi/tech/1173026128/

■ iモード携帯電話用Java(iアプリ)まとめサイト
ton.my-sv.net/

■関連スレ
【日本携帯】Mascot Capsule/Micro3D【標準】
pc8.2ch.net/test/read.cgi/tech/1117773530/

過去スレ
Part13 ttp://pc11.2ch.net/test/read.cgi/tech/1164168601/


856 名前:379 mailto:sage [2007/08/05(日) 00:32:23 ]
>>855
レスありがとうございます
リソースとして読み込むってのがよく分からないけど
とりあえず変数は別のクラスに分散させてみます

857 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 03:53:49 ]
>>856
855さんが言ってるのは、配列の初期化だと思われ。
byte[] a = { ....};
ってやつね。

858 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 09:28:20 ]
>>854
jarのサイズでなく、プログラム的に1メソッドのサイズ制限だと思われ。
どっかのpdfに書いてあった気がするが忘れたし暑くて探す気がしないから調べといて。

859 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 12:26:58 ]
>>851
できちゃうんだな、これが。

860 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 15:45:13 ]
クラスのメンバ変数は、バイトコード上ではすべて特別なメソッドに置かれる。
そのメソッドが32kBを超えたからコンパイルエラーになった。

855のリソースにして読むというのは、大きな配列はスクラッチパッドやネットワークとかのクラス外に置いて、実行時に動的に読み込めということだろう。

861 名前:379 mailto:sage [2007/08/05(日) 21:17:15 ]
>>860
普通のメソッドは3000行書いても大丈夫だったのに
クラスのメンバ変数はちょっと書いただけで32KB超えたってことは
メンバ変数にすると容量を大量に消費するってことかな

大きな配列は別クラスに移してあるのでリソースにしなくても大丈夫かな

862 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 22:07:33 ]
int[] a = { 10, 20, 30, 40 };
とかっていうのは
a = new int[4];
a[0] = 10;
a[1] = 20;
a[2] = 30;
a[3] = 40;
って書いたのとほぼ同じだから、相当に容量を食う。

863 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 22:11:59 ]
byte[] a = { 10, 20, 30, 40 };
に至っては
a = new byte[4];
a[0] = (byte)((int)10);
a[1] = (byte)((int)20);
a[2] = (byte)((int)30);
a[3] = (byte)((int)40);
と言う感じでintの即値をbyteにキャストするから、さらに食う。

864 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 23:34:03 ]
>>863
byteの配列ってそんな実装なんだ。
知らなかった。勉強になったよ。
まさか想定の4倍食ってるとは……。



865 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 00:49:26 ]
ヒント : javap -c

866 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 01:39:33 ]
どちらにせよ、データは外出ししておいた方が、管理しやすいし入れ替えやすいし良いよ。
理想的には、プログラムをいじらなくても敵キャラやステージを追加できるくらいにすべき。

867 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 12:16:36 ]
iアプリで音楽再生するプログラムを書いています。
サンプルを参考にして、MIDIから変換したMLDファイルの演奏はできました。
変換はフリーソフトを使いました。
次は効果音を鳴らしたいんですが、効果音はMIDIではないですよね。効果音は
どのように作成すればいいのでしょうか。
プログラムの話とは少し違いますが、iアプリで鳴らせる音について調べても
良く分からなかったので質問しました。

いろんなサイトを見ても、MLD形式のファイルがMIDIだと書いてあるのに、
着ボイスの拡張子もMLDだったりでよく分かりません。あと、YAMAHAのサイトで
変換するツールのようなものを見つけたのですが、NEC端末用と書いてあったので
違うのかもしれません。

お願いします。


868 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 13:17:38 ]
>>867
waveからmldに変換するツール探すといいよ。
多分殆どはシェアウェアで、
フリーのは2秒制限とかの制約がつくものが多いと思う。

mldは機種ごとにフォーマットが異なるので、
対応させる機種分mldファイルを用意しないとならない。
Nだけ対応すれば良いのなら、YAMAHAのでもいいかもね。


869 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 13:22:11 ]
>>859
どーやって?


870 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 14:23:35 ]
>>860
ちと試してみたけど、以下のケースでNGだった。
32KB制限云々に限って言えば、
メンバ変数の初期化はコンストラクタ内で実行されるのと同意なんでない?

class app{
 static byte buf[] = {0,1,2,3,4,・・・}; // ←バイトコードで16KB以上、32KB未満になる配列
 app() {
  byte buf2[] = {0,1,2,3,4,・・・}; // ←バイトコードで16KB以上、32KB未満になる配列
 }
};

>>861
前にも指摘されてるけどさ、
そもそも「3000行の普通のメソッド」なんて有り得ないから。
cだけどこの辺読んでみるといいかも。
ttp://www.pro.or.jp/~fuji/mybooks/cdiag/

まー、その場しのぎで良いならクラス2つに分けて、
変数部分だけごっそり移動すれば解決するんじゃないかね。
0から作り直したほうが早いと思うけど。


871 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 14:31:31 ]
一昔前のiアプリじゃいかにメソッドを作らないかを
試行錯誤したもんだが、随分とヌルくなっちまったな。


いいことだ(・∀・)

872 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 14:34:00 ]
インスタンス変数はコンストラクタで、static変数はstaticイニシャライザで初期化される

873 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 15:04:36 ]
インスタンス変数とコンストラクタが<init>で、スタティック変数とstatic{}内が<clinit>というメソッド名になる。
>>867
MLDは、MIDIのような情報、Wave(ADPCM)のような情報どちらも扱える。
>>863
配列の初期化のときの代入は、iastoreとbastoreの違いだけで、
バイトコード上でのキャストはなかったはず。

874 名前:379 mailto:sage [2007/08/06(月) 16:45:56 ]
>>870
メソッド少なくしたのはどっかのサイトにメソッドは少ないほうが
容量少ないって書いてあったからです。
次作るときはオブジェクトに分けるのを試してみたいです。

配列がバイトコードになったときのサイズどうやって調べたんですか?



875 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 18:41:46 ]
キーリビートってどう実装したらいいんですか?

876 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 18:59:38 ]
>>869
レイアウト管理オブジェクトを無効にして、
自分でコンポーネントの座標を設定する。

877 名前:867 mailto:sage [2007/08/06(月) 19:15:42 ]
>>868
ありがとうございます。
wav2mldというソフトを見つけて体験版を試してみたのですが、長さは
2秒もない音声ですがエミュレータ上では再生できませんでした。
そんなに高くなかったので製品版を購入してもう一度試してみようと思います。
他にも変換ソフトがあるようでしたら教えてもらえると嬉しいです。フリーじゃ
なくてもいいです。自分の端末はSOなのでYAMAHAのものではダメのようです。

>>873
ありがとうございます。
WAV形式のMLD形式(?)があって、どちらも拡張子がMLDということでよいでしょうか。
wav2mldというソフトの製品版を使ってみようと思います。

878 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 21:05:30 ]
>>875
毎フレームgetKeypadState()して、過去数フレームと見比べる。


ところで、Java->C, J2ME->BREW自動変換をうたうツールやベンチャーをたまに見かけるが、
GCをどう解決してるかについて何も言ってないのは詐欺認定でいいよな?

879 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 22:31:40 ]
>>875
俺はボタンが押されたら別スレッドでループを回して
離れたらスレッドを切るようにしてる

880 名前:831 mailto:sage [2007/08/06(月) 23:19:16 ]
>>831で質問した者です。
偽装JPEGファイル経由で音声iモーション(AACファイル)再生できたので、
やり方など残しておきます。

・ImageStore.selectEntry()でImageStore取得
・ImageStore.getInputStream()でInputStream取得
・InputStream.read()で不要なデータ読み捨て
・MediaManager.getImage(java.io.InputStream in)でMediaImage取得
・MediaManager.use()
・AudioPresenter.getAudioTrackPresenter()でAudioTrackPresenter取得
・AudioTrackPresenter.setSound(MediaImage sound)でiモーションセット
・AudioTrackPresenter.play()で再生

再度、>>831-834に感謝。

881 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 08:06:06 ]
>>880
おーすごい、レポ乙でつ(`・ω・´)ゝ

882 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 11:05:55 ]
>>880
俺偽装ファイル扱うの知らないんだが、最後から2番目の
MediaImage sound
てどこから出てくるん? MediaManager.getSoundの間違い?

883 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 11:36:22 ]
AudioTrackPresenterのリファレンス参照しる
> 動画のオーディオトラックは MediaImage オブジェクトであるため、
> setSound(MediaImage) メソッドにて設定する必要があることに
> 注意して下さい。

884 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 12:30:48 ]
>>877
>>376でも言った気がするが、PsmPlayerがあるだろ。無料で使えてwav変換も出来るぞ。



885 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 15:26:18 ]
PsmはN用に変換してもN903iで再生できなかった

886 名前:821 mailto:sage [2007/08/07(火) 15:49:06 ]
NはYAMAHAのサウンドを使っているから他と同じにしてはだめ。

今まで各端末メーカごとのサウンド作成する必要がったが
903から統一されて一つのサウンドでよくなった。
しかし、Nだけ903用のサウンドを使用しても鳴らず
N902i用のサウンドを使う羽目になった。

887 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 17:08:35 ]
IアプリからSOAP経由でWEBサービスを利用する事ってできるんでしょうか?
BREWアプリなら可能なんですが…。

888 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 17:25:00 ]
>>887




889 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 18:46:59 ]



890 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 18:54:40 ]
>>886
ごめん、それもっと詳しく教えてくほしい

891 名前:886 mailto:sage [2007/08/07(火) 20:07:50 ]
すまん、前提が違っていた。
俺がmld変換に使っているツールはpsmではなく
DoCoMoの公式CPに配信されるツールとプラグインなのよ。

ところで、俺はpsmについてはあまり詳しく知らないんだけど
これって505の世代までしか対応していないんじゃないかな?
そうだとすると、903とは世代が相当違うから
鳴る保障はほとんどないのでは?

892 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 20:42:49 ]
MFiToolsか…

893 名前:831 mailto:sage [2007/08/07(火) 22:39:16 ]
>>882
AudioTrackPresenter.setSound(MediaImage sound)の括弧の中は、
単なる引数を書いてるだけなので、AudioTrackPresenter.setSoundに
MediaImageオブジェクトを渡すってことです。
("sound"は単なる引数名)

894 名前:デフォルトの名無しさん [2007/08/08(水) 23:08:34 ]
Javaを勉強するぞおおぉ!



895 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 22:34:11 ]
やっぱりあんまりメモリ気にしなくて良いのは楽だなぁ。
自分で弄れた方が良い場面もあったが、最近は殆ど関係無いから
やっぱJavaって良いわ。

896 名前:デフォルトの名無しさん [2007/08/10(金) 13:39:35 ]
>886

>今まで各端末メーカごとのサウンド作成する必要がったが
>903から統一されて一つのサウンドでよくなった。

これのソースが知りたい…
(ソースと言ってもプログラムじゃなくて情報源のほう)

897 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 00:11:05 ]
たぶんサウンドというのはMIDI音源のことじゃなくて
PCM音源のことを言っているんだと思う
PCM音源だと機種によっては実装していない


898 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 01:03:29 ]
MFiTools(?)の吐くmldが1種類になったってことだろ

899 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 02:08:43 ]
音源がなければMLDに変換してもWAVE再生は不可能ということじゃないの?


900 名前:886 [2007/08/11(土) 02:58:10 ]
898の言っているのが正解。一種類で済むようになったって話。
ただしNは例外。
イロイロ調べてみたけど、一般の資料では、この辺の事書いてあるやつないんだな。
ってなわけで、この件について俺はもう語らん。

901 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 03:08:37 ]
>>896
903が発売されたころ公式CPにはサウンドの互換性一覧
みたいなのが公開されて滝がする。俺は部署違うので、中身
見てないし、知ってても言えないんだけどそれじゃないのかなあ。
# 知ってはいないが経験的にはN以外全部一緒で鳴る

そうでなくとも、SH/D/FについてはFUETREKのPCM音源を
積んだSH-Mobile G1だと報道発表されているので当然全く
同一の仕様で確定。NがMA-7なのは変わらず。Pだけは音源が
不明だけど、実際に鳴るってことは少なくともROHMからFUETREKの
音源に乗り換えたんじゃないのかな。と思ってる。

902 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 11:23:13 ]
ドコモとFueTrekは去年くらいに近業務提携したはずだから、それの影響?
wav2mldのサイトを見ると、903シリーズ以降は、[P F D SA]、[SH SO]、Nの3種類みたいだね。
1種類になったってことは、N以外は全部同じになるのか。
そのうちフォーマット公開されないかな

903 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 04:28:38 ]
サーバーサイドにあるPHPにアクセスして、
ネットワークごしに画像をダウンロードする方法で戸惑っています。

// PHP側
<?php
 $img = imagecraetefromgif("img.gif");
 header("Content-Type: image/gif");
 imagegif($img);
?>

// Java側
void downloadImage(String url) {

904 名前:903 mailto:sage [2007/08/12(日) 04:42:27 ]
サーバーサイドにあるPHPにアクセスして、
ネットワークごしに画像をダウンロードする方法で戸惑っています。

// PHP側
<?php
 $img = imagecraetefromgif("test.gif");
 header("Content-Type: image/gif");
 imagegif($img);
?>

// Java側
void downloadImage(String url) {
 try {
  HttpConnection hc
   = (HttpConnection)Connector.open(path, Connector.READ, true);
  hc.setRequestMethod(HttpConnection.GET);

  hc.connect();
  InputStream in = hc.openInputStream();

  byte[] data = new byte[(int)hc.getLength()];
  in.read(data);
  
  ...
}

このような関数で、引数urlでphpのスクリプトにアクセスして画像をダウンロードしたいと思っているのですが、
これだとhc.getLength()が-1で、明らかに正常にアクセスできていません。
ちなみに、urlでgif画像の直リンクを張った場合は正常に動作します。
PHPの出力方法に問題がありそうな気がするので若干スレ違い気味ですが、原因がわかる方がいましたらお願いします。



905 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 07:00:26 ]
> 原因がわかる方がいましたらお願いします。
ヘッダーにコンテントレングスをセットしていないから。


906 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 07:13:22 ]
Content-Lengthの出力はサーバ側の設定によるもの。
アパッチのコンフィグで設定するなり何なり。

一方、iアプリ側はgetLength()が-1になることも考慮した組み方をしておく。
Content-Lengthを設定しておらず、自分でもいじれないサーバではアプリ側で対処するしかない。
if ((int)hc.getLength() == -1){〜} else{〜} てな記述。
具体的な記述内容はググればいくらでも例が見付かる。

907 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 10:43:49 ]
>>904
>これだとhc.getLength()が-1で、明らかに正常にアクセスできていません。

getLength() が -1 でも正常にアクセスできててデータの中身はちゃんと読める。

908 名前:904 mailto:sage [2007/08/12(日) 12:06:52 ]
>>905
PHP側でContent-Typeを出力する前に
 header("Content-Length : " . filesize("test.gif"));
を追加してみたのですが、connect()の段階で止まってしまうのです。

>>906-907
-1でも正常にアクセスできているのは、初耳でした。
確かにレスポンスコードは200だったのですが・・・、ありがとうございます。
以下のコードで、正常に動作することを確認しました。

// Java側 hc.openInputStream()以下
 ...
 byte[] data;
 if ((int)hc.getLength() != -1) {
  data = new byte[(int)hc.getLength()];
  in.read(data);
 }
 else {
  ByteArrayOutputStream bs = new ByteArrayOutputStream();
  while (true) {
   int temp = in.read();
   if (temp == -1) {
    break;
   }
   bs.write(temp);
  }
  data = bs.toByteArray();
 }
 ...

909 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 12:17:17 ]
公式資料に書いてあるっての

910 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 14:17:20 ]
>908
そして第2のはまりポイント
in.read(data); は一度で全部読み込めるとは限らないから
-1が返るまでループ処理してバッファに追記していくこと

911 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 14:17:53 ]
ってゴメン
それはちゃんと書いてあるね

912 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 14:25:07 ]
いや、getLength() != -1 のほうの

  data = new byte[(int)hc.getLength()];
  in.read(data);

これは良くない
↓のようにするか

data = new byte[(int)hc.getLength()];
int i = 0, n;
while ((n = in.read(data, i, data.length - i)) >= 0) {
i += n;
}

面倒かったら↓で

data = new byte[(int)hc.getLength()];
new DataInputStream(in).readFully(data);

913 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 14:52:40 ]
>>908
>connect()の段階で止まってしまうのです。
こりゃ実際に出力しているデータサイズが違うんじゃないの?

たとえば
ContentLength: 100を設定しておいて、データは90バイトしか送ってないとしたら
携帯側は残り10バイトが届くまで受信待ちの状態になってるだろうさ

914 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 17:59:27 ]
だな。鯖側の処理おかしいもん。
こんなんでどうよ?

<?php
$fname = "test.gif";
$fdata = file_get_contents($name);
$fsize = strlen($fdata);

header("Content-Length: ". $fsize );
echo $fdata;
?>



915 名前:914 mailto:sage [2007/08/12(日) 18:04:08 ]
あー、ちなみに何がおかしかったかというとimagecraetefromgif()でイメージリソース
として取得したデータを、PHPで出力時にGIFに再変換しているから元のデータと微妙に
変わっているということ(画像としては同じになるけどヘッダとか違う)。
で、出力サイズは元ファイルのを出しているから、正しいサイズになってない。
そもそもgd呼ぶような面倒なことはしないで、そのままバイナリ吐いてやればよかった。

916 名前:914 mailto:sage [2007/08/12(日) 18:05:49 ]
ごめ。2行目の引数は「$fname」な。
 - $fdata = file_get_contents($name);
 + $fdata = file_get_contents($fname);


917 名前:904 mailto:sage [2007/08/12(日) 21:18:41 ]
>>912
ネット上で調べた文献の多くがこの方法だったので・・・、迂闊でした。
一回のread()で読み切れない場合があるってことですかね?
今ひとつ理解できていませんが、直しておきます。

>>913-916
この方法を使ったら、普通にgetLength()で取得できるようになりました。
file_get_contents()でリソースを取得すれば良かったのですね。

ありがとうございます、おかげ様で理想通りに動作するようになりました。


918 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 21:24:49 ]
>>917
InputStream#read は 「1バイト以上読む」 っていう仕様なので。
1バイトでも読めたらそれで返ってくることが許されてる。

919 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 23:44:44 ]
女の子にもてもてになるiアプリの作り方を教えてください。

920 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 23:51:52 ]
エロゲーでも参考にして作ればいいと思うよ

921 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 02:30:50 ]
>>919
女の子にモテモテになってからiアプリを作ればおk

922 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 04:41:14 ]
俺の女性の知り合いはみんなau_| ̄|○ il||li

923 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 05:46:13 ]
じゃあ、オープンアプリを作ればいいじゃない

924 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 06:01:14 ]
オープンだとウイルス入ってそうで怖い



925 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 01:03:27 ]
スクリプトのパースメソッドだけで500行行きそうです

926 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 18:09:32 ]
質問させて下さい!
ショートタイマーを使ったリアルタイム処理のゲームを作っています。
複数の端末で実機テストを行った所、一切エラーは発生しなかったのでユーザに配布したのですが
同じ機種でもエラーが発生する場合と発生しない場合があり、しかも特定の箇所ではなく毎回違う
場所でエラーが発生するそうなんです。
携帯側に処理を渡してないからかなと思い、至る所にスリープ処理を入れたのですが、それでも
エラーが発生するそうなのです。

そこで一つ質問なのですが、現在のソースを見るとショートタイマーの発生時間は20に設定しています。
ループ内のスリープ時間の合計を見ると上記の20を超えておりました。
例えばショートタイマーイベントでの処理が終わっていないうちに次のショートタイマーのイベント発生時間に
なった場合、強制的に2つの処理が同時に行われてしまうのでしょうか?
それが原因でエラーが発生しているのかな?と思いましたので。
自分の端末でエラーが出るなら確認しやすいのですが、なにせ自分の端末ではエラーが発生しないので…。

長文で申し訳ありませんがよろしくお願い致します。

927 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 18:41:13 ]
ループ内のスリープ時間ってなによ
何かループしてんの?

928 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 19:39:41 ]
while(true)で回して中でsleepじゃなくて
timerでタイマーイベント取得して、更にその中でsleep?

929 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 21:26:36 ]
個人の携帯の使い方に問題があってエラーが出る事も多いから、
いちがいにプログラムが悪いとも言えない。


930 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 22:34:28 ]
タイマー分解能やタイマー精度、CPU負荷の問題で、きっちり20msecずつwaitすることはまずない。
タイマーイベントは同時に起こらないはず。心配ならsynchronizedすればいい。ただしイベントがたまりすぎると変になる機種もある。

931 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 22:39:37 ]
とりあえず何のExceptionが出てるんだ?
それはそうと、リアルタイムのゲームを作るならタイマイベントで
処理するよりも、while()ぶん回したほうがいいと思うけど。

932 名前:926 mailto:sage [2007/08/16(木) 03:55:22 ]
説明が分かりにくかったようで申し訳ありません…

えっと、while(true)でぶん回す事も考えたのですが参考にしたサイトでは
ショートタイマーでイベントを取得するように書かれていたので、そのようにして
おります。20msecおきにタイマーイベントを取得して処理を行っているのです
が(その事自体をループと書いてしまいました)そのタイマーイベントの中で
Thread.sleep()を含んでいます。この合計が20msecを超えてしまっている
という事です。というか書きながら思ったのですが、タイマーイベントを使用して
いるのにThread.sleepを入れる必要性はないですね…。while(true)で無限
ループを作っている訳ではないのに…(汗)
ただ、どちらにしてもそのタイマーイベントの中で時々forループで約5秒程の描画
処理が入る場合があるんです。なのでタイマーイベントの処理が20msec以内に
終わらない事が多々ある事は変わりません。
とりあえず質問したかった事はタイマーイベント処理が終わっていない時に次の
タイマーイベント発生時間が来た場合、後ろをすぐ追いかけてくるような感じで
同時に処理が行われるのか?という事だったんですが930さんのご回答で
解決したように思います。


933 名前:926 mailto:sage [2007/08/16(木) 04:02:25 ]
連投&回答&再質問させて下さい…
>>931
それがエミュレータでも自分の持っている実機でも一切エラーは発生しないんです。
なのでどこでどうエラーになっているのか皆目検討もつかないという感じです。。
ただ、友達の端末で試した所、エラーにはならないものの、画面のチラつきが激し
かったんです。描画時には必ずlock〜unlockをかけているにも関わらずです。
なので、もしかしたら処理が同時に行われてて描画→描画が変なタイミングに
なっているのかなぁなどと思った次第です。もちろんエミュレータや自分の持ってる
実機では一切画面のチラつきなどはありません。
とりあえずタイマーイベント処理の中から意味不明なThread.sleepを外して、イベント
発生時間を1000msecとか極端に伸ばしてみながら確認してみようと思います。
皆さん、色々ありがとうございました。

934 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 13:37:23 ]
だからエラーってなにさ。




935 名前:926 mailto:sage [2007/08/16(木) 16:01:17 ]
>>934
だからわかんねぇつってんだろハゲ!
もっと文章読めや
ソース公開してもいいかと思ったが
ひとつ上のレスすら読めねえんじゃ無駄だわ

936 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 16:24:57 ]
今日も暑いねぇ。

937 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 16:35:30 ]
>>935
読み難い長文書いておいて、「もっと文章読め」ってのは、質問する
立場としてどうよ。
>>934は、お前さんの書き込みじゃ情報不足だってことを指摘してるだけでしょ。

大体お前さんは、ユーザーのところで起きている「エラー」というのがどういう
現象なのか、それを把握しているのかどうかを書いていないと思うが。

938 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 16:39:27 ]
別人じゃろうて。。。

939 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 17:30:31 ]
しかし説明するか泣きを入れるかどっちかにして欲しいのは確か

940 名前:926 mailto:sage [2007/08/16(木) 19:01:37 ]
すみません、935は私ではありません…。
読みづらい文章を書いて偽者が発生する原因を作ってしまった事をお詫び致します。。

ちなみに、ユーザからの問い合わせでは突然「アプリエラー」と表示されて終了する場合が
あるという情報だけです。それも特定の箇所とかじゃなく完全に不特定だそうで…。
自分の実機やエミュでは一度もエラーが発生した事はありません。ちなみに数名から上記
のエラー報告を頂いたのですが機種もバラバラなんです。同じ機種でもエラーが発生する
人としない人がいるという、何とも対応しがたい現象なんです。しかも全ユーザから見る
とエラーが発生する人はほんの数名だけ…(報告してないだけかもしれませんが)

ただ今日ネットで調べまくって「もしかしたら」というものを見つけたので書いてみます。
@画面のチラつきが関連しているかもしれない
→全てPaintにぶち込んでrepaint()ではなくpaint(getGraphics());に変えてみます。
Atimer処理を一時停止した後のタイマーstart()が二重になっていないか?
→全てのタイマーstart()の前に念のためタイマーstop()を入れてみます

というか毎回情報不足&ダラダラと長文で分かりづらくて申し訳ありません。
偽者も出てきたので皆に迷惑をかけるといけないので暫く自力で頑張ってみます。

本当にありがとうございました!

941 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 19:20:01 ]
まあたぶん携帯のメモリー不足でエラーが出やすいんだと思うけど


942 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 20:11:11 ]
アプリで例外をcatchしない場合もαエラーなんじゃないっけ?

943 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 21:16:50 ]
すみません。質問させてください。

当方、iアプリでパチスロの収支管理ソフトを作ろうと思っています。
ですが、java自体初めてなものでScratchPadの保存ができても、一覧がうまくつくれません・・・
本を買ったのですが・・一覧だけはのってなくて・・
他の部分もこれでいいんだろうか・・という書き方になってしまっています。

一度、一覧を使った全体のサンプルソースを参考にさせて頂きたいです。
かなり、探したんですが見つかりません。

ご存知の方、教えて頂いたら幸いです。
家計簿でもなんでも、一覧を表示しているものであれば・・

未熟な質問で申し訳ない。宜しくお願いします。


944 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 21:26:02 ]
酔ってます(@ω@)


一覧って意味がわからんのですお。
プログラムとしてはデータを読んで、表示するだけですお。

ついでに言うなら、パチは辞めた方がいいんじゃねーか?
2ch的にも人間としても(・∀・)



945 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 23:55:18 ]
>943はiアプリのわからないところを質問するって段階以前の話だな
「初めてのプログラミング」とかそういう書籍を読むところから始めてくれ

946 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 03:06:25 ]
はじめまして、Javaを勉強しはじめて五日目になります。
wikiを見てもまだ理解が出来る次元ではないので少しお邪魔します。
理由は、ゲームを作りたいからという動機なのでお仕事でやってる方には申し訳ないと思いますが
初心者歓迎の文字を見て入らせていただきました。
(ソフトはiαppliTool DoJa-3.5を使っております)
現在iアプリを作成中で、音楽を鳴らしているのですが音量を再生する場合に
SoundPlayer.playTrackSound( 0, 0, 100 ); //トラック,リピート,音量(100max)
と、置いているのですが、音量を変える時にソフトキーから切り替えで
Int volを作りvolに数字を代入して
SoundPlayer.playTrackSound( 0, 0, 100 - vol);
としたところ、音楽が最初から再生されてしまいました。
これを現在流していたところまでの音楽から音量を途中で切り替わるようにしたいのですが
どうしたら良いでしょうか、説明不足でしたら申し訳ございません。
どうか宜しくお願いします。



947 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 10:57:07 ]
SoundPlayerって自分で作ったクラス?

948 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 11:38:53 ]
>>947
そうですね、サウンドの管理は別のクラスでしています

949 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 11:49:12 ]
>>943
収支管理かぁ昔つくったなぁ・・・練習作品としては悪くないけどな。
他の人も言ってるが「一覧」ってのが一体何を指すのか判らんからアドバイスはできないぞ。
画面に並べて表示する仕方がわからない!って意味なら表現方法なんて無限なんだから誰にもわからん。
ソース晒した方がよっぽどアドバイスもらえるかと。
ついでにいえばスロはもう終わりだから辞めとけw依存症になるまえに!

>>946
まず誰もSoundPlayer.playTrackSound()ってのが何なのか判らないとおもうが。
自作メソッドなら中身見ないことにはどうにもならんが・・・どこかから拾ったものか?
頭から再生されるのはそのメソッドが内部でplayメソッドを使っているからだと思うが。

音量の設定はAudioPresenterクラスの
setAttributeメソッドで音量を指定してセットする。

950 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 12:26:16 ]
>>949
ありがとうございます。
setAttributeだけをいじったら音量だけ変わりました。
別のファイルで作っていたので見落としていたみたいです。
私の為にお時間いただいてありがとうございました。

951 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 19:17:35 ]
>>944
よってらっしゃる・・
ありがとございます。
すみません。一覧っていうのは縦のグリッド表示の意味だったんですが、
iアプリじゃ無理のようですね。
わかりにくくてすみません。
パチスロは確かに2ch的には完全になかったかもです・・
でも、他に作れそうなものが、思いつかなくて・・;;

>>949
ありがとうございます。
ソースはとてもじゃないですが、晒せるほどのものじゃ・・
実際DOJAで動かしてみたら、

ラベル1 □□□□  ←テキストボックス
ラベル2 □□□□
ラベル3 □□□□


となるはずが

ラベル1 □□□□ラベル2 □□□□ラベル3
 □□□□

みたいな画面になって散々でした;;
HTMLLayout を使ってるんですが、何故か改行されませんね・・
DOJAじゃ反映されないのかな・・
この業界も長いので、ついサンプルに頼りがちで申し訳ない
勉強になるとおもってもう少しがんばってみます。
パチスロは実は5号機になってからほとんどいってません


952 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 00:21:54 ]
サウンドの話を蒸し返して申し訳ないですが…
結局waveから変換したmldを再生させるゲームを作るには
@各端末用のmldデータをネット上に置く
Aアプリ内で端末情報を取得して、それに応じたmldをダウンロードして再生する
っていう感じになるのかな?
そもそも端末情報(機種)って取得出来るの?

953 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 00:29:43 ]
できるよ。

954 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 19:50:01 ]
System.get…なんだっけ?
開発資料PDFの後ろの方にまとめてある



955 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 21:43:16 ]
System.getProperty("microedition.platform")

ただしdoja2.0以降だったと思った
まぁADPCMなMLDな時点でdoja3.0以降ぐらいになるとは思うけど

956 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 23:33:32 ]
アプリゲットのダウンロード数ってどうやって調べてるんですか?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<254KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef