Четверг, 25 Апреля 2024, 23:54

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Записи участника » DarkWizard [6]
Результаты поиска
DarkWizardДата: Пятница, 14 Января 2011, 20:57 | Сообщение # 1 | Тема: Вопросы по Java и JavaScripts.
был не раз
Сейчас нет на сайте
Кто работал с оптимизацией памяти? (очень актуально для мобильных игр)
Как лучше всего описывать параметры функции?
Вот так:
Code
public void function(int a, int b)

или так:
Code
public void function(byte a, byte b)

Понятно, что во втором случае постоянно (почти) придется приводить тип параметров при вызове:
Code
function((byte)(10), (byte)(3));

Влияет ли тип параметров на размер, хранимый в памяти?

Добавлено (14.01.2011, 20:57)
---------------------------------------------
Еще пару вопросов про использование памяти.
1. Существуют ли стандартные команды для уничтожения класса? Если нет, то какие действия необходимо предпринять чтобы данные класа освободили память после выполнения команды

Code
System.gc()

2. Как в java-консоли для мобильных приложений (у меня это KToolbar Sony Ericsson) посмотреть объем занимаемой приложением памяти? Или команда в java.
3. У меня имеется вот такой класс
Code
public class Content
{
  protected static Content this_ID = null;
  //...public-переменные
  private Content()
  {
  }

  public static Content getID()
  {
   if(this_ID == null)
    this_ID = new Content();
   return this_ID;
  }

  public void init()
  {
   //инициализация используемых объектов
  }

  //public-функции
}

Обращаюсь я к переменным и функциям вот так:
Code
Content.getID().function()

Теперь вопрос: как удалить класс и освободить занимаемую им память?
Поможет ли, если в этот класс добавить следующую функцию?
Code
public void destroy()
{
  this_ID = null;
}

Извне вызвать:
Code
Content.getID().destroy()
а потом:
Code
System.gc()
Память действительно освободится?
Буду рад помощи!


Мое сердце у тебя на ладонях.
Волшебство для тебя лишь одной.
DarkWizardДата: Вторник, 21 Декабря 2010, 18:25 | Сообщение # 2 | Тема: Структура игры
был не раз
Сейчас нет на сайте
Объектно-Ориентированное Программирование - само собой))
Просто есть желание создать действительно интересную тему. От общей теории, используя отвлеченные понятия, до описания алгоритмов тех или иных специализированных областей.
Т.е. если идти от частного к обшему, то некоторый надкласс работает постоянно. По пути подключая и отключая необходимые более мелкие классы.
Вот, например, у тебя парсер не просто считывает команда, но и (как я понял) принимает решения о действии. В бою с монстром работает тот же парсер? И в магазине?
Скрипты, например, как работают? Они запускаются из парсера или особняком работают?
Графика, наверное, у тебя отрисовывается только после действия или есть анимация?


Мое сердце у тебя на ладонях.
Волшебство для тебя лишь одной.
DarkWizardДата: Понедельник, 20 Декабря 2010, 20:47 | Сообщение # 3 | Тема: Структура игры
был не раз
Сейчас нет на сайте
Доброго времени суток!
Долго искал куда можно добавить сообщение, решил завести новую тему.
Задался целью написать простенькую 2D-игру. Но при внесении новых идей постоянно приходится переписывать старые участки кода.
Думаю, многим начинающим разработчикам будет полезно определиться с игровой структурой. Ведь это не только графический движок. Еще логика, скрипты и т.д. И нужно еще, чтобы они мирно уживались и работали сообща.
Хочу спросить у профи игростроя: как они видят организационную структуру игры, алгоритмы взаимодействия отдельных частей?


Мое сердце у тебя на ладонях.
Волшебство для тебя лишь одной.
DarkWizardДата: Понедельник, 20 Декабря 2010, 18:51 | Сообщение # 4 | Тема: Помогите разобраться с функцией
был не раз
Сейчас нет на сайте
Этот код выводит на экран список myList.
Display.getDisplay(this) - обращается к экрану устройства и получает его для текущего класса.
Потом *.setCurrent(myList) - на экран устанавливается объект myList.


Мое сердце у тебя на ладонях.
Волшебство для тебя лишь одной.
DarkWizardДата: Понедельник, 20 Декабря 2010, 18:38 | Сообщение # 5 | Тема: Java2ME. Подкласс для класса Layer.
был не раз
Сейчас нет на сайте
Почему написал сюда - потому что именно с этого форума я начал изучение Java2ME.
Пример кода привожу ниже.
Без класса MyLayer все работает. Как его построить правильно - ума не приложу.

Файл MyMIDlet.java:
import java.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

public class MyMIDlet extends MIDlet implements CommandListener
{
private Command exitMidlet = new Command("Выход", Command.EXIT, 0);
private MyGameCanvas MyGameCanvasObject;

public void startApp()
{
try{
MyGameCanvasObject = new MyGameCanvas();
MyGameCanvasObject.addCommand(exitMidlet);
MyGameCanvasObject.setCommandListener(this);
Display.getDisplay(this).setCurrent(MyGameCanvasObject);
}catch (java.io.IOException zxz) {};
}
public void pauseApp(){}
public void destroyApp(boolean unconditional)
{
}

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

Файл MyGameCanvas.java:
import java.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import javax.microedition.midlet.*;

public class MyGameCanvas extends GameCanvas
{
private LayerManager LayerManagerObject;
private Sprite SpriteObject;
private MyLayer MyLayerObject;
public MyGameCanvas() throws IOException
{
super(true);

LayerManagerObject = new LayerManager();

SpriteObject = new Sprite(Image.createImage("/Image.png"), 64, 64);
SpriteObject.setPosition(64,64);
LayerManagerObject.append(SpriteObject);

MyLayerObject = new MyLayer();
LayerManagerObject.append(MyLayerObject);

Graphics g = getGraphics();
LayerManagerObject.paint(g, 0, 0);
flushGraphics();
}
}

Файл MyLayer.java:
import java.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;

public class MyLayer extends Layer
{
protected MyLayer()
{
super();
}
public void paint(Graphics g)
{
try{
g.drawImage(Image.createImage("/Image.png"), 0, 0, 0);
}
catch(java.io.IOException zxz) {};
}
}

Добавлено (20.12.2010, 18:38)
---------------------------------------------
По прошествию времени вопрос отпал. Многие вещи проще сделать самому, чем пользоваться готовыми методами.
Спасибо.


Мое сердце у тебя на ладонях.
Волшебство для тебя лишь одной.
DarkWizardДата: Среда, 23 Июня 2010, 06:34 | Сообщение # 6 | Тема: Java2ME. Подкласс для класса Layer.
был не раз
Сейчас нет на сайте
Доброго времени суток!
Подскажите, пожалуйста, как самому создать подкласс класса Layer?
Трудность в том, что Layer - абстрактный и не имеет конструктра (или он защищен).
Описываю свой класс вот так:
public class MyLayer extends Layer{
public MyLayer(){
super();
}
public void paint(Graphics g){
}
}
Выдается ошибка:"Layer(int, int) in javax.microedition.lcdui.game.Layer cannot be applied to ()".
Без super() то же самое.
Если пишу super(int x, int y), то ошибка имеет вид:"Layer(int, int) is not public in javax.microedition.lcdui.game.Layer; cannot be accessed from outside package".
Как это правильно сделать? Может есть другой способ?


Мое сердце у тебя на ладонях.
Волшебство для тебя лишь одной.
Форум игроделов » Записи участника » DarkWizard [6]
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг