gooID利用規約 改定のお知らせ

以下はiアプリで画像を3枚順番に表示し、3番目の画像が表示されたときに選択キーを押すと点数が加算される内容です。
コンパイルは通りましたが、エミュレータで実行すると、Main:java.
lang.ClassCastException AnimeIAppというエラーが出ます。
ご指導お願いいたします。

import com.nttdocomo.ui.*;

public class AnimeIApp extends IApplication{
public void start(){
Display.setCurrent (new AnimeCanvas());
}
}

public class AnimeCanvas extends Canvas implements Runnable{

int imgInx;
Image[] imgs;
boolean isStopped;
int score=0;

Image animeImg[]=new Image[3];
MediaImage mI;

public AnimeCanvas(){

for(int i=0;i<3; i++){
mI=MediaManager.getImage("resource:///"+i+".gif");
try{mI.use();}
catch(Exception e){}
}

doStart();
}

private void doStart(){
isStopped=false;
Thread th=new Thread(this);
th.start();
}

private void doStope(){
isStopped=true;
}

public void run(){
imgInx=0;
while(! isStopped){
try{
repaint();
Thread.sleep(500);
imgInx++;
if(imgInx>=imgs.length){
imgInx=0;
}
}catch(Exception e){}
}
}

public void precessEvent(int type,int param){
if(type==Display.KEY_PRESSED_EVENT){
if(param==Display.KEY_SELECT && imgInx==2){
score++;
}
}
}

public void paint(Graphics g){
g.setColor(g.getColorOfRGB(255,255,255));
g.fillRect(0,0,getWidth(),getHeight());
g.drawImage(imgs[imgInx],0,0);
g.setColor(g.getColorOfRGB(0,0,0));
g.drawString("スコア"+ score ,100,100);
}
}

このQ&Aに関連する最新のQ&A

A 回答 (1件)

ClassCastExceptionで、どこでエラーになっているかが表示されているはずだが。

そこをチェック。

ところで、見たところ、public classが2つあるんだが、これはソースコードファイルが2つ分かれてあるということだろうか? そのへん、きちんと作ってあるか再確認しては。

ちなみに、その問題が解消したとしても、このままだとイメージは表示されないし、NullPointerExceptionでエラーになる。imgsの初期化がされてないし、こっちの配列にMediaManagerから取得したImageも入れてない。ソースコードを再度確認すべし。

この回答への補足

logger_man様。早々のご指導ありがとうございます。public classの部分は2つのjavaファイルに分けております。ご指摘の後半の部分は考えてみます。尚、本日(10/13 09:17分)に投稿いたしました質問(QNo.4397857)は同じ内容のオープンアプリのソースですが、こちらでは問題なく動作いたしました。

補足日時:2008/10/13 09:23
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング