iモード携帯電話用Java(iアプリ) Part20 at TECH
[2ch|▼Menu]
[前50を表示]
500:デフォルトの名無しさん
10/02/10 22:17:38
>>498
>>497を鼻で笑えばいい

501:デフォルトの名無しさん
10/02/10 22:35:37
>>498
そんなことに悩むより6もの言語を常用しないといけない現状を
どうにかすることを考えたほうがいいんじゃないか?

502:デフォルトの名無しさん
10/02/10 22:37:52
Doja4.1です。
以下のソースで、ZeroクラスからOneクラスに移行するとき、
Zeroという文字を消えないようにするにはどうすればいいでしょうか。
paintという関数は無いとエラーになってしまいますし。

URLリンク(kansai2channeler.hp.infoseek.co.jp)

503:デフォルトの名無しさん
10/02/10 23:07:43
>>502
そもそもCanvasクラスを2つ用意する必要はない。
そのやり方だと画面を切り替えるたびにCanvasクラスが増えていくw
Canvasクラスは1つだけで、処理によって「Zero」か「One」どちらかを描くのが一般的。
たぶん我流でやってるんだろうけど、iアプリ入門みたいな本を読むか、
↓でも読んで勉強したほうがいいよ。

URLリンク(allabout.co.jp)

504:502
10/02/11 00:00:06
>>503
ありがとうございます。
まだ初心者で、とりあえず文字を
表示できるというので、Canvasを使っていました。

RPGに例えると、Zeroはタイトル、Oneはオープニング
みたいな感じをイメージしていました。
シーンごとに文字表示、キーチェック関数がある感じです。

紹介いただいた講座サイトも見てみたいと思います。

505:デフォルトの名無しさん
10/02/11 00:17:29
>>497 が一番アホな件

506:デフォルトの名無しさん
10/02/11 00:22:25
>>505
煽りに乗せられる奴もアホ
ドラクエでいえば、爆弾岩と毎回まともに戦うようなもの
「逃げる」を選択するんだ!

507:デフォルトの名無しさん
10/02/11 00:25:00
>>506 が一番アホな件

508:デフォルトの名無しさん
10/02/11 00:26:38
>>506
おまあたまいいな

509:502
10/02/11 02:07:03
キャンバスクラスがどんどん増えないようにする(RPG04)
URLリンク(kansai2channeler.hp.infoseek.co.jp)

キャンバスクラスをひとつにする(RPG05)
URLリンク(kansai2channeler.hp.infoseek.co.jp)

こんな感じでしょうか。

後、04はCanvasクラスがふたつになってしまいますが、
イベントをチェックする時に、シーンの種類 → イベントの種類
の順番にチェックできるので、見やすいと思うのですが、どうなのでしょうか。
(05の場合は逆で、イベントの種類 → シーンの種類)

510:デフォルトの名無しさん
10/02/11 16:46:03
>>509
→ 「逃げる」

511:デフォルトの名無しさん
10/02/11 19:49:52
>>507
正解

512:502
10/02/11 21:49:27
オーバーライドや、catchというのでできそうな気もするので、
それらを勉強して見たいと思います。

>>510
ありがとうございます。
まだ深い意味までは分かりませんが、ヒントにしたいと思います。

513:デフォルトの名無しさん
10/02/11 22:18:47
>>512
おいおい、>>510は君をバカにしてるだけだよ。

ちょっと古いがRPGならこれが参考になる。
短いソース2本と画像をコピーしてビルドすれば、すぐに動く。

URLリンク(www.saturn.dti.ne.jp)

それから、質問する前にマニュアルなり解説書なり読みなよ。
自分で這い上がろうとしない奴には誰も手を差し伸べてくれない。
みんな逃げてしまうぞ。

514:デフォルトの名無しさん
10/02/12 00:37:17
個人的にはゲームループを実装した継承専用抽象Canvasを早い段階で作っておいたほうが良いと思うね。

515:デフォルトの名無しさん
10/02/12 11:58:26
どうでもいいけど、タッチパネル系のゲーム、みんな作ってる?

516:デフォルトの名無しさん
10/02/12 13:57:02
>>515
iPhoneであるこんな感じのアプリ!っていう要望が多いから作ってるよ

517:デフォルトの名無しさん
10/02/12 17:04:14
>>516
( ゚Д゚)スレ違いだヴォケ!!

518:デフォルトの名無しさん
10/02/12 18:14:44
いやスレ違いじゃないだろ。starアプリならタッチ取れてマルチタッチ(特定のジェスチャのみだけど)できる機種もあるんだし。

519:デフォルトの名無しさん
10/02/12 20:53:14
できる機種もあるんだしですね♪

520:デフォルトの名無しさん
10/02/12 21:45:48
特定のジェスチャのみなのかよw

521:デフォルトの名無しさん
10/02/12 22:04:37
>>520
わるい?

522:デフォルトの名無しさん
10/02/12 22:10:39
s/である/にある/

>>521
どうしても連動感が薄れるよね

523:デフォルトの名無しさん
10/02/14 12:40:18
doja5.1のパッケージソース単体(com.nttdocomo.*)ってどこかにないの?
まさかドコモ公式からDLしたexe実行しなきゃ取り出せないの?

exeに固められてるとかすごい困るんだけど



524:デフォルトの名無しさん
10/02/14 12:52:43
そもそも1.4が入ってないと実行すらできねーじゃ根かくそやロー


なんでexeなんだよたこ!!!!

525:デフォルトの名無しさん
10/02/14 22:23:59
おいおまえ携帯開発は初めてか?力を抜けよおう。

526:デフォルトの名無しさん
10/02/14 23:27:04
g=getGraphics();

コレを使うとエラーが出ます
どうしてですか?


527:デフォルトの名無しさん
10/02/15 01:16:28
>>526
エラーになりませんが?
エラーメッセージは?

528:デフォルトの名無しさん
10/02/15 05:10:18
>>527
原因が分からないので教えてほしいのですが…

529:デフォルトの名無しさん
10/02/15 06:27:24
>>528
原因はエラーメッセージに書いてありますよ。

