![]() |
и снова нифига не работает
Я думаю, что у меня опять та-же проблема... но поскольку ни IDE, ни в процессе выполнения никакой ошибки не выскакивает, и по моей примитивной логике все нормально, прошу совета...
есть у меня три файла: main.java Код:
import java.io.IOException; Код:
import javax.microedition.lcdui.game.Sprite; Код:
import javax.microedition.lcdui.Command; |
Re: и снова нифига не работает
Код:
class MainLoop extends TimerTask { У тебя инициализирован класс Graphics MG только в классе Main, на который указывает статичная переменная неинициализированного экземпляра класса Main midlet. Вобщем незачем объявлять статичные неинициализированные экземпляры нужных тебе классов в каждом классе... это можно сделать для удобства, но если ты не присваиваешь им ссылки на существующий экземпляр класса, то соответственно ничего работать не будет... В классе class Main extends MIDlet implements CommandListener у тебя инициализирутся экземпляр класса public static Graphics MG = null; вот так: MG = GC.CreateScreen();, так как этот экземпляр является статичным, то он доступен из всех остальных экземпляров любых классов, вызывающих его после его создания... у тебя же получается, что ты в классе class Spr extends Sprite создаешь неинициализированный экземпляр класса public static Graphics MG = null; и пытаешься его использовать... несмотря на то что он статичный, он не инициализирован... поэтому ничего и не работает ;) |
Re: и снова нифига не работает
в принципе достаточно объявить по одной статической переменной для каждого класса в Main и тогда не будет путаницы с неприсвоенными значениями. Например к дисплею удобно обращаться
publlic static Display display; один раз присвоив ему значение в startApp() И тогда просто Main.display.getCurrent(); |
Re: и снова нифига не работает
да, все это хорошо, только все как не работало так и продолжает не работать... видно есть еще гдето загвоздка...
превратил MainLoop в Код:
class MainLoop extends TimerTask { |
Re: и снова нифига не работает
вообще-то по-умному берется LayerManager, вешается на GameCanvas. А уже к LM добавляются спрайты и они автоматически будут отрисовываться по flushGraphics. У меня в либе для МР именно так сделано и все четко работает. Стоит ли изобретать велосипед?
|
Re: и снова нифига не работает
хммм... пасиб! попробую...
у меня просто книги путевой нету... а в хелпе полазил.. хз нафиг его сделали... функций я там путевых не нашел... и забил на него... :) |
Re: и снова нифига не работает
уже не помню где качал: ГорнаковС_ПрограммированиеМобильныхТелефоновНаJava 2MicroEdition_2004_ДмкПресс_331с.djvu
довольно толково для начала и на русском. |
Re: и снова нифига не работает
есть у меня такое... только хз чем эти djvu открывать...
мне LayerManager не подойдет, мне надо будет одновременно до сотни спрайтов держать на экране (технику, пули и т.п.)... короче универсальными функциями тут выкоблучиваться надо... проще самому описать... буду сам вырисовывать на экран спрайты какие нужно... самое интересное оно почемуто заработало... а вот почему я до сих пор понять не могу... стоит всеголишь все поновой переписать... main.java Код:
import java.io.IOException; GameC.java Код:
import javax.microedition.lcdui.Graphics; Spr.java Код:
import javax.microedition.lcdui.Image; |
Re: и снова нифига не работает
Цитата:
короче вопрос: как показать в какомнить классе что такая переменная уже объявлена в другом классе, и как ее юзать, чтоб не писать постоянно полное имя :) |
Re: и снова нифига не работает
статические переменные не уничтожаются. они создаются в единственном экземпляре для класса, а не для объекта этого класса. и обращение класс.переменная - самое нормальное. а вот если плодить везде локальные переменные и передавть ссылки то умрешь просто.
|
Часовой пояс GMT +4, время: 08:26. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot