トップページ⇒tech
1001コメント301KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2009/09/21(月) 20:36:33
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/
0655デフォルトの名無しさん2010/03/13(土) 23:06:43
ImageExのインスタンスを取得する方法がない気がする。
オプションAPIのTransparentImageの作りを参考にしては?
06566532010/03/13(土) 23:10:42
>>654
こちら、eclipse3.1環境で構築しています。
eclipse上で、そのように修正して、ソースを保存すると、赤い×が・・・。
「型の不一致:ImageからImageExには変換できません。」とのことです。
難しいっすね・・・
0657デフォルトの名無しさん2010/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
}

ですか。
そう言えば、オーバーライドは同じ引数を使ってはいけないんでした・・・。(赤面)
ちょっとがんばってみます。他にアイデアのある方、引き続き援護ヨロ。
0658デフォルトの名無しさん2010/03/13(土) 23:29:01
あ、全く考えなくレスしてたわ・・・

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

でダメかな?
0659デフォルトの名無しさん2010/03/13(土) 23:33:40
うん、酔ってるわ・・・658は無視して下さいwww

簡単に作るなら、ImageExクラス内にImageインスタンスを保持するメンバを持ってやるだけじゃだめかな。
06606532010/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クラスを継承した拡張クラス」方が、
設計や実装が、かなり単純化できそうなのです。

海外の技術サイトでも、この方法しか紹介されていなかったのです。やっぱり無理なのかな〜
0661デフォルトの名無しさん2010/03/14(日) 00:14:42
といってもたいした手間じゃねーだろ。
0662デフォルトの名無しさん2010/03/14(日) 00:51:50
>>661
うん、「手間」は、ね・・・。おっしゃる通りだと思います。

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

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