530:デフォルトの名無しさん
10/02/15 07:43:43
使ってるバージョンとかその糞コード公開とかしてもらわんと、
円馬鹿の中の人と思われちゃうよ。

531:デフォルトの名無しさん
10/02/15 10:17:51
初心者未満しかいないのかよこのスレ…

532:デフォルトの名無しさん
10/02/15 10:54:05
>>524
おまいさんみたいなのにはみんなして触らないように心掛けるもんだが、
あえて言っておくと1.4とか1.5とか6.0とか関係なく動くぞ。よほどのことがなければ最新バージョンで不具合は起こらん。

533:デフォルトの名無しさん
10/02/16 16:28:36
>>527
「シンボルが解決できません」って出ます
キャンバス外のクラスで使用しているからなんでしょうかね?
オブジェクト指向って複雑ですね

534:デフォルトの名無しさん
10/02/16 17:20:57
熊さんが釣り餌を目の前にしてダラダラ汗かいている状態。
Cコンパイラにjavaのソース通してないか……?

535:デフォルトの名無しさん
10/02/16 17:31:25
>>533
そのエラーメッセージで検索しろ。話はそれからだ。

536:デフォルトの名無しさん
10/02/16 17:45:54
>>533
>キャンバス外のクラスで使用しているからなんでしょうかね?
それで正解だと思う

537:デフォルトの名無しさん
10/02/16 21:20:55
>>533
>オブジェクト指向って複雑ですね
あれ? 既視感が・・・

538:デフォルトの名無しさん
10/02/18 12:08:46
リソースが山のようでヒープ容量と戦っているんですが、
アプリ起動中にSDの特定ファイルを開っぱなしとか、しても良いものでしょうか。


539:デフォルトの名無しさん
10/02/18 14:11:10
駄目に決まってるだろ。
リソースはキャンバスに括りつけるようにすれば、キャンバス廃棄時にヒープも解放されるようになるから
そういう管理に変更したほうが良いと桃割れ。

540:538
10/02/18 18:35:15
齟齬がありそうに思えたのでもう少し詳しく説明します。
リソースファイル(画像、音、マップデータ等)の数が多く、
未圧縮状態で10MB以上、圧縮後も2MB近く有ります。
この時点でメガアプリに格納することは不可能で、SDに出すしかありません。
また、量が量なので、全ファイルを一度にメモリに持っておくことができず、
必要な量を都度読み込む仕組みになります。

ここまでは既に出来上がっていて、
今問題なのがヒープ容量とロード時間のバランスです。
(一度に読みすぎるとヒープを圧迫し、必要最低限にするとロードが頻発)
で、SDアクセスは開くと閉じるが遅いだけなので、
開っぱなしにすれば必要最低限にしてもロード時間が極端に短くなるため、
解決策のひとつになるのではないかと思った…というのが先の質問です。

>>539
『キャンバスに括りつける』というのが具体的にどういう手段なのかわかりませんので、
もし使える方法でしたら詳しく教えていただけないでしょうか?


541:デフォルトの名無しさん
10/02/18 18:55:16
開いておくのも一つの手かもしれないが、開いているだけでもそれなりに
メモリーを食うし、どんな機種依存仕様(と称する端末バグ)にぶつかるか
やってみないとなんとも言えない為、あまりお勧め出来ない。

542:デフォルトの名無しさん
10/02/18 19:15:34
>>540
どういう設計になってるか分からんから正確にはコメントできないけど、
画像の読み込み全般は基本的にキャンバス(画面)読み込み時に一気に行うべきで、
途中で逐次ロードするようにするべきではない。
当然ながら、外部ストレージから開いたファイルは、閉じなくてはならない。
画面の初期化時にのみ画像が読み込まれるなら、画面を閉じるときに画像は破棄できるオブジェクトなわけで、
キャンバスのメンバとして画像を設定しておけばガベコレ任せでヒープは正しく回収される。
従って、画面の初期化時にヒープを上回る量の画像を読み込まなければいけないような場合は画面設計そのものが間違いであり、
事前にロードする画像の量を減らせるように読み込む画像のパスリストを画面に与えるなりする方法を取るべきである。
また、メニュー画面など主画面とは別個で制御できうるものが存在するなら、
その画面は別のキャンバスとすることによりメモリ削減を図ることが可能である。
ファイルの開きっぱなしを犯してはならない根拠として、「開きっぱなしでアプリケーションが落ちた場合」の挙動が考えられる。
通常、windowsアプリの場合であればOSが落ちたアプリケーションが開いたファイルハンドルは全てcloseしてくれるが、
携帯電話、特にjavaの場合は全く不明である。最悪、開きっぱなしでアプリケーションが終了すればファイル領域のみならずディレクトリ、パーティションまで物理的に壊れることも考えられる。
ファイルはオープン/読み込み/クローズが一体と考えるべきである。
以上。
文句あるならコード晒せ。

543:デフォルトの名無しさん
10/02/18 19:59:45
>>540
基本的には>>542の通りなんだけどそうはいってもSDファイルを開くのは遅いんで
ファイルはアプリ中は開きっぱなしで、ファイルをJarInflaterでリソース取得するのは
ある程度の利用シーンで分けて取得するのをすすめる
10MBいっぺんに使うわけではないでしょ?

544:デフォルトの名無しさん
10/02/19 12:00:08
>>541-543
ありがとうございます。
総じて開っぱなしイクナイ(勝手にやれ?)ということで。

うーん。
PS時代の技術の使い回しで、戦闘開始前にSDランプが点滅する仕様も考えてみます。
あぁアプリの方は、立ち絵会話イベントのあるドラクエみたいな感じです。

>>541
(`Д´)ゞラジャー!!

>>542
アプリが落ちるだけならまだ平気みたいです。
(2MBダウンロード中に何度か強制終了させてテストしました)
電源引っこ抜かれるケースが少々怖いですね。

> メニュー画面など主画面とは別個で制御できうるものが存在するなら、
> その画面は別のキャンバスとすることによりメモリ削減を図ることが可能である。
要はこれをやった結果、戦闘なり会話イベントなりが発生するタイミングで
NとかNとかNの機種で数秒ロードで固まるハメになったわけです(´・ω・`)

>>543
上記の通り一応やっているんですが、SD相手だとそれがネックになっているんです。

既にやっているソフトが有れば良かったのですが、
ドラクエもFFもresに収まりきっているご様子で…うぅ。


545:デフォルトの名無しさん
10/02/19 23:15:01
メディアファイルに上書きしてはいけないんですか?

546:デフォルトの名無しさん
10/02/20 05:25:58
タッチパネル携帯は指が太い人には大迷惑だ

547:デフォルトの名無しさん
10/02/20 10:23:59
静電式は触れてる面の中心を捉えるから太さは関係…あぁ、携帯の話か

548:デフォルトの名無しさん
10/02/20 20:08:02
割とヤバ目のものを公開したいんだけど、
アプリゲットとか審査を必要としないで登録できるようなアプリ紹介サイト知らんですか。

549:デフォルトの名無しさん
10/02/20 20:21:55
内容をkwsk教えてくれたらそんなものはないよと言ってあげよう

550:デフォルトの名無しさん
10/02/20 20:38:42
まあ、ぶっちゃけエロですわエロ。
アプリゲット検索してみると、一応水着レベルのものは許容してるっぽいから
そのレベルに調整すればいいのかも知らんが、個人的には全力エロをやりたいわけです。
無い訳ないじゃないですか。裏サイトの一つや二つ隠してるくらい言ってくださいよ!

551:デフォルトの名無しさん
10/02/20 20:42:08
データとプログラムを分離すれば?
シナリオは審査通ってから差し替えるとか

552:デフォルトの名無しさん
10/02/20 20:56:57
それ、許されんの?
シナリオローダー的なものを登録するなら分かるんだけど、
個人的には直球でエロ臭を出したいんだけど。

553:デフォルトの名無しさん
10/02/20 21:14:10
つかエロゲを扱うアプリショップってないのか?
課金とか必要ってことだよね?>550

554:デフォルトの名無しさん
10/02/20 21:24:32
課金できれば理想だけど、別になくてもいい。
お金欲しければサイトにアフィ貼ればいいだけだし。
要はアプリ紹介サイトでエロ可(むしろ推奨)なところが無いかってことよ。
どっか知らない?

555:デフォルトの名無しさん
10/02/20 21:40:26
それはム板だと板違いでは。

556:デフォルトの名無しさん
10/02/20 21:49:27
んだ
とりあえず「iアプリ エロゲ」でググッと毛

557:デフォルトの名無しさん
10/02/20 23:34:19
いやー、俺携帯畑詳しくないから>>556でぐぐってもいかがわしいもんしか見つからんで、
本当にそういうエロアプリ登録所として機能してるところすら見つからんでやんすよ。
お詳しいのであるなら、なんかもっと直截的に引っかかるキーワードを教えておくんなまし。


558:デフォルトの名無しさん
10/02/20 23:38:47
開発はしたことあるけど、配布は基本的に会社任せだな。

アプリ開発なんて仕事でしかしないし。

559:デフォルトの名無しさん
10/02/21 00:11:00
アプリゲットの場合、ド直球でなくきわどいアプリは提示可能だから、
15禁バージョンを別に作ってアプリゲットで公開して、アプリ内メニューから
18禁バージョンがダウンロードないしは購入できるURLに飛ばすって感じで
良いんじゃね?

560:デフォルトの名無しさん
10/02/21 03:32:05
DoJa 5.0 です。
MIDI ファイルを再生したいのですが、AudioPresenter.LOOP_COUNT の説明で

> なお、セットアップ小節を含む SMF の場合は、 曲の末尾から先頭に戻って
> 再生する際にはセットアップ小節を飛ばして再生します。 すなわち、セット
> アップ小節は無視され、セットアップ小節に含まれるイベントも再生されません。

とあるんですけど、「セットアップ小節」 ってどういう事だかわかりますか?
1 小節目をイベント無しにしたりいろいろ試してみたのですが、何をどうしても
曲の先頭に戻ってしまいます・・・。

561:デフォルトの名無しさん
10/02/21 05:42:01
一小節音を出さずに音色の割り当てとかのデータだけ入れておく
繰り返す場合はそこを飛ばす
という意味
だから繰り返し指定してる限り曲が銭湯に戻るのはあたりまえ

562:デフォルトの名無しさん
10/02/21 13:57:56
最近の携帯の高解像度フォントはアプリで利用できますか?
利用方法を教えて下さい

563:デフォルトの名無しさん
10/02/21 18:10:01
multiplayer snakeってググって2番目に出てくるオンラインゲーム 
昔、ezアプリで流行ったんだが携帯アプリ会社に手放され、すっかり過疎って
しまった。。。 またあの楽しかった日々に・・・戻りたい

564:デフォルトの名無しさん
10/02/21 18:13:24
>>562

565:デフォルトの名無しさん
10/02/21 20:33:55
> 最近の携帯の高解像度フォント
ってのが何を指しているのか分からない。
端末のフォントなのかTTFなのか、とか。

566:デフォルトの名無しさん
10/02/21 20:47:15
>>564
ガキかw
聞けば答えてくれると思ってんのか?

567:デフォルトの名無しさん
10/02/21 21:43:35
携帯端末仕様書にはもしかしたら載ってるかもしれんが、
載ってたとしても守秘義務で教えられないな。


と書いて答えそうな奴に釘を刺す。

568:デフォルトの名無しさん
10/02/22 11:56:29
>>554
つ LIAPPなら課金もできる
課金しないなら適当にレンタルホームページ借りて勝手アプリとして公開すればいいとおもうけど


569:デフォルトの名無しさん
10/02/22 13:00:11
思ったんだが、そもそもiアプリがどういうものか>>548
理解してないんじゃねーの?
「作りたい」と言ってるだけで、実際に作る能力がないかもしれん。
もしかしたら、携帯畑だけ詳しくないんじゃなくて、プログラミング全般
できないかもw
実際出来てる物を見せて「これを公開したい」というなら分かるけど、
空手じゃしょーがねーよ。
本人が言ってる全力エロとやらも、どうせオタク絵の女の子が
「初めてなのにイッちゃうー!」とかほざく程度だろ。

570:デフォルトの名無しさん
10/02/22 17:46:21
どーでもいいですよ♪

571:デフォルトの名無しさん
10/02/22 17:50:35
>>569
あんたうるさい。。。ああ

572:デフォルトの名無しさん
10/02/22 20:05:36
>>540
一応READONLYならSDはopenしっぱなしでも大丈夫
すでにやってるソフトもいくつか知ってる

573:デフォルトの名無しさん
10/02/22 20:11:35
>>544
ちと補足。書き込み時はopenしっぱなしイクナイ!ので、
データダウンロード時はちまちまopen/close繰り返すべし。
どうせ150k毎でしょ?
一度データ保存し終わったら>>572するといい

574:デフォルトの名無しさん
10/02/23 02:14:28
>>569
本当のこと言ってやんな
神経症的ガキは放っておけ

575:デフォルトの名無しさん
10/02/23 18:22:38
きっと、他人に作らせてるだけなんだろ。

576:538
10/02/23 19:11:57
>>572
おぉ、ありがとうございます。かなり安心しました。
書き込みの方も了解です。


577:デフォルトの名無しさん
10/02/23 19:50:06
アプリ開発初心者です。
ネットにある「初めての携帯アプリ」みたいなサイトを見て勉強しています。
そこで1つ疑問に思ったことがあります。
無限ループ(ゲームループ)にスレッドを使ったものがありますが、
whileで無限ループを作った場合と何が違うのでしょうか?
わざわざRunnableインタフェースをimplementしなくても、whileで充分だと思います。
スレッドを使うメリットを教えて下さい。

578:デフォルトの名無しさん
10/02/23 21:55:27
シングルスレッドにしたらprocessEvent受け取れねーだろ…

579:デフォルトの名無しさん
10/02/23 22:04:36
>>578
ネタですか?


580:577
10/02/23 22:36:16
>>578
スレッド数に関係なく受け取れるみたいですよ。

docomoの開発ガイドには、「スレッド数は最小にすべし」みたいなことが書かれています。
ならいっそのこと、シングルスレッドにして適宜delayを入れたほうがいいと思います。
どの解説サイトにもスレッドを紹介してるくせに、そのメリットは説明してないんですよね。
javaのプログラミングの慣例としてスレッドを使ってるだけなのでしょうか?

581:デフォルトの名無しさん
10/02/23 22:57:03
Nが使ってるOMAP3の後継、OMAP4はデュアルARMコアらしいよ
どうせiアプリVMはシングルスレッドか…

582:デフォルトの名無しさん
10/02/23 23:54:49
A9て今年中に出てくるのか?

583:デフォルトの名無しさん
10/02/24 00:56:42
>>582
ネタですね

584:デフォルトの名無しさん
10/02/24 02:20:46
>>580
javaのプログラミングの慣例としてスレッドを使っているのではなく、
単に設計の問題です
マルチスレッドには、処理に対して並行性や並列性を与えられる
というメリットがありますが、リソース管理に関して複雑な制御を
行なう必要があるというデメリットもあります

ところで、イベントディスパッチのみで動作するものをシングルスレッドと
言っている場合の話なんですが、無限ループをまわし始めるのは
いつのタイミングですか?

585:デフォルトの名無しさん
10/02/24 10:29:37
>>580

584で述べられている様に、設計に依存することが多い。
では、非同期のスレッドで動作するTimerクラスを使用せず、
100msごとに複雑な幾何学計算を行う様なプログラムを開発する場合どうしますか?

586:デフォルトの名無しさん
10/02/24 10:36:50
>>580
多分 IApplication#start() のwhileループと、そこでスレッド作って
スレッドの中でwhileループ作る場合のコストを言っているのだと思うけど、
IApplication#start() はシステム(processEventのコールバック等)が
使用するスレッドとは別のスレッドが使われる。
なので後者のスレッド作成コストはぶっちゃけ無駄。

ただこれDoja限定で使える手段で、MIDPでは使えない。
その辺の移植性とか、実質問題ないとはいえ気になる人が、
自作のスレッド作るんだと思う。

ということでなく?


587:デフォルトの名無しさん
10/02/24 14:45:49
無駄って言い切るなよ
なにがぶっちゃけだ

588:デフォルトの名無しさん
10/02/24 15:03:16
つまりJVM内のスレッドがLinux/Symbianスレッドになるわけでもないってことだろ
少なくとも今>>586が知る限り


589:デフォルトの名無しさん
10/02/24 20:34:06
iapplitool(star)がビルド後に落ちる件だけど、
エミュレータ環境設定→ビルドの設定→『ADFチェック処理を実行する』のチェックを外したら落ちなくなった
初期設定で落ちる仕様に驚いた

590:577
10/02/24 23:51:23
皆さんありがとうございます。
設計の問題としたら、なんか納得できないんですよね。
どの解説サイトにも、
「iアプリのリソースは限られているので無駄は省きましょう」
と書いているのに、スレッド作るのは無駄ではないかと思います。

>>585
100ms待っている間に別のスレッドで計算をしておくと
いうことでしょうか?
そういう使い方ならば、たしかにメリットがありますね。
でもそれほど重い処理でないならば、100ms待ってから
順次計算してもいいんじゃないかと思うのですが。

>>586
つまり移植性を考えなければ、スレッドを作らなくてもいいと
いうわけですね。

591:デフォルトの名無しさん
10/02/25 01:04:32
だれかWin7 64bitでiAppliToolkit(DoJa)を入れて使ってるやついない?
インストールはできるけど起動できない。

592:デフォルトの名無しさん
10/02/25 11:37:42
>>590
サンプルソースは設計よりも実装(設計の為の部品)を見せたいのだと思います
たとえば、内部では重い処理を実行中であっても、画面表示の更新は行いたい
という場合には、スレッドを作るという方法があるという事を知っておくのは
有用ではあっても決して無駄ではありませんし、おそらくスレッドを利用しない
他の方法よりも簡単に設計・実装が出来ると思います

というわけで、スレッドを利用するしないは設計の問題なので、
実装を見せる為に書かれたサンプルについて、設計をどうこういうのは
的外れな話だと思います

593:586
10/02/25 12:55:52
うーん。俺が勘違いしてるだけなのか?
多分>>577はスレッドの有用性云々を問いたいのではないと思うのだけど。

スレッドA: システムが使用するスレッド(processEventやIApplicationのコンストラクタ等)
スレッドB: IApplication#start() が呼び出されるスレッド

とした時に、
1. スレッドBでゲームループを作成する
2. 自前でスレッドCを構築して、そっちにゲームループを作成する

の、2のケースが分からないと言ってるんじゃないの?

で、俺の解はCを作るのは無駄、無くて良い。
別に並列処理を否定するつもりはない。


594:デフォルトの名無しさん
10/02/25 13:53:45
>>593

>>577は「スレッドを作るメリットは?」という疑問
>>590は「スレッドを作るのは無駄だ」という意見
として読んだので、メリットも無駄も設計次第と言うしかないです

並列処理を否定しないという事は、
「自前でスレッドCを構築して、そっちにゲームループを作成する」
のが無駄になるかどうかは、結局設計の問題ですよね?

595:デフォルトの名無しさん
10/02/25 14:57:30
設計は同じ前提の比較なんだよ。
このソース見てから577読むと納得出来ないかなぁ。
イヤ勘違いなら申し訳ないけど。

1. の場合のソース
class MyApp extends IApplication {
  public void start() { // ←スレッドB
    MyCanvas canvas = new MyCanvas();
    canvas.run();
  }
}
class MyCanvas extends Canvas {
  public void run() {
    while() { /* ゲームループ */ }
  }
}
2. の場合のソース
public class MyApp extends IApplication {
  public void start() { // ←スレッドB
    MyCanvas canvas = new MyCanvas();
    Thread thread = new Thread( canvas ); // ←スレッドC
    thread.start();
  }
}
class MyCanvas extends Canvas implements Runnable {
  public void run() {
    while() { /* ゲームループ */ }
  }
}


596:デフォルトの名無しさん
10/02/25 20:42:22
ネットランキング対応したいのですが、
やり方の入門サイトありませんでしょうか。
借りてるサーバーはphp、DB使えます。

597:デフォルトの名無しさん
10/02/25 20:51:12
端末固有情報をキーにしてSQLITEで適当なテーブルのキーにすればいい。

598:デフォルトの名無しさん
10/02/25 20:55:18
>>595
その両者は外部仕様が同じだとしても、同じ設計ではありません
また、そのコードのようにそれだけで完結出来るなら、MyCanvasクラスを
スレッド化するのは無駄でしょうし、設計にも問題があるかも知れません

577が見た入門サイトに書かれている説明やサンプルの展開が
どういうものかはわからないので、スレッドを起こすのは無駄とは
一概に言えませんよという話です

599:577
10/02/25 21:17:03
>>595
俺が言ってたのはまさしくそれです。
1の作り方を解説した後、2に書き換える入門サイトが多いんです。
でも2に書き換える理由はまったく説明してくれない・・・。
どうせなら、スレッドを使う意味まで解説してくれればいいのに。
自分で作ってみたゲームではwhileループを使っています。
インベーダータイプのゲームなので特に問題ありません。
901でもサクサク動いてますw

600:392
10/02/27 08:48:14
1だとループ抜けるまでstart()が返んないから本当はダメなんじゃないかと思う。
リファレンスには特に書いてないから、本当のとこはわからないけど。
DoJaのJVMはメーカーごとに実装が違う部分があるから、
IApplication#start()がすぐに返ってくることを期待している実装のメーカーがあると問題になるかもね。

601:デフォルトの名無しさん
10/02/27 08:59:06
JVMはどっか一箇所で作って各自移植すればいいのに…

602:デフォルトの名無しさん
10/02/27 09:08:02
start() の中で回しても動くけど、それは偶然そういう実装になってたからって話かね。
別キャリアの奴とかだとイベントはできるだけ早く処理して抜けろとかあるし。

603:デフォルトの名無しさん
10/02/27 18:49:03
>>602

DoJaはその辺実装依存とかあるかもね。
Star の StarApplication#started() はこれが終わらないと
サスペンド後の復帰のコールバックかからないようなこと
かいてありました。




604:デフォルトの名無しさん
10/02/28 01:27:18
>>601
一言余計だ

605:デフォルトの名無しさん
10/02/28 18:47:15
よく言われます

606:デフォルトの名無しさん
10/02/28 21:37:22
903あたりから全部アクセスが作ってると思い込んでおりました。

607:デフォルトの名無しさん
10/03/01 08:48:27
アクセスとかアプリックスとかがARM用を作ってるのか
おまいらそんなにAが好きか

608:デフォルトの名無しさん
10/03/02 20:58:56
復帰あげ

609:デフォルトの名無しさん
10/03/03 07:13:52
復帰?

610:デフォルトの名無しさん
10/03/03 11:03:10
>>607
>おまいらそんなにAが好きか

悪くはないんだけどね
どうせならCの方が良いかな


611:デフォルトの名無しさん
10/03/03 11:31:19
おっぱいの曲線を表現するためのスプライン曲線を描く方法を教えてくれ。

612:デフォルトの名無しさん
10/03/03 11:58:45
コントロールポインツは一番直線に近いところにおくんだ

613:デフォルトの名無しさん
10/03/03 18:31:55
URLリンク(park12.wakwak.com)

614:デフォルトの名無しさん
10/03/03 21:58:19
質問です!
ImageReferenceは積極的に使った方がいいですか?

615:デフォルトの名無しさん
10/03/06 00:09:06
>>611
実物見たこともないのに表現できるわけねーだろ。
まずは実践だな。
でも40歳以上の実物は参考にならないぞ。
垂れちゃってるからね。

おっぱいタプタプを表現したいなら、内側から水圧かけてやればいい。
あとは重力にまかせてぷるぷるっとな。
iアプリできたら公開してくれよ!

616:デフォルトの名無しさん
10/03/06 20:22:55
Starって本当に複雑ですよね


617:デフォルトの名無しさん
10/03/06 21:26:53
じぇーえーぶいえーって本当に複雑ですよね

618:デフォルトの名無しさん
10/03/07 00:12:19
Starはなんであんなのにしたんだ?
もっと変えるのかと思ってた。

619:デフォルトの名無しさん
10/03/07 00:40:24
アプリを自分のサイトで公開している人、ダウンロード数のカウントは
どうやってんの?
携帯でダウンロードするとき、cgiをかましカウントアップして、
jamの中身を送りこもうとしたんだが、うまくいかなかった。

ダウンロードページのOBJECT部分:
<OBJECT declare id="Test"
 data="count.cgi"
 type="application/x-jam">
</OBJECT>

cgiのjam吐き出し部分:
$file_jam = '';
open(FH, "Test.jam");
while (<FH>) { $file_jam .= $_; }
close(FH);
print "Content-type: application/x-jam\n\n";
print "$file_jam";

同じことやってる人がいたら、カウント方法教えてください。

620:デフォルトの名無しさん
10/03/07 00:50:58
とりあえず、Content-Lengthを出力してみるんだ。

621:デフォルトの名無しさん
10/03/07 01:57:44
>>620
できたよ!
ありがとう。
docomoはContent-Length必須なのか。
知らんかった。

cgiのjam吐き出し部分:
print "Content-type: application/x-jam\n";
print "Content-Length: " . length($file_jam) . "\n\n";
print "$file_jam";

622:デフォルトの名無しさん
10/03/07 10:37:20
>>618
本当、Starは無意味だよね
新機能なんてほとんどないし、将来に向けて拡張性を・・・という構造にもなってない

もうiアプリ自体やる気なくしているんだろうけど・・・


623:デフォルトの名無しさん
10/03/07 19:21:56
>>622
お前何様だよ。携帯はちゃんと売れてるっちゅうの!

624:デフォルトの名無しさん
10/03/08 00:44:26
>>622
Star携帯所有者に失礼では?

625:デフォルトの名無しさん
10/03/08 00:50:32
別にオマケで付いてきた使わない機能けなされても
失礼だとは思わんだろ。

626:デフォルトの名無しさん
10/03/08 00:56:56
せめてMIDP互換にしてくれたら…

そうするとau/sb対応のソフトも増えてキャリアが儲かっちゃうから、わざとやらなかったのだろうけど
docomoのDoJaとStar、au/sbのMIDP、auのBREW、iphoneのObjective-C、WMのC#CompactにAndroidが加わっていよいよカオスな時代に

627:デフォルトの名無しさん
10/03/08 01:17:48
どこが勝つんだろうね。
docomoのシェアはまだ50%弱あるから、簡単にiアプリなくならないんだろうけど。

628:デフォルトの名無しさん
10/03/08 03:21:16
>>626
お前Objective-Cが何なのか分かってないだろ

629:デフォルトの名無しさん
10/03/08 11:30:25
MIDP-2:0/CLDC-1.1で作って自動変換すればいいんじゃね
特にパワーもRAMもROMも余ってるiPhoneとかWMは


630:デフォルトの名無しさん
10/03/08 11:37:57
自動変換するにゃマルチメディアファイルの非互換がでかいよなあ。
iアプリじゃいまだにMIDIもWavもPNGも使えん。

631:デフォルトの名無しさん
10/03/08 12:29:04
Androidなんだろうねぇ、結局は
AU/DoCoMoも端末出してきて、MIDPが直接動かせるソフトまで開発されてるし・・・


632:デフォルトの名無しさん
10/03/08 15:05:25
OperaがMIDPの互換レイヤだか作ったのを宣伝してたな
ただ海外機のVMは余裕がありそうだから参考にはならないか

633:デフォルトの名無しさん
10/03/08 15:39:32
結局は過去の国産PCのような流れになるのかね。

PC−9801系やシャープのX68系のPCは衰退し、IBM−PCが
世界を席巻し、MACがちょっと残る。みたいなw

634:デフォルトの名無しさん
10/03/08 15:54:25
>>630
FOMA端末のiアプリでは、楽曲についてはMIDIが標準だよ


635:デフォルトの名無しさん
10/03/08 17:20:56
>>629
何を何に自動変換すんの?教えて

636:デフォルトの名無しさん
10/03/08 17:48:59
>>633
こんな感じ?

docomo PC-9801
au FM-TOWNS
softbank X68000
iPhone Mac(そのまま)
Android 一人勝ち

637:デフォルトの名無しさん
10/03/08 19:48:45
あわれな非国民どもよ・・・

638:デフォルトの名無しさん
10/03/08 20:13:34
通信会社と携帯電話製造会社を比較するのはおかしいですお

639:デフォルトの名無しさん
10/03/08 20:26:14
>>635
Starで動くMIDPのVM作んの

640:デフォルトの名無しさん
10/03/09 00:48:48
>>639
聞いて損した

641:デフォルトの名無しさん
10/03/09 01:08:11
誰か携帯でEXIF情報を操作するiアプリを作ってくれ
位置情報を画像に埋め込むなんてシャレにならん、人権侵害だ!

642:デフォルトの名無しさん
10/03/09 01:11:25
ここは作ってくれスレではない

643:デフォルトの名無しさん
10/03/09 18:27:42
DoCoMo携帯で位置情報を勝手に付加する端末あるの?
Nは常に操作しないとつかなかったけど。

644:デフォルトの名無しさん
10/03/09 18:50:44
Rはかってに付けるよ!
MOAPじゃないけどね :P

645:デフォルトの名無しさん
10/03/09 21:26:37
Rってどこだ?

646:デフォルトの名無しさん
10/03/09 22:02:31
RIMってRじゃねと思ったんだけど
まさか省略名ないのか

647:デフォルトの名無しさん
10/03/09 22:41:41
Blackberryはiモード機じゃないだろうjk

648:デフォルトの名無しさん
10/03/10 11:03:50
ContentsDownloaderとか面白そうじゃん
>すたあ

649:デフォルトの名無しさん
10/03/11 13:02:27
>>639
結局互換性のあるAPIが存在すると限らないところがネック
ソースでの互換性ならとっくにみんなやってるだろうし、結局は「あれにはあって、これにはないAPI」が全て悪い

650:デフォルトの名無しさん
10/03/11 13:13:17
てめーHartware T&Lさんディスってんのか

651:デフォルトの名無しさん
10/03/11 18:09:40
Hartwareつーとドイツの会社だな。
で、そこがどうしたって?

652:デフォルトの名無しさん
10/03/11 20:21:15
orz

s/t/d/

653:デフォルトの名無しさん
10/03/13 22:29:36
この板のベテラン陣に、少々お知恵をお借りしたいと思います。

DoJa-5.0環境でiアプリを作成しているのですが、
com.nttdocomo.uiパッケージのImageクラスを拡張したいのです。
具体的には、

public class ImageEx extends Image {
  private int left;
  private int top;
  //以下に実装が必要な抽象メソッドと、left,topのGetter/Setter
}

これだと、createImage()でインスタンス化するとき問題が・・・。

ImageEx imageex1 = (ImageEx) Image.createImage(100,100);
強引にキャストしても、当然ClassCastExceptionが出るし、

ImageExにcreateImage()メソッドをオーバーライドしようとしても、
Image.createImageがstatic属性を持つため、上手くオーバーライドできません。

単純に、Imageクラスを継承してleft,topメンバを追加したいだけなんですが・・・。
何かいい手はありませんか?

654:デフォルトの名無しさん
10/03/13 22:51:20
ImageEx imageex1 = (ImageEx) Image.createImage(100,100);

が、

ImageEx imageex1 = ImageEx.createImage(100,100);

じゃね?

655:デフォルトの名無しさん
10/03/13 23:06:43
ImageExのインスタンスを取得する方法がない気がする。
オプションAPIのTransparentImageの作りを参考にしては?

656:653
10/03/13 23:10:42
>>654
こちら、eclipse3.1環境で構築しています。
eclipse上で、そのように修正して、ソースを保存すると、赤い×が・・・。
「型の不一致:ImageからImageExには変換できません。」とのことです。
難しいっすね・・・

657:デフォルトの名無しさん
10/03/13 23:22:44
>>655
なるほど、

public class ImageEx extends Image {
  private int left;
  private int top;
  public static ImageEx createImage(Image image1) {
    // 中のコードはこれから考えます
  }
  //以下に実装が必要な抽象メソッドと、left/topのGetter/Setter
}

ですか。
そう言えば、オーバーライドは同じ引数を使ってはいけないんでした・・・。(赤面)
ちょっとがんばってみます。他にアイデアのある方、引き続き援護ヨロ。

658:デフォルトの名無しさん
10/03/13 23:29:01
あ、全く考えなくレスしてたわ・・・

ImageEx imageex1 = new ImageEx();
imageex1.createImage(100,100);

でダメかな?

659:デフォルトの名無しさん
10/03/13 23:33:40
うん、酔ってるわ・・・658は無視して下さいwww

簡単に作るなら、ImageExクラス内にImageインスタンスを保持するメンバを持ってやるだけじゃだめかな。

660:653
10/03/14 00:06:24
>>659
public class ImageEx { //←(注意)extends Imageしてない。
  private int left;
  private int top;
  private Image image;
  //以下にleft/top/imageのGetter/Setter
}

ですね。実は、現時点ではこの実装で、動作できるアプリを作っているんです。
(とにかく動いてほしいから)
現在はこの方法で、とりあえず解決しているのですが、例えば

ImageEx imageEx1 = new ImageEx();
imageEx1.image = Image.createImage(100,100);
imageEx1.setLeft(20);
imageEx1.setTop(30);

でインスタンスを生成したとき、

left(やtop)は、このように参照できますが、
System.out.println(imageEx1.getLeft());

width(やheight)はこんな感じになります。
System.out.println(imageEx1.getImage().getWidth());

そのアプリでは、座標関係とイメージデータを頻繁に参照するため、
「Object直下の、Imageクラスのメンバを持つ通常クラス」より、
「Imageクラスを継承した拡張クラス」方が、
設計や実装が、かなり単純化できそうなのです。

海外の技術サイトでも、この方法しか紹介されていなかったのです。やっぱり無理なのかな〜

661:デフォルトの名無しさん
10/03/14 00:14:42
といってもたいした手間じゃねーだろ。

662:デフォルトの名無しさん
10/03/14 00:51:50
>>661
うん、「手間」は、ね・・・。おっしゃる通りだと思います。

なんていうか、上手くは言えないけれど、
「left,top,width,heightを、同じレベルのメンバとして参照したい」だけです。
いずれも同じ「座標」を扱うメンバなので。

Canvasにrepaintするたび、表示位置を頻繁に変化させるため、
座標位置を変更するコードが多く登場するのですが、
widthとheightのみ、getImage()の下にぶら下がっているのは、
ソースを俯瞰したとき、かなり奇妙に見えるんですヨ。

何か、目から鱗が落ちるような、非常に美しい解法があったらいいな〜、ってね。

663:デフォルトの名無しさん
10/03/14 01:00:17
おまえのこだわりなんてクソ食らえだ

664:デフォルトの名無しさん
10/03/14 01:19:16
          ,,,      ,,,,,,      : .と お. し 座. 自 オ
       _ = ~~ ``ヽ _,=''~´  ´~ヽ    : は こ よ 標. 分. ブ
    _= ~               ヽ  : 思 が う  を  を. ジ
    ~=、    ミゞ、  , -彡     ヽ. : わ ま な. 指 表  ェ
       ~=、、、Cl~evj <e~}6)_   、、、ミ : ん し ん. 定 示  ク
        ミ.~~ /', ゚ ;'7   ミ7ヾ~- 、  : か い て  . す  ト
       ≡   (','゚, '.人  ゝ |  ヽ  : ね          る  が
        `=  `ー'   iノ'  | / |
         ~ーノノノノノ'′

665:デフォルトの名無しさん
10/03/14 02:01:15
んじゃ、ImageExクラス内に

public int getWidth()
{
return getImage().getWidth();
}

としてやれば?

666:デフォルトの名無しさん
10/03/14 09:35:12
うっとうしいなら普通はそうするよな…。
あとから包含から継承に修正しても呼び出し側に変更いらねーしい。

667:653
10/03/14 19:17:11
>>665
なるほど、Getter/Setterをカプセル化してそのまま渡する手があったか・・・!
流石です!さっそく試してみよう!
一旦、質問の方は収束させていただきます。
相談に乗っていただいた皆様、ありがとうございました!

668:デフォルトの名無しさん
10/03/17 12:28:35
>>666
お前の存在の方がうっとうしい・・・
もうここに来ないでくれ!

669:デフォルトの名無しさん
10/03/18 14:39:32
doja4.1です。
start()から、他のファイルのstaticメソッドを使う方法はないでしょうか。
start()で別のファイルにあるCanvasを継承したクラスをsetCurrentし、
そのクラス(Canvas)をいろんなファイル、クラスから使いたいです。


670:デフォルトの名無しさん
10/03/18 15:03:36
現在iアプリでゲーム開発したいと思ってる方いたら
何か作りませんか?(ACT or STG)
SLGでも問題はありませんが、内容は全く決めてません・・・

671:デフォルトの名無しさん
10/03/18 15:07:58
>>669
やりたい事と質問内容、何か間違ってない?
Javaのアクセス権とか基本的な部分勉強した方が良いと思うよ。

public staticであれば何処からでも呼べる。


672:デフォルトの名無しさん
10/03/18 15:09:33
>>669
話の内容から推測すると、あなたが他の「ファイル」と呼んでいるものは
おそらくクラスのことだと思いますが、もしそうであればまず、それを
他の「ファイル」と呼ぶのはやめましょう
それはオブジェクト指向の学習や理解を大きく阻害するかも知れません

それから、質問したい事が分かりにくいです
他クラスのstaticメソッドを使いたいという質問であれば、javaの文法に従って
そのメソッドを呼び出せばよいです (ex. ClassName.methodName(); )
Canvasを継承したクラスのインスタンスを操作したいという質問であれば、
操作する側のインスタンスに、Canvasを継承したクラスのインスタンスを
渡せばよいです

この情報でお客様の問題は解決しましたか?

673:669
10/03/18 15:17:38
小難しい小言をいう人はウザいので、レスしなくていいです。

674:デフォルトの名無しさん
10/03/18 15:17:44
小難しい小言をいう人はウザいので、レスしなくていいです。

675:デフォルトの名無しさん
10/03/18 15:20:39
そうですか、残念です

676:デフォルトの名無しさん
10/03/18 15:24:32
>>673
うはwダメだこいつ。
腐ってやがる。

>>672
長い文章書くなら、句読点はちゃんと使ったほうがいいよ。
句点のない文章はとんでもなく読みにくい。

677:672
10/03/18 15:30:28
>>676
そうですね、私もそう思いました。
句点はともかく、読点は難しいです。

678:デフォルトの名無しさん
10/03/18 15:33:42
ヒント: 673≠669

679:669 ◆c26blx92bE
10/03/18 16:12:37
ありがとうございます。分かりにくくてすいません。

始めはstart()のあるクラスStartClassに
Canvasを継承したクラスGameCanvas(インスタンス名はgc)を作っていて、
start()でnewし、setCurrentしていたんですけど、
gc.getGraphics()等をいろんなクラスから使いたいと思いました。

gcはゲームで共通に使うひとつの物ですが、
StartClassにある以上、他のクラスからではアクセスできないので、
staticを使ってみようと思いました。
使いたい度にnewするとgcがどんどん増えていくと思ったのですが、
gc変数だけstaticにし、メソッドはpublicにする手とかあるかもしれません。

>>671
同じく「static 参照することはできません。」と出てしまいます。
たぶん、別の所に間違いがあると思うので探して見ます。

>>672
ファイルというのが非指向的というのは考えませんでした。
C、C++とかと結構違いますしね。
プロトタイプ宣言が無かったり、デストラクタのタイミングがオートだったり。

680:672
10/03/18 16:52:59
>>679
ファイルという表現が非指向的だという話ではなく、まず、クラスなり
インスタンスなりを念頭に置いて考えないと、
「あのファイルに宣言したアレはどうやったらアクセスできるんだ?」
という、変な疑問に悩まされる事になるかも知れませんという話です。
といっても、これは手続き型言語に習熟した人が陥りやすいようです。

javaでは、C/C++のようにどこからでも操作出来るグローバル変数(?)
のようなものは、単純には作れないようになっています。
デザインパターンについて学習する事をお勧めしますが、それはさておき
とりあえずそういうオブジェクトが必要なんだ、という事であれば、
シングルトンという手法でなんとか実装出来るのではないでしょうか。
見当違いな回答をしていたらすみません。

やはり読点は難しいです。。。

681:デフォルトの名無しさん
10/03/18 17:22:46
>>679
横から失礼します。

static等の根本的な意味を理解していないようなので、JAVA メンバ変数等で検索してから
実際にサンプルや例を見つつコーディングし、覚えるのが良いと思いますよ。

682:デフォルトの名無しさん
10/03/18 19:08:29
>>679
意味わからんよw
普通は逆で、Canvas継承クラスから他のクラスを使う。
必要があれば引数としてCanvas継承クラスのオブジェクトを渡してやればいい。

たぶんあなたはオブジェクト指向を理解してないと思う。
プログラミングの前に、オブジェクト指向の概念を学ぶべき。
これなんかいいんじゃないの。
5分でオブジェクト指向が分かるらしい。

URLリンク(www.atmarkit.co.jp)

683:デフォルトの名無しさん
10/03/18 19:38:32
>>670
いいですね、こっちでやるといいかも

iアプリ共同製作支援スレ その1
スレリンク(tech板)l50

684:670
10/03/18 20:05:18
>>683
案内ありがとうございます(_ _

iアプリ共同製作支援スレの方に書かせていただきます^^

685:デフォルトの名無しさん
10/03/18 20:22:49
>>676
ばーか
おまえレス禁

686:670
10/03/18 20:29:29
初歩的な質問なのかもしれませんがよろしければお願いします。

DoJaには、Imageを回転させるメソッド等は無いのでしょうか?
90度、180度などはあるのですが、少しずつ回転(1度間隔)できればと思っています。

現在は、ImageをSpriteで生成し、描画させ回転をしていますが皆さんはどのように
処理をしているのでしょうか?

よろしくお願いします(_ _


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5257日前に更新/207 KB
担当:undef