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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 17:36:05 ]
NTT DoCoMoのiモード携帯電話用Javaに関する話題を扱うスレッドです。
Doja、Starいずれも扱います。質問時には明記してください。
次スレは>>980が宣言して立ててください。

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

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

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

603 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 22:33:32 ]
iアプリでPNG読み込む方法って無いですか?
標準だと読み込み可能な形式はGIF、BMP、JPEGのみですが
GIFは256色しか使えないし
BMPは無圧縮ででかいし
JPEGは非可逆圧縮だし・・

604 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 23:16:17 ]
デコーダを書けばいいんでね?
まぁ、BMPもzip圧縮かければ結構小さくなる。

605 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 23:16:58 ]
>>603
「非可逆圧縮」という言葉に捉われ過ぎじゃないの?
JPEGで十分じゃない?
圧縮率上げなければ見た目何が削れてるかわかんないし。

606 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 10:49:34 ]
非可逆だからダメと言っている相手に「非可逆でもいいじゃん」って解決策を出すのはどうなんだw

>>603
自前デコーダを移植したことあるけど、バリバリにチューンしても遅くて使い物にならなかったよ。
256x256画像のデコードで3〜5秒とか当たり前。
それでもよければ、Cで書かれたPNGデコーダを探して移植してみ。

607 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 12:01:32 ]
そのまま移植したら遅い
CRCチェックとか余計な部分は省かないと

608 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 13:27:48 ]
>>607
えーっとね・・・
一応色々と工夫はしたからね?

609 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 13:37:55 ]
>>608
偉そうだな ┐( ̄ヘ ̄)┌ ヤレヤレ


610 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 13:39:46 ]
嫌みではなくソースが見てみたい

611 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 18:48:18 ]
>>609
偉そうなのはお前だw



612 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 08:55:34 ]
レス相手は自分より低能なプログラム能力しか持っていないに決まってる。

613 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 16:02:31 ]
プログラマではなく、ディレクションをしている人間なのですが、
Javaアプリを作っている方の質問があります。

いわゆるアドベンチャーゲーム的なもので、
絵と背景とキャラを制御する主要部分のコードが書かれているファイルをみたら
軽く1500行もあるのですが、これって普通なんでしょうか。

Javaはよくわからないのですが、c++でつくるこの程度のゲームで、
一度に1000行を超えるコードはみたことなかったので
そういうものか聞いたんですが、Javaアプリはそういうものなんだということを
言われたので。。。


整理ができてないか、無駄が多いかとしかおもえないんだけども、
携帯特有の、なんかがあるんですかね。

614 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 16:06:09 ]































行数とプログラムの内容は関係ない。

615 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 16:40:11 ]
メソッド一個で1000行だったりして

616 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 16:51:14 ]
メソッド1個で1000行なら携帯アプリ特有な例だな。

最近はあんまり容量気にしなくて良くなったが、
メソッド1個作る毎にアプリサイズが大きくなるから
できるだけメソッド1つで動くように作ってた時代はあったw

でも、人とか設計によるとは思う。

617 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 17:02:51 ]
Java自体、記述が冗長という可能性はないのかなあ

どこかのプログラマーさんの記事で
「LLで書くとこれだけの行数なのに、Javaで書くとこの行数。
こんなに書いてられねえ。だからJavaはダメだ」
というのを最近読んだ気がします
(そしてJavaプログラマーからは
「eclipseの自動補完使うのが当たり前なんで、ほとんどキーは叩いてないぞ」
という反論が)

と思ったけど、そもそもC++との比較か…

618 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 17:34:29 ]
>>613
インターフェース作って、abstract関数を定義して…。
という「お約束」な手順で行数をとっているのなら、Java自体がそういうもの。

関数の中身とかが異常に長いのなら、それはプログラムが変。
関数の中身まで入ってしまえば、C++とJavaは対して変わらん。

619 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 18:38:03 ]
APLならライフゲームを一行で書けるんだってばっちゃが言ってた

620 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 19:43:22 ]
空のメソッドでも作るとサイズ変わるからな
なるべく小さくしたいなら1000行もありえないことではない

621 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 20:51:29 ]
>>613のような人間にディレクションされたくないな。

C++で1000行って何かライブラリを使わないと有り得ん数字だし
環境も違うだろうに行数を比較して意味が有るとは思えんが。



622 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 22:40:46 ]
>>613

謝れ


623 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 14:29:48 ]
つーか、ゲームの作りによるだろうw

拡張性無視で、絵と文章を決まりきった定型フォーマットで表示するなら、
メイン部分はJAVAでもC++でも数百行でどうとでもなる。

逆に例えば吉里吉里みたいな性質のものならC++でも軽く数千行を越えるはず。
スクリプトを読解して実行、拡張性まで考慮する構造になっているなら1500行は
むしろc++でもそんなに無駄なソースでは無いと思える。

624 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 14:58:51 ]
>>613
メソッドにするより展開して記述した方が容量が減ることがあった
展開すると同じコードを複数箇所にかかなきゃいけないこともあるけど
jarの容量制限のある時代では仕方ない処理だった
メガアプリでは気にせずメソッドやクラスを作るようになったけど
それでもリソース多いものは微妙に無駄なコードの書き方をしたりする

625 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 15:06:59 ]
でもパケ放題で4500円は高い


626 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 16:23:55 ]
会社の金だからキニシナイ(゚∀゚)

627 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 18:51:29 ]
>>613
きにするな

628 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 11:46:57 ]
2DRPG作ってみます
でもサンプルが無いので困ってます


629 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 13:13:12 ]
良かったですね

630 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 13:20:25 ]
冷たいですよ
教えて下さいよー

631 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 13:25:34 ]
だって困ってるとしか言わないんだもん



632 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 13:29:17 ]
ゲームのアルゴリズムなら他所で聞けよ、どうせ完成しねーんだしw

633 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 21:53:29 ]
iモードなら本がどこにでも・・・

634 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 21:17:49 ]
フォントを縮小描画しつつアンチエイリアスをかけたいのですが、
drawScaledImage()やGraphics2のアフィン変換で縮小してもアンチエイリアスがかかりませんでした。
getPixels()などで自力計算するしかないのでしょうか。

635 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 00:06:11 ]
>>634
やったことはないけど、自力で計算したらかなり遅そうだし
Graphics3DはBMPからしかテクスチャ作れないし、多分書き換え不可だし
GraphicsOGL(OpenGL ES)なら出来る?かもしれないけどトラステッドじゃないと駄目だし。
・・多分無理。

ドコモは何故GraphicsOGLを一般公開しない・・
もししたとしても、現存の機種で仕えるようにするのは技術的に不可能だろうか。

636 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 02:29:43 ]
Eclipse3.5、または3.4で開発してる方いますか?
Doja5.1を使って開発してるのですが、上記のEclipseで
実行やデバッグをクリックしても、エミュレータが立ち上がるだけで
何も動かない状態です。
実行するには、パッケージ・エクスプローラのプロジェクトのbinフォルダ
からjamファイルをダブルクリックしてエミュレータを起動し、
エミュレータのビルドボタンクリック→実行ボタンクリック
としなければいけません。
上記のEcpipseでデバッグする方法は無いのでしょうか。

637 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 10:03:13 ]
コンパイラの対象バージョンを1.4

638 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 16:39:02 ]
>>636
エミュレータのウィンドウが表示され続けるなら >>637 はクリアしていると思われるので、
「DoJa-5.1 API iαppli Development Kit ユーザーズガイド」の
「17.3.15. デバッグの実行」に書いてあることを試してみたらどうかな?


639 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 16:52:40 ]
full.exe がメモリ参照のアプリケーションエラーで異常終了します。

プログラム中のある箇所で System.out.println("AA") を入れる/入れない
で、上記アプリケーションエラーが発生したり、発生しなかったりします。

Cの場合はポインタによるメモリ破壊があり得ると思いますが、Java
でもこのようなことはあるのでしょうか?



640 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 19:44:31 ]
>>639
full.exe って何の実行ファイル?


641 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 20:33:49 ]
今iアプリのグループ製作をしていて俺が音楽部分を担当してるんだが、原因不明のバグにぶち当たったので知恵をお借りしたい。


クラスをファイルごとメインキャンバス(MainCanvas)と音楽再生用(MainMusic)に分けて、グループ製作で統一しやすいようにした。
それでメインキャンバス側から再生用ファイルにあるメソッドを呼び出して、キー操作で音楽の再生、停止ができるようにと考えている。

で、結果再生の方は上手くいったのだが停止ボタンを押して停止させようとしたら例外が発生して落ちる。
もう少し具体的に書くと


音楽再生のファイルでsoundを取り込み、use→AudioPresenter型の引数に音楽をセット。
メインキャンバス側で、mc = new MainMusicしたあとのキー1押したイベントでmc.play();
これは成功だった。


その音楽が鳴っている状態でキー2押したイベントにmc.stop()を割り当て、実際に停止させようとしたら例外発生で落ちる。
例外はMedia sound is not setというもの。

マジでこのエラーで今遅れてる状態なのでどなたか原因と、できれば対処法も教えてください。



642 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 20:52:28 ]
状況がわからん

とりあえずキーイベント内での音楽再生とかやめれ

643 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 21:01:58 ]
mc.stop() 内で AudioPresenter.getAudioPresenter() したりしてないよね

644 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 21:44:06 ]
そもそもの設計が可笑しいってのは無し?

645 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 21:47:46 ]
どこまでをメインキャンバスで処理して、どこからをMainMusicのメソッドで処理してるかいまいち不明だけど、
mc.play() の時に生成したインスタンスをmc.stop() の時のmcに渡していないだけじゃないだろうか。

646 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 21:57:35 ]
多分ソース見たら速攻直せると思うんだがw

mcを毎回作り直したりしてないだろうか。

647 名前:641 mailto:sage [2009/07/09(木) 21:59:46 ]
皆さん色々と意見ありがとうございます。
やっぱり文じゃ伝わらないので明日ソースを上げます。

648 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 22:08:05 ]
とりあえず、再生した時のAudioPresenterと
停止する時のAudioPresenterが違う物のような気がする。

649 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 22:29:11 ]
Java5で追加された機能をJava4でも使えるようにするという
JSR14はiアプリでは使えないんですか?

650 名前:デフォルトの名無しさん [2009/07/10(金) 05:02:50 ]
チャットでデコレル
www.youtube.com/watch?v=fHTq_NV_joA&feature=channel_page

651 名前:639 mailto:sage [2009/07/10(金) 09:28:45 ]
>>640

すみません。

full.exe は iαppli Development Kit for Star-1.0 インストールフォルダの
iDKStar1.0\bin\full.exe です。



652 名前:640 mailto:sage [2009/07/10(金) 11:33:03 ]
>>651
Starの環境がなかったので気付きませんでした。

Javaがどうのというよりエミュレータのバグっぽい気がします。
iαppli Development Kit for Star-1.1 にアップデートしてみてはどうでしょうか。


653 名前:641 mailto:sage [2009/07/11(土) 22:15:43 ]
遅れたけどコードUP カキコできる行の関係で細かいところははしょってます。
これがMainCanvas.java
class MainCanvas extends Canvas
{
public MainCanvas(){
setSoftLabel(Frame.SOFT_KEY_1,"再生");
setSoftLabel(Frame.SOFT_KEY_2,"停止");
}
public void processEvent( int type, int param ) {
if( type == Display.KEY_PRESSED_EVENT ) {
Music ongaku = new Music();
if( param == Display.KEY_SOFT1 ) {
try { ongaku.saisei(i);
}catch(Exception e){
Dialog dialog = new Dialog(Dialog.DIALOG_INFO, "エラー");
dialog.setText("エラーが発生。");
dialog.show();
IApplication.getCurrentApp().terminate();
}
}
if(param == Display.KEY_SOFT2){
try{
ongaku.teisi();
}catch(Exception e){
Dialog dialog = new Dialog(Dialog.DIALOG_INFO, "エラー");
dialog.setText("エラーが発生。");
dialog.show();
IApplication.getCurrentApp().terminate();
}
}
}

654 名前:641 mailto:sage [2009/07/11(土) 22:18:58 ]
続いてMainMusic.java
//外部から呼び出される音楽再生のためのメソッド
class Music implements MediaListener{
MediaSound sound[] = new MediaSound[2];
AudioPresenter ap = AudioPresenter.getAudioPresenter();
public void saisei(int i){
//音楽を入れるための配列
sound[1] = MediaManager.getSound("resource:///mld/bgm1.mld");
sound[0] = MediaManager.getSound("resource:///mld/bgm2.mld");
try {
sound[i].use();
}catch(Exception s){
Dialog dialog = new Dialog(Dialog.DIALOG_INFO, "エラー");
dialog.setText("saiseiでエラーが発生。");
dialog.show();
IApplication.getCurrentApp().terminate();
}
ap.setSound(sound[i]);
ap.play();
}
//停止のためのメソッド
public void teisi(){
try{ap.stop();
}catch(Exception e){
Dialog dialog = new Dialog(Dialog.DIALOG_INFO, "エラー");
dialog.setText("teisiでエラーが発生。");
dialog.show();
IApplication.getCurrentApp().terminate();





655 名前:641 mailto:sage [2009/07/11(土) 22:20:51 ]
エラーを吐くのはMainMusic側のteisi()の部分。
エラー内容がMedia sound is not setだった。
どなたかエラー原因と対処方法を教えてくださいまし

656 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 22:34:00 ]
>653
public void processEvent( int type, int param ) {
if( type == Display.KEY_PRESSED_EVENT ) {
Music ongaku = new Music();
} ←どこにもongaku を渡してないから、以降はongaku への処理が全部不正に。

どう見てもこれが原因じゃんか。

657 名前:648 mailto:sage [2009/07/11(土) 23:03:46 ]
だから言っただろう

658 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 23:25:01 ]
限りなくぬるぽに近いな

659 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 00:14:44 ]
Canvas側も音楽側も平等におかしいので
>>644が正解

660 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 00:34:43 ]
sound[]は必要ない

661 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 09:54:41 ]
例外を表示すればいいのに



662 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 12:16:59 ]
原因:
>>648

対策:
再生・停止させる度にMusicクラスをNewするのをやめる。
AudioPresenterは一度取得するだけでよい。


663 名前:641 mailto:sage [2009/07/13(月) 18:50:58 ]
皆さん指摘ありがとうございました。
ひとまず>>648がヒントになり無事解決できました。

664 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 23:51:49 ]
Doja5.1です。
Audiopresenterを2つ使い、音楽の同時再生を行っているのですが
エミュレータ上で実行するとノイズがひどく、聞くに堪えない状況です。
実機上ではノイズも無く再生されるのですが、エミュレータ上でも
ノイズ無く再生することは出来ないでしょうか?
ファイルの型式はmldで、Audiopresenterにはポート0とポート1を与えています。
エミュレータのサウンド設定も弄って見ましたが改善はされませんでした。


665 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 01:25:58 ]
>>664
OSをVistaからXPに変えるといいよ


666 名前:664 mailto:sage [2009/07/14(火) 03:11:30 ]
>>665
OSはXPを使っています。
OSの話が出るということは、プログラム側では無くシステム絡みの話になってくるんでしょうか。

追記になりますが、先ほど試しにエミュレータを2つ起動し、それぞれで1つずつの音楽を鳴らして見ました。
結果としては、1つのエミュレータで2つの音楽をならした時と同じく、ノイズが入りました。
なにか参考になるでしょうか。

667 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 05:00:02 ]
俺もXPだけど、音はめっちゃくちゃになるよ。
ノイズじゃなくて、再生スピードが速くなったり遅くなったり、ブツブツ途切れたり。


668 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 09:12:46 ]
>>666
音楽って、MIDI系?WAV系?
MIDI系はエミュでまともになるけど、WAV系の音はまともに再生されないよ。
少なくとも俺の環境ではw

669 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 12:19:51 ]
>>665 = >>530 = >>455 = >>407
ヒントは全角英数文字

670 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 12:25:09 ]
>>667
俺のでは途切れはしないけど、テンポが速くなったり遅くなったりする。
Wavは3音使うと遅延が起きる。
StarエミュだとMSGSしか鳴らない。

671 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 22:14:08 ]
OSを2000に変えるしかないね




672 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 22:17:17 ]
doja5.1のキット上でキーリスナセットして十字・決定キー拾いたいんだけどうまくいきません
ダイアルキーは拾えるんだけど、ソフトキーと十字・決定キーだとkeyPressed()自体呼び出されません
なぜかdoja1.0のキット上だと十字・決定キーを拾えるんですが解決策はありますか?
リファレンス見るかぎりでは、dojaのバージョンによって挙動が変わる部分ではないのですが。

673 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 23:03:10 ]
>>672
サンプルのプロジェクトは動く?

674 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 23:09:07 ]
>>673
動きます。

675 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 23:46:52 ]
>>674
じゃあDoJaのバージョンは関係ないんじゃねえの?
MIDPと混同してないかチェック

676 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 00:12:30 ]
>>675
パネルとキーリスナのテンプレ使って以下のとこだけ変えて動かしたらKEY_SELECTは受け取れた。
だけどKEY_SOFT1とKEY_LEFTが受け取れない。doja1.0でもdoja5.1でも同じだった。

public void keyReleased(Panel panel, int key) {
switch (key) {
case Display.KEY_SELECT:
this.setTitle("KEY_SELECT");
break;
case Display.KEY_SOFT1:
this.setTitle("KEY_SOFT1");
break;
case Display.KEY_LEFT:
this.setTitle("KEY_LEFT");
}
}
}

677 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 01:01:20 ]
keyに何が入ってるかダンプくらいさせたら

678 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 01:46:20 ]
開発ドキュメントを読んでないヤツ大杉。

【DoJa-2.0】
・方向(上下左右)キーはキーイベントを発生しません。
これらのキーは、スクロールおよびフォーカス制御のために
常にPanelで処理されます。


679 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 02:07:07 ]
>>673 >>675 >>677 >>678
ご迷惑をお掛けしました。的確な回答を頂けたことに感謝します。

680 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 02:56:41 ]
ソフトキーは
public synchronized void softKeyReleased(int key) {
  if (key == Frame.SOFT_KEY_1) {
  }
}
こんなんだったはず

681 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 10:07:36 ]
キー周りとか1回組んだら使いまわしだし、忘れるよなw



682 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 10:55:49 ]
赤外線通信を多用するのですが、確認ボタンを押す回数を減らす(または無くす)方法はありませんか

683 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 14:57:21 ]
Doja3.5プロファイルで開発していて、実機はN905を使ってます。
一回目のAudioPresenter#play()を呼び出してから制御が返るまで、
時間がかかって、2回目以降の呼び出しでは早めに制御が返って来るようです。
具体的には、1回目は500msぐらいかかりますが、2回目以降の呼び出しは20ms未満でした。

1回目のplayで時間がかかってしまう理由はなぜでしょうか?
アプリ起動後、最初のタイトル画面でBGMを鳴らすときにモタついて、
別スレッドで走ってる描画処理に影響がでて画面がガタついてしまいます。
2回目以降のタイトル画面表示はスムーズにいきます。

最初のAudioPresenter#play()は時間がかかるものと諦めて、
無音のBGMを再生する処理とかを最初に入れるべきでしょうか?

684 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 16:41:11 ]
音源回路とスピーカーに電源が供給され準備ができるまでに500msかかるから

685 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 16:43:03 ]
ちなみに、マルチタクス切り替えからアプリに復帰した後の初めの再生も時間がかかる
理由は同じ

686 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 17:13:19 ]
>>684-685
回答ありがとうございます。
ちなみに、playのタイミング以外に、音源回路とスピーカーに電源供給を促し、
完了するのを待つような処理は可能でしょうか?
無音データを再生させるような処理をするか、最初の1回は諦めるしかないでしょうか?

687 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 17:24:09 ]
news.donga.com/fbin/output?n=200907150148&top20=1           記事入力 2009-07-15 02:59
“ナロ号発射直接見に行こう” 高興(コフン)は今‘部屋を手に入れる戦争’

■韓国最初宇宙ロケット発射D-15…現地表情

民宿はもちろんテントまで品切れになって

遊覧船予約も3日ぶりに終わり

肉眼観測するビューポイント選定

駐車場-特設舞台新設奔走

30日韓国最初宇宙ロケット‘ナロ号(KSLV-I)’発射を控えて韓半島南の端すそ全南(チョンナム), 高興
郡(コフングン)がうきうきしている。 発射当日を前後して, 峰来面(ポンネミョン),ナロ宇宙センター近隣
宿泊施設予約がほとんど終わって, 時宜外れの‘部屋を手に入れる戦争’も広がっている。 ‘宇宙都市’
高興郡(コフングン)は大韓民国の夢と希望をのせて宇宙へ行くナロ号発射祝い行事準備で忙しい。
ロケットが空へほとばしる場面を肉眼で見られる‘ビューポイント’を選定して発射特需を生かすために
観光商品も作った。


“残った部屋がないです。 民宿はもちろんで海水浴場モンゴル式テントまで….”

全南(チョンナム),高興郡(コフングン),影南面(ヨンナムミョン)ナムヨルリ。 この村はナロ宇宙センター
へ直線距離で15km離れているが, 肉眼で宇宙センター建物が見えるほど展望が良いところだ。
この村のマ・ヨンマン次長(63)は “29日から31日まで部屋を探し当てようとする人々のために大変な苦
労をしているが, それでも気持ちは良い”と笑った。

こちらは夏ならば10世帯余りが民宿を運営する。 先月開場した海水浴場には避暑客のためのモンゴ
ル式テント60棟が設置されている。 民宿とテント予約は先月10日ナロ号発射日が発表されてすぐ皆終
わった。 マ次長は “民宿世帯数を増やしてみるが, 駆せ参じる人々を受け入れるには力不足であるよ
うだ”と耳打ちした。 ナロ宇宙センターまで乗用車で40分の距離のトファミョン・パルポ海水浴場近隣ビ

688 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 22:53:57 ]
>>686
playしないと電源が入らない
iモードの接続と同じと思えばいい

689 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 11:41:04 ]
無駄な暗転と開発元ロゴとか流せばいいんじゃね

690 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 16:03:27 ]
実験すんのめんどくせいからてきとうだが
音量0か休符のみのデータでなんとかならんか

691 名前:686 mailto:sage [2009/07/16(木) 17:13:31 ]
>688-690
音量0で再生してチョット待ってからタイトル画面表示するようにしました。
レス・アドバイスありがとうございました。



692 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 17:42:43 ]
>>682
確認ボタンって「通信しますか?」っていうダイアログに
ついてるボタンのこと?
赤外線はネイティブに制御が移るんで、
ダイアログを制御する方法はナイですよ。

693 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 20:53:02 ]
Doja3.5(エミュレータは5.1用を使用)、実機N905で開発してる者です。
newでメモリを確保する際、指定出来るサイズの制限はあるのでしょうか?
※もちろん、Runtime.freeMemory()で取得できる数値より小さい値を指定するのは大前提です。

下記のようなコードで、エミュレータと実機とで動作が違い困惑しています。
buff = new byte[SIZE];

・SIZE=512KB エミュレータ
 例外も投げずにエミュレータが強制終了してしまいます。

・SIZE=30KB エミュレータ
 正常に確保できてるようです。

・SIZE=512KB 実機
 正常に確保できてるようです。

・SIZE=9MBぐらい 実機
 正常に確保できてるようです。


694 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 22:42:15 ]
メールに対して返信しようとしたら「メモリ不足です」となって、新規メールからしかメールが送れないんですがどういうことでしょうか?

695 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 22:49:31 ]
>>693

で、肝心のRuntime#freeMemory()の値は?

エミュレータ(ヒープサイズ:6144KB)でやってみたけど、
空きメモリが約3.5MBのときに約3.4MBのnewに成功してる。

[]に指定できるサイズはInteger.MAX_VALUEまで。
配列のlengthがint型だから見当はつくだろうけど。


696 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 23:57:24 ]
>>693
エミュレータなんかアテにすんな。設定次第なんだから
としか言いようがない


どうでもいいがユーザからのメールで、どうでも良いようなことで
「どういうことでしょうか!!」ってフレーズを良く見るんだが
流行っているんでしょうか

697 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 07:34:31 ]
すみません、CLDC+MIDP+携帯電話用Javaスレッド part 8がどうやら落ちていたようなので、
板違いとは思いつつ質問させて頂きます。

pc11.2ch.net/test/read.cgi/tech/1206017034/l50>>72さんの質問に便乗なのですが、
SoftBank端末用にパズルのような物を練習で作成中で、SH端末の「アクセスの遅いメモリ領域」について頭を悩ませています。

完成画像が大きな一枚絵になるので、常に保持しておかなければならない画像が複数あり、
drawRegionでそれを分割バラバラにして表示させています。
常に保持しておかなければならないデータは以下の通りです。

@384×192(8.2kb)のPNG画像
A192×192(3.7kb)のPNG画像
B192×192(4.0kb)のPNG画像
C576×384(29.0kb)のPNG画像
D240×182(6.3kb)のPNG画像

更に連続正解などの特典としてキャラクターカットインをスクロールさせようと思い、時折上記を保持したまま、
E380×300の(25.5kb)PNG画像
を読み込んで描画させています。
ですので、一番保持量が多い瞬間は@〜Eという事になります。
ステージが変わる場合は、上記を全て一旦null→gc→別画像を読み込み、という流れで行っています。

ただ、上記の最大時のサイズは、X:1964 Y:1442なので、240*260*11より面積という面で見ると小さいと思うのですが
実際は@ABの3ファイルまでしか高速アクセスが出来ていない状況です。
※読み込みの順序によっては最初の1枚しか高速にならなかったりもします。


698 名前:697 mailto:sage [2009/07/17(金) 07:35:56 ]
そこで幾つか試してみたのですが、
1.画像の色数を極限まで落として容量を削減→変わらず
2.@ABを1枚の画像にまとめて、@CD+Eにしてみた→@ABのアクセスですら更に重くなる

という感じです。
考えられるのは、画像のXY長で管理しているとすれば、X,Yが240,260を超えた画像は、たとえ241pixとかでも
2枚分消費し、次の画像は3枚目のメモリ位置に格納するので11枚分を越えてアウト?
でも、実際は同じXY長でも色数等で容量が大幅に変わるのでそれはないかな、とも思っています。

次に考えられるのは、起動時にすでに高速アクセス用のメモリが何者かによって占められている、という事かなと思い、
試しに起動直後、タイトル画像(240*240 2kb)のみを読み込み、描画した状態で
Runtime.getRuntime().totalMemory()、Runtime.getRuntime().freeMemory()を表示させてみたところ
2673000/4194292 からスタートし、空き領域急降下→自動GCを繰り返していました。

ちなみに@ABCD+Eの状態の場合は
1400000/4194292でした

とにかくいの一番に画像を読み込ませようと、宣言を一番初めにしたり、画像の読み込み処理を、
音楽ファイルやコマンドリスナーより先にしたりなどしてみましたが、どれも意味はありませんでした。

一体何が原因として考えられるのか、アドバイスを頂けるとすごく助かります。
長文乱文になり申し訳ありませんが、よろしくお願い致します。

699 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 10:03:25 ]
・切羽詰まった感は出てるがスレ違い
・画像は一枚に纏めるより、むしろ実画面サイズ以下に分割の方向で
・根本的に画像の使い方が粗い
・SHですねわかりますとか思ってたら本当にSHだったので嫌んなった
・ファイルサイズとヒープ消費量を同一視しないこと
・この場合freeMemory()等を頼りにしないこと
・端末機種のバ…特性に併せるか若しくは諦めることそれが一番だいじ

700 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 10:16:46 ]
スレ違いだな。

何とかしたかったら神に祈れ。
技術で何とかできるなんて考えは捨てて、仕様を直させろ。

701 名前:693 mailto:sage [2009/07/17(金) 11:25:27 ]
>>695
Runtime#freeMemory()は800kbちょいぐらいの値が返ってきてる状態での、
500KBの確保に失敗してます。
具体的には↓な感じです。
エミュレータのヒープ最大容量は2048kbにしてます。
-------------------------------
System.gc();
sleep(1000); // チョット待つ
Runtime#freeMemory(); //800kbぐらいの値が返ってくる
temp = new byte[512 * 1024]; // エミュレータ落ちる
-------------------------------
実機N905は12MBぐらいの空き容量で9MBの確保に成功してるので…
やっぱりエミュは不完全な部分もあるってことでしょうか。

>>696
エミュをアテにするなってことは、やっぱり最後は実機で確認が確実ってことですかね(^^;




702 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 11:42:15 ]
メモリ周りは運が絡む

703 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 12:31:03 ]
単なる別機種と化してるエミュレータなんて何考えてるんだろうな






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

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

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