Модераторы: javastic, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Переход, Не могу перейти в другой файл 
V
    Опции темы
fare
Дата 1.8.2006, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 20.7.2006
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Помогите, мне нужно перейти из одного класса GameCanvas,  при нажатии кнопки, в другой класс GameCanvas, который нах-ся в другом файле! Возможно ли это?
PM MAIL ICQ   Вверх
02077461
Дата 1.8.2006, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



Ты сам-то понял что сказал?.
GameCanvas, ето класс, он храниться в файле. Может ты имеешь ввиду что у тебя в двух разных файлах храняться разные классы, наследованные от GameCanvas? Тогда надо сделать последовательно
Код

...
setCurrent( new my.package.MyCanvas1());
....
setCurrent( new my.package.MyCanvas2());
...

PM   Вверх
fare
Дата 9.8.2006, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 20.7.2006
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Простите за долгое отсутсвие! Ну да не правельно выразился! 02077461 Спасибо за помощь. smile 

Это сообщение отредактировал(а) fare - 9.8.2006, 01:01
PM MAIL ICQ   Вверх
fare
Дата 11.8.2006, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 20.7.2006
Где: Санкт-Петербург

Репутация: нет
Всего: нет



02077461, рано сказал спасибо.
Подскажи правельно ли я делаю?
Мне надо перейти из класса f в класс а.
Код

класс а находится в файле а.java

package a;
public class a extends GameCanvas implements Runnable
{
...
...
...
}

класс f находится в файле f.java

import a.*
public class f extends GameCanvas implements Runnable
{
...
...
...
if((keyStates & FIRE_PRESSED) !=0)
{
setCurrent(new a());
}
}


Выдает ошибку в классе а хотя он был раньше правельный.
Пишет что ошибка в классе а.а, хотя он у меня просто а. 
В чем может быть проблема? Может кто сталкивался
PM MAIL ICQ   Вверх
AndriyTyurnikov
Дата 12.8.2006, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 30.6.2006

Репутация: 1
Всего: 1



Недостаточно данных =)
Дай код классов и текст (эффекты) ошибки

PM MAIL   Вверх
Dancer
Дата 14.8.2006, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 29.4.2005
Где: Nizhniy Novgorod

Репутация: 33
Всего: 37



если a.a() - то конечно же в конструкторе проблема. Возможно у тебя нету конструктора без параметров. Но, как правильно сказали ранее - без кода не ясно.
И ещё одно!!!!! (уже не декомпилированный ли ты код используешь?!)
очень на это похоже - все эти a, f, и т.д.
Ты мог не всё так просто декомпилить. И не факт что у тебя твой код будет обратно компилиться нормально!




--------------------
У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! smile
PM MAIL   Вверх
fare
Дата 17.8.2006, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 20.7.2006
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Я пишу программу с нуля.

Это сообщение отредактировал(а) fare - 17.8.2006, 22:10
PM MAIL ICQ   Вверх
fare
Дата 17.8.2006, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 20.7.2006
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Код

класс f находится в файле f.java
import java.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;


public class f extends GameCanvas implements Runnable
{
private b menu;
private b kursor;
boolean z;
int index = 1;
private Display display;

public f() throws IOException
{
super(true);
setFullScreenMode(true);
Image s = Image.createImage("/menu.png");
menu = new b (s,176,208);
menu.setPosition(0,0);
Image o = Image.createImage("/kursor.png");
kursor = new b(o,23,23);
}


public void start()
{
z=true;
Thread t = new Thread(this);
t.start();
}


public void stop(){z = false;}


public void run()
{
Graphics g = getGraphics();
while(z)
{
inputKey();
index();
init(g);
try{Thread.sleep(50);}
catch(java.lang.InterruptedException zxz) {};
}
}


private void inputKey()
{
int keyStates = getKeyStates();
if((keyStates & UP_PRESSED) !=0) 
{
index-=1;
}
if((keyStates & DOWN_PRESSED) !=0) 
{
index+=1;
}
if((keyStates & FIRE_PRESSED) !=0)
{
switch(index)
{
case 1:
setCurrent( new a());


break;
default:
break;
}
}
}


public void index()
{
if(index>5){index=1;}
if(index<1){index=5;}
switch(index)
{
case 1:
kursor.setPosition(145,27);
break;
case 2:
kursor.setPosition(145,58);
break;
case 3:
kursor.setPosition(145,89);
break;
case 4:
kursor.setPosition(145,120);
break;
case 5:
kursor.setPosition(145,151);
break;
default:
break;
}
}


private void init(Graphics g)
{
g.setColor(17,13,193);
g.fillRect(0,0,getWidth(),getHeight());
menu.paint(g);
kursor.paint(g);
flushGraphics();
};
}


класс а находится в файле а.java
package a;
import java.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;


public class a extends GameCanvas implements Runnable
{
private TiledLayer fon;
private b sam;
private b oblako;
private LayerManager lm;
boolean z;
int p;
int g=1;
private b dot;
int k=30;
random Random;

public a() throws IOException
{
super(true);
setFullScreenMode(true);
fon=Fon();
Image s = Image.createImage("/sam.png");
sam = new b (s,31,31);
sam.setPosition(getWidth()/2,getHeight()/2);
sam.defineReferencePixel(11,11);
Image o = Image.createImage("/oblako.png");
oblako = new b(o,20,20);
oblako.defineReferencePixel(20,20);
oblako.setPosition(0,50);
Image d = Image.createImage("/dot.png");
dot = new b(d,5,5);

}


public TiledLayer Fon() throws IOException
{
Image f = Image.createImage("/fon.png");
fon = new TiledLayer(8,8,f,25,25);
int [] pole = 
{
6,6,6,6,6,6,6,6,
5,5,5,5,5,5,5,5,
4,4,4,4,4,4,4,4,
3,3,3,3,3,3,3,3,
2,2,2,2,2,2,2,2,
1,1,1,1,1,1,1,1,
7,11,10,9,8,12,10,8,
1,1,1,1,1,1,1,1,
};
for(int i = 0;i<pole.length;i++)
{
fon.setCell(i%8,i/8,pole[i]);
}
return fon;
}


public void start()
{
z=true;
Thread t= new Thread(this);
t.start();
}


public void stop(){z = false;}


public void run()
{
Graphics g = getGraphics();
while(z)
{
oblako();
inputKey();
init(g);
try{Thread.sleep(50);}
catch(java.lang.InterruptedException zxz) {};
}
}


private void inputKey()
{
int x=sam.getRefPixelX();
int y=sam.getRefPixelY();
int keyStates = getKeyStates();
if((keyStates & LEFT_PRESSED) !=0) {sam.nextFrame();}
if((keyStates & RIGHT_PRESSED) !=0) {sam.prevFrame();}
if((keyStates & FIRE_PRESSED) !=0) {dot.setPosition(x,y);}
}





public void sampolet()
{
int x=sam.getRefPixelX();
int y=sam.getRefPixelY();
Random = new random();
int fr;
int i;
if(x<15)
{
fr = Random.get(6,19);
sam.setFrame(fr);
}
if(x>161)
{
 i = Random.get(0,2);
switch(i)
{
case 0:
fr = Random.get(18,24);
sam.setFrame(fr);
break;
case 1:
fr = Random.get(0,7);
sam.setFrame(fr);
break;
default:
break;
}
}
if(y<15)
{
fr = Random.get(0,13);
sam.setFrame(fr);
}
if(y>193)
{
 i = Random.get(0,2);
 switch(i)
 {
 case 0:
 fr = Random.get(12,24);
 sam.setFrame(fr);
 break;
 default:
 break;
 }
 }
}

public void oblako()
{
oblako.move(1,0);
int x=oblako.getRefPixelX();
int y=oblako.getRefPixelY();
if(x>getWidth()+20)
{
oblako.setPosition(0,30);
}
}

private void init(Graphics g)
{
g.setColor(17,13,193);
g.fillRect(0,0,getWidth(),getHeight());
fon.paint(g);
dot.paint(g);
sam.paint(g);
oblako.paint(g);
flushGraphics();
};
}




PM MAIL ICQ   Вверх
02077461
Дата 18.8.2006, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



Во-первых, расскажи, когда выскакивает ошибка. При компиляции, или при работе?..
Во-вторых, убери throws IOException и оберни в try{}catch все Image.createImage("/sam.png");  в конструкторе класса a и приведи лог консоли, где пишеться про ошибку.

Это сообщение отредактировал(а) 02077461 - 18.8.2006, 12:46
PM   Вверх
fare
Дата 20.8.2006, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 20.7.2006
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Цитата(02077461 @  18.8.2006,  12:45 Найти цитируемый пост)
приведи лог консоли, где пишеться про ошибку.

C:\JAVA\WTK21\apps\Samolet\src\a.java:11: cannot resolve symbol

symbol  : class b 

location: class a.a

private b oblako;



И вот так с любым объектом любого класса.
PM MAIL ICQ   Вверх
redrick
Дата 22.8.2006, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 547
Регистрация: 7.1.2004
Где: Москва

Репутация: 1
Всего: 5



как компилируешь ? какой коммандой ?

вот полезная весчь
http://java.sun.com/j2se/1.4.2/docs/tooldo...dows/javac.html
Код

SEARCHING FOR TYPES

    When compiling a source file, the compiler often needs information about a type it does not yet recognize. The compiler needs type information for every class or interface used, extended, or implemented in the source file. This includes classes and interfaces not explicitly mentioned in the source file but which provide information through inheritance.

    For example, when you subclass java.applet.Applet, you are also using Applet's ancestor classes: java.awt.Panel, java.awt.Container, java.awt.Component, and java.awt.Object.

    When the compiler needs type information, it looks for a source file or class file which defines the type. The compiler searches first in the bootstrap and extension classes, then in the user class path. The user class path is defined by setting the CLASSPATH environment variable or by using the -classpath command line option. (For details, see Setting the Class Path). If you use the -sourcepath option, the compiler searches the indicated path for source files; otherwise the compiler searches the user class path both for class files and source files. You can specify different bootstrap or extension classes with the -bootclasspath and -extdirs options; see Cross-Compilation Options below.

    A successful type search may produce a class file, a source file, or both. Here is how javac handles each situation:

        * Search produces a class file but no source file: javac uses the class file.

        * Search produces a source file but no class file: javac compiles the source file and uses the resulting class file.

        * Search produces both a source file and a class file: javac determines whether the class file is out of date. If the class file is out of date, javac recompiles the source file and uses the updated class file. Otherwise, javac just uses the class file.

          javac considers a class file out of date only if it is older than the source file. 

    Note that javac can silently compile source files not mentioned on the command line. Use the -verbose option to trace automatic compilation. 



--------------------
Имею Мнение Хрен Оспоришь   
PM MAIL ICQ   Вверх
fare
Дата 27.8.2006, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 20.7.2006
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Все исправил, все компилируется, запускается и при нажатии на кнопку при котором должен быть переход в другой класс пишет:
Uncaught exception java/lang/NullPointerException.
В чем теперь ошибка? smile 
Код остался почти без изменений.
PM MAIL ICQ   Вверх
javastic
Дата 28.8.2006, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 19
Всего: 27



Скорее всего ты обращаешься к методу объекта который не создан.


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
fare
  Дата 29.8.2006, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 20.7.2006
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Да я допустил глупую ошибку. 
Все исправил, теперь другая проблема. Не хочет работать хоть тресни  smile 
Код

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;

public class MainGame extends MIDlet implements CommandListener
{
private Command exit = new Command("Выход", Command.EXIT, 0);
private Display display;
private Menu mr;
private Igra igra;
public MainGame() { }

public void startApp()
{
try
{
igra = new Igra();
mr = new Menu();
mr.start();
mr.setCommandListener(this);
display.getDisplay(this).setCurrent(mr);
}catch(java.io.IOException zxz) {}
}


public Display getDisplay()
{
return display;
}


protected void pauseApp() {}
protected void destroyApp(boolean unconditional) {if(mr != null) mr.stop();}


public void MenuShow()
{
display.setCurrent(mr);
}


public void IgraShow()
{
display.setCurrent(igra);
}


public void commandAction(Command c, Displayable d)
{
if(c == exit)
{
destroyApp(false);
notifyDestroyed();
}
}}


Короче я пытаюсь обратится из другого класса в класс MainGame и вызвать метод IgraShow - для запуска игры. Но после запуска и нажатия на кнопку мне пишет:
Uncaught exception java/lang/SecurityException: Application not authorized to access the restricted API.
В чем теперь трабла? smile 

Это сообщение отредактировал(а) fare - 29.8.2006, 21:31
PM MAIL ICQ   Вверх
javastic
Дата 30.8.2006, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 19
Всего: 27



А меню отображается (mr) ?


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0571 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.