CLDC+MIDP+携帯電話用Javaスレッド part 2

このエントリーをはてなブックマークに追加
>>922
いくらなんでも自分のすることに「ご」をつけるのはおかしいと気づかないのか?
自分に対して尊敬語っていうのは相手に対して謙譲語と同じレベルだぞ?
空気を読んで軽くボケた>>922>>925がマジレスして
空気を凍らせてしまっているようにも見える。
ここは難しいインターネッツですね。
927デフォルトの名無しさん:04/08/04 17:34
>926
そのようですね。

>925
ここで「ご」についてだけ書き込みするなら、いちいちうるさいですよ。
意味は通じてるはずですからね。
928デフォルトの名無しさん:04/08/04 17:48
922の 「ご質問です」は、だんだんと一般化していくのかも。

これ読んでみて。
ttp://home.alc.co.jp/db/owa/jpn_npa?stage=2&sn=79
929デフォルトの名無しさん:04/08/04 17:49
ところで、1000になる前に922の質問内容に答えてあげたらどうなの。
Micro3D V3を使っていて、
複数のモデルを描画したいんだけど、具体的にどんな手順を踏めばいいの?

ちなみに、1つのモデルを描画、2つのモデルを同一座標に描画はできました。

モデル自身が持っている座標を変える方法が分からなかったので、
ViewMatrixに平行移動を無理やり合成して、1つ描画するたびにViewを更新、
2回に分けて描画したら、2回目のほうによってしまいました。これは間違いだった模様・・

やはり、Figureの内部に座標を持っているとして、その座標をいじらないといけないのでしょうか?
それとも、低レベルライブラリを利用して自分で作らないと駄目?

教えてえらいひとー
>>930
iアプリでの経験だけど、

1)単位行列を用意
2)スケーリング
3)回転
4)平行移動
5)ビューポート変換

の順で変換行列を作って、Graphics3D#setViewTrans()でMicro3Dの変換行列
自体に設定した上でGraphics3D#renderFigure()してやることでできることはできた。

ただ、動くんだけど釈然としない方法ではあるので、他にもっといい方法があるかも。
>>931

ありがとう、とりあえずは実績のあるその方法でチャレンジしてみるよ、ママン
933デフォルトの名無しさん:04/08/05 00:40
MIDP1.0 で、PNGファイルを実行時に編集することは可能でしょうか?
例えば、PNGファイルを読み込んで、上下反転とか、画像サイズを2倍にしたりとかってことなんですけど、、、
どなたかサンプルキヴォンヌ

また、resフォルダにBMPファイルを入れて置き、
実行時に BMP -> PNG と変換して、表示させるようなことをしてる方はいらっしゃいますか?
>933
>PNGファイルを読み込んで、上下反転とか、画像サイズを2倍にしたりとか
MIDP1.0の範囲内では無理。
読み込んだ画像に文字を入れる、くらいなら可能だけど。
(Image#getGraphics()でGraphicsインスタンス取って(ry )
BMPをPNGに変換するのは……やってできんことはないかもしれんが、
多分エンコーダで20kは食う。素直に開発機上でPNGにしなされ。
>>933
できるかできないかということなら、できないということはない、ってとこかな。
PNGのバイナリデータを直接いじる必要があります。
JSCL1.2ならImageに読み込んで、描画する際にいろいろできるけど。

わざわざBMPからPNGに変換してるような変な人はいないと思われ。
>>934,935
純粋なMIDP1.0だけではやはり無理ですか。

ただ、画像ファイルがいっぱいあり、どうにかしてアプリサイズを小さくしたくて、
実行時に画像ファイルを作り出すようなことをしようと思っております。
幸い、左右対称、上下対象な画像データが多いので、どちらか半分だけ画像データとしてもっておいて、
実行時に反転して読み込んで一枚の画像にしようかと、、、

その際、PNGデータを直接扱うよりかは、BMPの方が簡単そうなので、
BMPで元データを作って、実行時にPNGデータを作り出すのはどうだろうか?
と考えた付いた次第です。

みなさんは、大量にデータファイルがある場合にどうやってアプリサイズを小さくしているのでしょうかねぇ・・
どんなにたくさん画像使ってんだろ。
VならとっととSprite使うのがいいな。
>>922
その質問は、Javaではなく、HTTPの質問ってこと?
設定するってのは、リクエストのAcceptヘッダと
レスポンスのContent-Typeヘッダのことだよね?

application/java や application/java-archive は Java。
テキストなら text/* 、イメージなら image/* などになる。

あと、VはDと違って、TCP/IP上のHTTPのはずだから、
特別なことはないと思う。でもゲートウェイが邪魔することはあり。
>>936
サイズを小さくするのに BMP を使うって、なぜ?
BMPの方がでかくない?

どんな画像データか知らないけど、プログラムで描けないの?
>>936
容量制限ギリギリの攻防でないならアプリサイズを小さくする努力はしない。
画像ファイルが多くて容量の関係からリソースに含めきれない場合、
アプリ起動後にサーバから取得してストレージ領域に保存する。
画像は基本的にPNGフォーマット。

いくら線対称な画像だろうと内部で生成することは考えない。
90度単位の回転、上下反転、左右反転で使い回せる画像なら
正位置の画像だけ持っておき、描画時にそれらの操作を指定して表示する。
もちろんauやVodafoneが用意している拡張Graphicsクラスを使ってだ。
自分の場合はMIDP1.0のみにこだわる必要がないのでこのようにしている。
>>936
透過属性がなくてもいいなら、
Image.createImage(w, h)
で動的に作り出せるよ。

あとスピードを求めないなら、左右対称とかは楽勝だけど。
1ドット幅づつ逆からdrawImageしていけばいい。
942デフォルトの名無しさん:04/08/05 09:32
VアプリにてPNGを仮想画面(drawBackgroundで描画する領域)に描画することは
出来るのでしょうか?
出来るのなら方法を教えてください。
Vアプリ開発ガイドによると
C型だとACanvas、P型だとSpriteCanvasでpaint()をオーバーライドすれば
Graphicsメソッドを呼び出せるらしいです。
注意点が幾つかあるようなのでガイドを参照した方が良いと思う。
ガイドは
http://developers.vodafone.jp
のVアプリ開発ガイド[開発編]
http://developers.vodafone.jp/dp/tool_dl/download.php?docid=302
です。
945デフォルトの名無しさん:04/08/05 10:18
iアプリだとカメラ画像を読み込んでアプリの背景等にdrawImageをすることができるのですが、
Vアプリでも同様なことができるのでしょうか?
サンプルサイト等ご存知でしたら教えて下さい。
>>945
SpricateCanvasのpaintのGraphicsに対する描画は背景になされるので、
paintでGraphicsに描画後copyAreaで転送して、
フレームバッファでさらに加工してdrawFrameBufferすればOK
947945:04/08/05 10:50
>>946
レスありがとうございます。
私は942の方とは別人です。
カメラ画像のファイル名選択および読み込みの部分はご存じないでしょうか?
948922:04/08/05 14:13
938さん レスありがとうございます。

サンプルプログラムがあるサイトなど、
ご存知でしたらリンク貼って頂けますと助かります。
VODAで、アプリからクリップボードにテキストをコピーする方法ってないですか?
VODAのJAVADOC探してるんですが見つけられません。
>>949
ありません。
951933 & 936:04/08/05 23:07
みなさん、レスありがとうございます。

>>937
>VならとっととSprite使うのがいいな。

残念ながら、SprintPCSなんです。

>>939
>サイズを小さくするのに BMP を使うって、なぜ?
>BMPの方がでかくない?

確かに元データはでかいですけど、JARにすれば小さくなるので、
ひとまずOKかな、と。
まずは実行ファイルサイズ容量をどうにかするのが先決なので、、
その後、ヒープが足りなーいとなるのかもしれませんが orz..

>>940
>画像ファイルが多くて容量の関係からリソースに含めきれない場合、
>アプリ起動後にサーバから取得してストレージ領域に保存する。

これが有力候補ですね。

>>941
>透過属性がなくてもいいなら、

残念ながら透過属性が必要なんですよ。。
>>951
普通に考えてBMPをJarに入れたとき、PNGより小さくなるとは思えないよ。
PNGの圧縮は効率が良くなるようにフィルタ処理も加わるから、大抵素の物をdeflateするよりは小さくなるの。
Jarの圧縮によっぽど優秀なdeflateツールを使って、PNGのツールがヘタレなら逆転するかもしれないけど。
953946:04/08/06 00:52
>>949
機種依存になるかもしれないけど、
東芝機種はTextFieldなどでユーザに文字入力をしてもらっている画面でコピーができるので、
ユーザに手動でコピーしてもらえる環境を用意することはできる。
あんま使えんけど。

>>947
なら、CameraConnectionとStorageConnectionのクラス概要くらい嫁。

>>951
試しに、BMPをzip圧縮してみ。
どれだけ使えないかがわかる。
とっととPNGにしる。
俺は1ドットずつ打つ処理を高速化するために、バイト配列→無圧縮PNGやってた。

>>953
携帯で使うサイズくらいならPNGファイルよりもBMPのときの方がいい場合が多いよ。
余計なヘッダないし。
使うグラフィックを大きな画像一つにまとめて、Imageの切り出しで使うってのはどうなんだろ。
>>955
そこが不思議なんだよな。
大きな画像1つにまとめた段階で、透過属性がなくなってしまうのだが…。
まとめた段階でというか、切り出したときに透過属性が付加されないんでしょう。
958デフォルトの名無しさん:04/08/06 18:00
すみません、JARツールのことで質問です。

JARにディレクトリを指定し、その中の特定のファイルだけをアーカイブに
含めないようにしたいのですが、JARツールでこのようなことは可能でしょうか?
オプションを見る限り無理っぽいのですが、別のツールを使った方法などで
やり方をご存知の方いらっしゃったら宜しくお願いします。

具体的には以下の様なケースです。
res/aaa.gif  ←
res/bbb.gif  ←resフォルダ中のファイルはJARに含めたい。
res/ccc.gif  ←
res/.svn/・・・ ←このディレクトリ以下のファイルはJARに含めたくない。

要はファイルをSubversionで管理しているのですが、その情報がディレクトリに
含まれてしまうのでJARから除去したいのです・・・
バッチファイルで
resフォルダをcopy、
コピったフォルダから.svnフォルダ削除、
jar -C コピッたフォルダ
削除 /Q コピッたフォルダ
むにゃむにゃ。元通り。jarゲット。なんてね
eclipse は楽でっせ
eclipse起動遅いからイヤン
うちは、
resOrgフォルダっての作って、そこをSubversionの対象にして
resフォルダは対象外にしてる。
で、バッチファイルでresOrgからresにコピーしてから、jarを作成するようにしてる
これじゃめ?
963962:04/08/06 20:16
あ、結局リソースを削除したときに残るから
make前にresフォルダ内をクリアしてるわ

やってることは、959とほぼ一緒でした。
>958
antのjarタスクで、filesetのexclude使えば解決。
そろそろ次スレ準備?
立てたっす
CLDC+MIDP+携帯電話用Javaスレッド part 3
http://pc5.2ch.net/test/read.cgi/tech/1091798483/
>>966
乙!
968951:04/08/07 00:10
>>952,953
おっしゃる通りですね。BMPより強力なPNG圧縮かけたほうが、
サイズが小さくなりました。

>試しに、BMPをzip圧縮してみ。

1. BMP 474KB -> JAR 24KB
2. 1.のBMP無圧縮PNG 475KB -> JAR 25KB
3. 1.のBMP圧縮PNG 20KB -> JAR 20KB

素直に、最大限圧縮したPNGファイルを反転したファイルも含めて
JAR化してやった方がいいのかな・・

>>954
無圧縮PNGで実行時に画像ファイル作成されたんですね!
実機での調子はいかがでしたか?
メモリ使用量、読み込み、表示レスポンスなど、問題なかったでしょうか?

969954:04/08/07 22:14
>>968
A5403CAだったけど、256*240の画像でバイト配列から無圧縮PNGにするのに1秒強くらいかかるよ。
メモリ使用量までは覚えてないや、ゴメン。
>969=954
横からスマソだが
何かそれだと、オフスクリーンのImage持っといてそこに描いた方が
早そうに思えるんだけど……漏れ何か読み落としてマスカ??
971954:04/08/08 00:29
>>970
俺の場合、リアルタイムに256*240の画像を作成する必要があって、
普通に1pixづつ描いていたら時間がかかるから、バイト配列→PNG
という手段にでただけ。なので、オフスクリーンとかは関係ない。
お世話になってます。
おかげさまで作成しているアプリがアプリらしくなってきました。

Vアプリでブラウザ起動がうまくいかないのですが・・・・

BrowserConnection brs;
String url2 = "http://www.yahoo.co.jp";

try {
    brs = ( BrowserConnection ) Connector.open(url2);
    brs.connect();
    brs.close();
  } catch (Exception e) {}


jadファイルはMIDlet-Network: Y 以外に必要なものとかありますかね?

なんかお気づきの点がありましたらお願いします。
>>972
String url2 = "http://www.yahoo.co.jp";
じゃなくて
String url2 = "url://www.yahoo.co.jp";
でやってみ。
>>973

ありがとうございます!
いけました。