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

このエントリーをはてなブックマークに追加
945デフォルトの名無しさん:05/03/15 12:57:55
>944
地獄を見るほど複雑とも思えないのだが、何を懸念してるんだ?
946デフォルトの名無しさん:05/03/15 13:03:33
RGBで明度が違うから単純にマスクしちゃだめ
947デフォルトの名無しさん:05/03/15 13:17:04
>>945
作ってるアプリは商用? それとも趣味?
どこかに納品するものならやめておいた方が良いと思うよ。
DoJa4.0でgetColorOfRGBの仕様が拡張された例もあるし、
自前で内部解析しても将来端末で動く保証が何も無い。
後々まで対応迫られるのも嫌だからね。

ってこのあたりはクライアントによりけりか。
老婆心だった。すまん。
948デフォルトの名無しさん:05/03/15 13:40:32
>>936
Poly描くとき画面端1ラインおかしいの直ってる?
949デフォルトの名無しさん:05/03/15 13:53:50
>>943
アプリ開始時に

Graphics g;
int r_table=new int[256*256*256];
int g_table=new int[256*256*256];
int b_table=new int[256*256*256];

for (r=0; r<256; r++) {
 for (g=0; g<256; g++) {
  for (b=0; b<256; b++) {
   g.setPixel(0,0,Graphics.getColorOfRGB(r,g,b));
   i=g.getPixel(0,0)
   r_table[i]=r; g_table[i]=g; b_table[i]=b:
  }
 }
}

とか考えてみた。改良したら使い物になるかもしれん。
950949:05/03/15 14:00:16
>>943
つうか、PalettedeImageなんかGIFから読み込むぐらいにしか使わないから、
GIFからパレットデータ抜き出して操作するぐらいで足りないの?
951デフォルトの名無しさん:05/03/15 14:11:41
全体的に光らせたり、
キャラを暗い状態からだんだん明るくしたり

と細かい数式的な動作をさせたいのです。
パレットそのものを持つと、1*1の面積をもつ16色GIFですら77バイトもかかってしまふ
952デフォルトの名無しさん:05/03/15 14:52:01
         ☆ チン     マチクタビレタ〜
                         マチクタビレタ〜
        ☆ チン  〃  Λ_Λ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・) < 次スレまだ〜?
             \_/⊂ ⊂_ )   \_____________
           / ̄ ̄ ̄ ̄ ̄ ̄ /|
        | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
        |  愛媛みかん  |/
953デフォルトの名無しさん:05/03/15 15:28:57
>>951
PalettedeImageってパレット替えが遅くないか?
954デフォルトの名無しさん:05/03/15 15:44:27
>>953
いや、かなり早い。が、また問題発覚。
D900iが、どんな色数のGIFを読ませても
getEntryCount で256返してきやがるorz もう最悪やこの機種
955デフォルトの名無しさん:05/03/15 16:02:34
ああ、ごめん。それは流石に勘違いだった<必ず256
死ぬかと思ったorz

そろそろ日記帳状態になってきたから、次スレあたりで続きをまとめて報告するよ。
ノシ
956デフォルトの名無しさん:05/03/15 16:14:10
質問です。
アプリのバックライトを常にONにしておくにはどうしたらいいのでしょうか?
PhoneSystem.setAttribute(PhoneSystem.DEV_BACKLIGHT, PhoneSystem.ATTR_BACKLIGHT_ON);
を最初にやっても、しばらくすると暗くなってしまいます。

暗くなったら上の命令を。とすると、一瞬だけ暗くなるため画面がちらついてしまいます。
ご教授よろしくお願いいたします。
957デフォルトの名無しさん:05/03/15 16:26:12
ネイティヴからのバックライトの制御(操作でON・一定時間でOFF)は
アプリ側からはどうしようもない
958デフォルトの名無しさん:05/03/15 16:47:12
>>956
ネイティブの「iアプリ設定」の画面を開いて
バックライトの制御を「システム優先」から「ソフト優先」
にすれば制御できた記憶が。
959デフォルトの名無しさん:05/03/15 17:02:41
試してみました。

ネイティブの設定で「ソフトの設定に従う」にしてあれば、
一度setAttributeするだけで永続するようです。

設定になっていない場合は、断続的にsetAttributeするしかなさそうですね。
960デフォルトの名無しさん:05/03/15 17:05:11
>>959
ついでに、レジュームがかかると再度設定する必要がある。
961デフォルトの名無しさん:05/03/15 17:29:44
>>954
やたら遅かった記憶があるんだが、FF1の戦闘画面みたいに絵が大きくなければ
実用的な速度で動くのかな?
962デフォルトの名無しさん:05/03/15 17:57:43
64*64くらいの画像を、パレット変更しながら描画したけどあまり気にならず。
だが、D900はやはり遅い。
D900i
F900i
N900i
SH900i
P900i
の順番で遅かった。減色具合をリアルタイムに計算させてたのもあるが、
Dはパレット計算&セットだけで25msくらいとった。っておーい。すげー遅いじゃん(;´Д`)

絵の大きさは多分関係ないと思うぞ。パレットなんだし。
963デフォルトの名無しさん:05/03/15 18:00:49
>>962
パレットがハードウェアで実装されてないんじゃないのか?
ソフトウェアエミュレーションで遅くなってる
964デフォルトの名無しさん:05/03/15 18:12:02
ああ、ちなみに。
エミュとD900はRGBそれぞれ8bit
それ以外の900は565の16bitでした。

またDだけか!
965デフォルトの名無しさん:05/03/15 18:46:29
>>964
Dで画像のサイズ変えて同じようにパレット操作して
処理にかかる時間が画像サイズに比例するか調べてみた?
966デフォルトの名無しさん:05/03/15 18:51:20
俺の記憶ではパレット操作はSH以外使い物にならんほど遅かった気がするが…
967デフォルトの名無しさん:05/03/15 19:38:15
PよりSHのほうが速いだろ。
968デフォルトの名無しさん:05/03/15 20:36:13
>>965-967
あくまで自分のゲーム用に実験しただけなので、場合によってはスピード逆転とかは十分あると思いますよ
969デフォルトの名無しさん:05/03/15 20:53:00
パレット操作はともかく、PalletedImageの方が描画遅いよね。倍ぐらい。
970デフォルトの名無しさん:05/03/15 21:07:04
>>969
機種によりました。
P900iはどっちでもスピード(ほとんど?)変わらず。
Dは顕著に遅くなる。他はまぁちびっと。

でも基本はPlettedImageの方が遅いと考えていいと思います。
971デフォルトの名無しさん:05/03/15 22:30:38
すいません、教えてください。
アプリをダウンロードする時に、指定するjamファイルをPHPにして、
そのPHPがjamファイルを表示してダウンする事はできますでしょうか?

今、PHPにjamをそのまんま表示させてるんですが、ソフトに誤りがありますと言われます。
但し、その表示されてるもんをjamファイルに貼って正規のやり方で落とすと
落とせます。
ご存知のかたいらっしゃいましたら宜しくお願いいたします。
972デフォルトの名無しさん:05/03/15 22:55:19
>>971
HTTPヘッダとかマンドクサイことになりそうだから
素直にperlで吐いたほうがいいと思う。
すくなくともperlのCGIでjam吐かせたら問題なくダウンできたよ。
973デフォルトの名無しさん:05/03/15 23:00:25
>>972
レスどうもです。
なんか適当にやってたら1回だけ出来たんです。
それがものすごく単純なコ−ドで。
へぇこんなんで出来るんだって感じでした。

ところがどっこい、ソースをいじって遊んでたら、どうやるか
わからなくなってしまいました(T_T)
激しく後悔。。。
974デフォルトの名無しさん:05/03/16 00:59:27
人間は追い詰められると幻覚が見えてくる動物です
975デフォルトの名無しさん:05/03/16 02:39:23
>>971
>jamファイルをPHPにして、

ここの意味が分からん
PHPでjamファイルを作成してそこへのリンクを表示させたいってこと?
何が言いたいか分からん上にスレ違いくさい
976デフォルトの名無しさん:05/03/16 05:06:36
PHPでjamファイルを出力するって意味でわ?
977デフォルトの名無しさん:05/03/16 05:56:03
>971氏は文章を整理して質問し直すべし。
>975>976のやり取りを見れば前半ですら意味が伝わってないことが分かるでしょ?
後半も「PHPにjamをそのまんま表示させてるんですが」や「その表示されてるもんを
jamファイルに貼って正規のやり方で落とすと」とか独自の表現が多くて意味不明。
質問するなら人に伝わるように書かないと期待する回答は得られないよ。
978デフォルトの名無しさん:05/03/16 08:14:36
PHPでjamファイルを出力するって意味でわ?
979デフォルトの名無しさん:05/03/16 08:29:54
そうは読めないねぇ
用語が支離滅裂なんで電波系の人だと思った

つーか、ちゃんと寝なさい
980デフォルトの名無しさん:05/03/16 08:51:10
>>971
翻訳するとこんなん↓かしら?

>教えてください。
>アプリをダウンロードする時にJAMファイルの替わりに、
>PHPでJAMファイルの内容を出力させてもダウンできるで
>しょうか。

>試してみたら「ソフトに誤りがあります」と言われて
>ダウンロードできませんでした。PHPで出力するテキストを
>JAMファイルに保存してみたら、ダウンロードできました。

引っ掛かりそうなことを順番に上げると、
・文字セット(SHIFT_JISとかEUCとか)
・改行コード
・Content Type
くらいかな。
981デフォルトの名無しさん:05/03/16 10:55:27
翻訳ありがとうございます。

やりたいことは、
<object declare id="application" data="jam.php?id=999" type="application/x-jam">
↑です。
文字セットはSJISで出力して、改行コードは\r\n
Content-Typeはapplication/x-jamとtext/plain
で試しましたが旨くいきませんでした。

覚えてはないのですが、適当にやって一度だけ上手くいったので
その後ソースをいじってしまい非常に後悔しております。
982デフォルトの名無しさん:05/03/16 11:02:55
>>981
jam.php?id=999
をブラウザで開いて、元のJAMファイルと
バイナリレベルで違いを比べれば分かりそうだけど。
983971:05/03/16 11:12:33
すんません。できました。
指定した位置にjarがなかったのが原因でした。。。

一応、PHP側のソース載せときます。
<?php
$ref = $_GET['ref'];//ファイル名
$array = file("${ref}");//SJISで保存されたJAMを読み込む。

for($i=0;$i<count($array);$i++)
{
//paramとかネットワーク系の情報を変更したかったらeregiでもしましょう。 
print "$array[$i]";
}
?>

終始電波で申し訳ございませんでした。m(_ _)m
984デフォルトの名無しさん:05/03/16 11:15:04
>>982
レスありがとうございます。
もう解決しましたが、ブラウザでアクセスすると
きちっと表示されてたんです。
なのに何故?と思っていたら、jarがありませんでした。
お手数かけました。ごめんなさい。
985デフォルトの名無しさん:05/03/16 12:34:14
パネルクラスでIApplication型の変数を使ってgetSourthURL関数を呼ぶとエラーになるのですがなぜでしょう?
ソース的には以下のような感じです。
class A extends Panel {
IApplication IApp;
String URL=IApp.getSourthURL()+"xxx.cgi";
}
986デフォルトの名無しさん:05/03/16 12:40:59
エラーって一言で言われてもねぇ…
987デフォルトの名無しさん:05/03/16 12:41:29
getSourceURL()じゃねえの
988デフォルトの名無しさん:05/03/16 12:56:12
>>987
あー間違えました。
985のソースのgetSourthURL()の部分はgetSourceURL()です。
989デフォルトの名無しさん:05/03/16 13:01:30
>>981
data="jam.php?id=999"
ってとこみると、jam.phpというファイル名だと思うけど、
"xxx.jam"みたいな名前にして
.htaccessでサフィックスjamをserver parsedに設定しといたほうが
より安心できないか?
990デフォルトの名無しさん:05/03/16 13:04:32
>>985
IAppが空じゃん

IApplication IApp = IApplication.getCurrentApp();
String URL = IApp.getSourceURL()+"xxx.cgi";
991デフォルトの名無しさん:05/03/16 13:15:11
992デフォルトの名無しさん:05/03/16 13:33:21
>>990
ありがとうございます。
getCurrentAppしないと駄目なんですね。
でも何故かgetCurrentAppをしていなくても
エミュレーターや一部の実機では動いたりしました。
なんで動いたんだろう??
993デフォルトの名無しさん:05/03/16 17:01:34
くそー
Invalid constant pool entry 吐きやがった
double や float などを使ってたり、クラスが壊れてたりしたら出るってどこかに書いてあったが
doubleとか使ってないし、何度もビルドしてるからクラスが壊れてることもないと思うんだが……

double float 以外に、Invalid constant pool entry を吐く変数型とかってある?
994デフォルトの名無しさん
とりあえずググれ
きちんと対処法と、まず試してみるべき行動がきちんとひっかかるじゃないか。