何か、目から鱗が落ちるような、非常に美しい解法があったらいいな〜、ってね。
0663デフォルトの名無しさん2010/03/14(日) 01:00:17
おまえのこだわりなんてクソ食らえだ
0664デフォルトの名無しさん2010/03/14(日) 01:19:16
          ,,,      ,,,,,,      : .と お. し 座. 自 オ
       _ = ~~ ``ヽ _,=''~´  ´~ヽ    : は こ よ 標. 分. ブ
    _= ~               ヽ  : 思 が う  を  を. ジ
    ~=、    ミゞ、  , -彡     ヽ. : わ ま な. 指 表  ェ
       ~=、、、Cl~evj <e~}6)_   、、、ミ : ん し ん. 定 示  ク
        ミ.~~ /', ゚ ;'7   ミ7ヾ~- 、  : か い て  . す  ト
       ≡   (','゚, '.人  ゝ |  ヽ  : ね          る  が
        `=  `ー'   iノ'  | / |
         ~ーノノノノノ'′
0665デフォルトの名無しさん2010/03/14(日) 02:01:15
んじゃ、ImageExクラス内に

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

としてやれば?
0666デフォルトの名無しさん2010/03/14(日) 09:35:12
うっとうしいなら普通はそうするよな…。
あとから包含から継承に修正しても呼び出し側に変更いらねーしい。
06676532010/03/14(日) 19:17:11
>>665
なるほど、Getter/Setterをカプセル化してそのまま渡する手があったか・・・!
流石です!さっそく試してみよう!
一旦、質問の方は収束させていただきます。
相談に乗っていただいた皆様、ありがとうございました!
0668デフォルトの名無しさん2010/03/17(水) 12:28:35
>>666
お前の存在の方がうっとうしい・・・
もうここに来ないでくれ!
0669デフォルトの名無しさん2010/03/18(木) 14:39:32
doja4.1です。
start()から、他のファイルのstaticメソッドを使う方法はないでしょうか。
start()で別のファイルにあるCanvasを継承したクラスをsetCurrentし、
そのクラス(Canvas)をいろんなファイル、クラスから使いたいです。
0670デフォルトの名無しさん2010/03/18(木) 15:03:36
現在iアプリでゲーム開発したいと思ってる方いたら
何か作りませんか?(ACT or STG)
SLGでも問題はありませんが、内容は全く決めてません・・・
0671デフォルトの名無しさん2010/03/18(木) 15:07:58
>>669
やりたい事と質問内容、何か間違ってない?
Javaのアクセス権とか基本的な部分勉強した方が良いと思うよ。

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

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

この情報でお客様の問題は解決しましたか?
06736692010/03/18(木) 15:17:38
小難しい小言をいう人はウザいので、レスしなくていいです。
0674デフォルトの名無しさん2010/03/18(木) 15:17:44
小難しい小言をいう人はウザいので、レスしなくていいです。
0675デフォルトの名無しさん2010/03/18(木) 15:20:39
そうですか、残念です
0676デフォルトの名無しさん2010/03/18(木) 15:24:32
>>673
うはwダメだこいつ。
腐ってやがる。

>>672
長い文章書くなら、句読点はちゃんと使ったほうがいいよ。
句点のない文章はとんでもなく読みにくい。
06776722010/03/18(木) 15:30:28
>>676
そうですね、私もそう思いました。
句点はともかく、読点は難しいです。
0678デフォルトの名無しさん2010/03/18(木) 15:33:42
ヒント: 673≠669
0679669 ◆c26blx92bE 2010/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++とかと結構違いますしね。
プロトタイプ宣言が無かったり、デストラクタのタイミングがオートだったり。
06806722010/03/18(木) 16:52:59
>>679
ファイルという表現が非指向的だという話ではなく、まず、クラスなり
インスタンスなりを念頭に置いて考えないと、
「あのファイルに宣言したアレはどうやったらアクセスできるんだ?」
という、変な疑問に悩まされる事になるかも知れませんという話です。
といっても、これは手続き型言語に習熟した人が陥りやすいようです。

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

やはり読点は難しいです。。。
0681デフォルトの名無しさん2010/03/18(木) 17:22:46
>>679
横から失礼します。

static等の根本的な意味を理解していないようなので、JAVA メンバ変数等で検索してから
実際にサンプルや例を見つつコーディングし、覚えるのが良いと思いますよ。
0682デフォルトの名無しさん2010/03/18(木) 19:08:29
>>679
意味わからんよw
普通は逆で、Canvas継承クラスから他のクラスを使う。
必要があれば引数としてCanvas継承クラスのオブジェクトを渡してやればいい。

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

http://www.atmarkit.co.jp/im/carc/special/fiveoo/00.html
0683デフォルトの名無しさん2010/03/18(木) 19:38:32
>>670
いいですね、こっちでやるといいかも

iアプリ共同製作支援スレ その1
http://pc12.2ch.net/test/read.cgi/tech/1165049332/l50
06846702010/03/18(木) 20:05:18
>>683
案内ありがとうございます(_ _

iアプリ共同製作支援スレの方に書かせていただきます^^
0685デフォルトの名無しさん2010/03/18(木) 20:22:49
>>676
ばーか
おまえレス禁
06866702010/03/18(木) 20:29:29
初歩的な質問なのかもしれませんがよろしければお願いします。

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

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

よろしくお願いします(_ _
0687デフォルトの名無しさん2010/03/18(木) 20:57:45
描画するときにアフィン変換できたような
06886702010/03/18(木) 21:17:13
>>687
なるほど・・・
Graphics.drawImage(drawImage(Image image, int[] matrix)
としてありました。

試してみたところ無事こちらの方でも回転いたしました(_ _

ありがとうございます。

皆さんもやはり、この方法でやるのがメジャーなんでしょうね・・・
0689デフォルトの名無しさん2010/03/18(木) 22:06:14
>>688
描画するときにアフィン変換・・・
初めて俺が人の役に立ってお礼言われちゃったよ
悪い気分ではないな
06906702010/03/18(木) 23:10:46
>>689
大変助かりました(_ _
一応3次元アフィン変換がなかったようなので作ってみましたが・・・
iアプリで3次元と言ってもどんなゲームができるのかが
あまり想像できませんでした><;
0691デフォルトの名無しさん2010/03/20(土) 15:16:29
アフィン変換って難しすぎて判らないんですけど
0692デフォルトの名無しさん2010/03/20(土) 17:25:51
気の利いた小学生でもわかるぞ
0693デフォルトの名無しさん2010/03/20(土) 17:34:16
最近の小学生は行列を習ってるのか。
まぁ説明されれば分かるだろうけど。
0694デフォルトの名無しさん2010/03/20(土) 18:32:24
猫でもわかるのに・・・
0695デフォルトの名無しさん2010/03/20(土) 20:57:27
アフィンうふん
0696デフォルトの名無しさん2010/03/20(土) 21:37:39
>>694
ほほう…猫がねえ…猫が。
0697デフォルトの名無しさん2010/03/20(土) 22:00:43
 ヘ_ヘ
ミ ・ ・ ミ
(  ° )〜
0698デフォルトの名無しさん2010/03/21(日) 07:53:32
森の奥にある岩屋でアフィン変換の奥義を授けてくれた猫

ttp://img.club.pchome.net/upload/club/other/2008/8/19/pics_bbmimi_1219159728.jpg
0699デフォルトの名無しさん2010/03/21(日) 09:46:17
Apacheライセンスな正規表現ライブラリを移植したが欲しい人いる?
0700デフォルトの名無しさん2010/03/21(日) 10:08:59
>>699
無茶苦茶欲しいです。ぜひ!
0701デフォルトの名無しさん2010/03/21(日) 10:10:47
自演
0702デフォルトの名無しさん2010/03/21(日) 11:00:24
何に使うの?
0703デフォルトの名無しさん2010/03/21(日) 11:02:18
プログラミングのイロハを教えてくれた猫

      /゙ミヽ、,,___,,/゙ヽ
      i ノ   川 `ヽ'
      / ` ・  . ・ i、
     彡,   ミ(_,人_)彡ミ  この道はきびしいぞ
 ∩,  / ヽ、,      ノ
 丶ニ|    '"''''''''"´ ノ
    ∪⌒∪" ̄ ̄∪
0704デフォルトの名無しさん2010/03/21(日) 11:32:40
>>702
String#splitとか
0705デフォルトの名無しさん2010/03/21(日) 11:37:18
公開ページのHTML書いてるからちょっと待ってて
0706デフォルトの名無しさん2010/03/21(日) 12:13:37
さあできたぞ。もってけもってけ

iアプリ用正規表現ライブラリ
http://moondial0.net/softwere/regexp_in_iappli.html
0707デフォルトの名無しさん2010/03/21(日) 12:31:01
>>706
いただきました。
これで色々楽になりそう。ありがとう!
0708デフォルトの名無しさん2010/03/21(日) 13:25:13
自演終了?
0709デフォルトの名無しさん2010/03/21(日) 14:28:22
>>706
いただきましたー
ありがとうございますー
0710デフォルトの名無しさん2010/03/21(日) 15:47:43
自演でも何でもいいや。
とりあえず使わせてもらいます。
0711デフォルトの名無しさん2010/03/21(日) 15:56:43
>>706
やるな高校生!
おじさんの会社に入ってみないかい?
グレイ会社だけど給料いいよ。
0712デフォルトの名無しさん2010/03/21(日) 18:46:07
>>711
SEになる気は無いので丁重にお断り致しますw
0713デフォルトの名無しさん2010/03/21(日) 18:54:55
splitって便利そうで殆ど使わないな
0714デフォルトの名無しさん2010/03/21(日) 19:44:45
>>713
日付や日時を加工する時に使わない?
0715デフォルトの名無しさん2010/03/21(日) 21:21:31
別にライブラリがないと困るレベルの処理でもないしなぁ。
0716デフォルトの名無しさん2010/03/21(日) 21:24:44
そんなこというんじゃありません!
0717デフォルトの名無しさん2010/03/21(日) 21:38:09
意味ない気が。

これこそ自己満足のライブラリ・・・
0718デフォルトの名無しさん2010/03/21(日) 21:58:43
そんなこと言ったらほとんどiアプリ自体が意味ないよ。
iアプリだけじゃなく、そもそも携帯が絶対必要ってもんでもないしな。
必要あるなしに関わらず、興味があればやってみりゃいい。
0719デフォルトの名無しさん2010/03/21(日) 23:48:13
ちげーよ。
ライブラリにすると必要のない処理も含まれてサイズ食うんだし、
たいした処理じゃないんなら、必要な処理だけを自作したほうがよい。
0720デフォルトの名無しさん2010/03/22(月) 01:19:22
正規表現って簡単そうだけど難しいよ
オートマトン理解しないといけない
必要なだけと言うならsprintfもどきにしておけ
0721デフォルトの名無しさん2010/03/22(月) 09:43:37
基本的にライブラリにするものは
必要性の高いものの処理をまとめた物で
splitぐらいならライブラリにする必要性は皆無。

iアプリでだと無駄な処理を追加して容量を圧迫させるのは
ただの邪魔なだけ。

>>718は何を考えてiアプリ自体が意味ないと言ってるんだ?
>興味があればやってみりゃいい
間違っては無いが公開するものでもないだろと・・・
0722デフォルトの名無しさん2010/03/22(月) 10:11:45
> 何を考えてiアプリ自体が意味ないと言ってるんだ?

日常生活上必ずしも必要ないう事だろ
携帯電話もしかり
0723デフォルトの名無しさん2010/03/22(月) 10:27:26
確かにsplitぐらいならともかく、正規表現は使わないな
0724デフォルトの名無しさん2010/03/22(月) 10:28:17
>>722
じゃぁこのスレを見なければいいだけ。
必要ないといいつつ書き込むなんて・・・かまってちゃんか。
0725デフォルトの名無しさん2010/03/22(月) 10:35:42
>>724
お前の日本語読解力の無さを指摘しただけなのに、「このスレを見なければいい」
とか関係の無い話にすり替えて人格攻撃に走るお前の程度の低さは何とかならんか
ちなみに俺は718じゃないぞ
0726デフォルトの名無しさん2010/03/22(月) 11:00:33
使いたい人だけ使えばいいじゃないか

CPANにも使いどころの無いライブラリはたくさんあるし
0727デフォルトの名無しさん2010/03/22(月) 11:04:37
なぜCPAN
0728デフォルトの名無しさん2010/03/22(月) 11:11:36
生産性が上がるなら多少のライブラリの無駄は仕方ない。
でも150k以上は容認できないな、個人的に
0729デフォルトの名無しさん2010/03/22(月) 11:40:57
オブファスケータ使えば未使用なクラスやメソッドが削除されるから
サイズとか特に気にしなくていいんじゃねーの
0730デフォルトの名無しさん2010/03/22(月) 12:50:19
iアプリなんて、配布元サーバと通信するのが基本だから、サーバ側でiアプリで解釈しやすいデータ形式にしたり、
サーバ側でパースすれば済む話だと思うなぁ。
せいぜい、正規表現まで必要なのは入力チェックで通信しないですむぐらいの気がする。
0731デフォルトの名無しさん2010/03/22(月) 13:21:25
若者は褒めて育てようぜ
0732デフォルトの名無しさん2010/03/22(月) 15:54:38
若者は貶して潰す
自尊心のために
0733デフォルトの名無しさん2010/03/22(月) 19:56:46
↑こいつばかじゃね
0734デフォルトの名無しさん2010/03/22(月) 21:20:38
↑こいつばかじゃね
0735デフォルトの名無しさん2010/03/22(月) 21:46:47
↑こいつ天才じゃね
0736デフォルトの名無しさん2010/03/22(月) 22:34:16
春だなあw
0737デフォルトの名無しさん2010/03/22(月) 22:58:56
折角のプログラムスレとかが、こう言うレスが増えていくのが残念でしかたがない・・・
0738デフォルトの名無しさん2010/03/22(月) 23:34:00
無視するか話題を戻せばいいさ。

ところで、短い音を断続的に出したいんだが、
どうしても音が出せないときが出てきてしまう。
たとえば、0.2秒の音を0.5秒間隔で出したいのに、
1秒くらい間が開いてしまう。
そういう音は出せないんだろうか?
0739デフォルトの名無しさん2010/03/23(火) 15:07:11
>>738
どんな処理でやってますか?
音を出す処理の部分が悪く、でないときがあるのかもしれません。
07407382010/03/23(火) 20:20:08
普通にリソース読み込んで設定して、

AudioPresenter ap = AudioPresenter.getAudioPresenter();
MediaSound sound = MediaManager.getSound("resource:///sound.mld");
sound.use();
ap.setSound(sound);

0.5秒間隔で再生してるだけ。

ap.play();

sound.mldは0.2秒のwavから変換したmldファイル。
実機で試したところ、音が途切れてしまうと。
0741デフォルトの名無しさん2010/03/23(火) 21:02:04
>>740
mldファイルを
0.2秒⇒無音0.5秒⇒0.2秒⇒無音0.5秒 計1.4秒で作り直して
1.4秒間隔で再生してみたらいいかもしれないですね。

iアプリのmld再生は若干始まりの際にwaitのようなものが入るので、0.5秒間隔では
再生が被って途切れてしまうかも(実機のスペの問題も)
0742デフォルトの名無しさん2010/03/24(水) 01:11:42
ガトリングガンみたいにチャンネル切り替えながら再生とかどうよ。
0743デフォルトの名無しさん2010/03/24(水) 10:17:06
MIDIでリアルタイム音声合成とかどうよ
MIDIなら機種依存もないよ
0744デフォルトの名無しさん2010/03/24(水) 14:17:51
GM1に正弦波は定義されていないから無理
0745デフォルトの名無しさん2010/03/25(木) 16:06:33
ラクラクホン用に
文字が大きくてカレンダー対応スケジュールアプリ作ろうと思ってるんだけど
全くの初心者なんだけど(Cgiの掲示板改造程度なら経験あり)

どこかにそんなプログラム公開してる所無いかな?
改造して勉強したいんだけど

宜しくね(ハート
0746デフォルトの名無しさん2010/03/25(木) 17:10:10
宜しくねって言ってるのに冷たいな
ここの住人は
0747デフォルトの名無しさん2010/03/25(木) 17:17:10
あぁん?何で?
07487382010/03/25(木) 17:24:25
>>741
俺もそれを考えたんだけど、音を出す間隔を変えなきゃならないから無理がある。

>>742
チャンネル切り替えながらやっても同じでした。

シューティングゲームのアプリなんかも発射音は入れてないんだよな。
レーザーの音は入れてるアプリはあるけど。
やっぱこういうのは無理なのか。
0749デフォルトの名無しさん2010/03/25(木) 19:56:44
>>741
ニコニコ動画モバイルがそれやってた
0750デフォルトの名無しさん2010/03/25(木) 20:41:06
ほんと冷たいね......
0751デフォルトの名無しさん2010/03/25(木) 22:14:42
ラクラクホン用に
文字が大きくてカレンダー対応スケジュールアプリ作ろうと思ってるんだけど
全くの初心者なんだけど(Cgiの掲示板改造程度なら経験あり)

どこかにそんなプログラム公開してる所無いかな?
改造して勉強したいんだけど

宜しくね(ハート
0752デフォルトの名無しさん2010/03/25(木) 22:16:43
i-modeのシューティングを配布しているけど、
もちろん発射音はない。
BGMだけだけど、とくにそれについての苦情はこなかったな。
0753デフォルトの名無しさん2010/03/25(木) 22:32:27
BGM無しで配布したら苦情入った
まぁ、当たり前だわな
0754デフォルトの名無しさん2010/03/25(木) 22:44:16
>>752
i-modeのシューティング?
お前、本当は作ってないだろw
■ このスレッドは過去ログ倉庫に格納されています