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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка в примере Горнакова, Как исправить ? 
:(
    Опции темы
aaa25
Дата 20.1.2011, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



в книге Горнакова "программирование на j2me" в примере 8.1
в строке "public TiledLayer Fon()throws IOException"  netbeans ПРИ КОМПИЛЯЦИИ выдает ошибку
 "at MyGameCanvas.Fon(MyGameCanvas.java:49)". 
(WTK -тоже)
что это за ошибка и как ее исправить?
 

/**
   листинг 8.1 
   @author Станислав Горнаков
   класс MyGameCanvas
 */

// подключаем исключение IOException
import java.io.IOException;

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

public class MyGameCanvas extends GameCanvas implements Runnable 
{
  // создаем объект класса TiledLayer
  private TiledLayer fonPole;
  // создаем объект класса LayerManager
  private LayerManager lm;
  // логическа переменная для выхода из цикла
  boolean z;
  
 public MyGameCanvas() throws IOException
 {
    // обращаемся к конструктору суперкласса Canvas
    super(true);
    // инициалезируем fonPole
    fonPole = Fon();
    // создаем менеджер уровней
    lm = new LayerManager();
    // добовляем объект fonPole к уровню
    lm.append(fonPole);
 }

 public void start()
  {
     z = true; 
     // создаем и запускаем поток
     Thread t = new Thread(this);
     t.start();
  }
 /* метод создающий объект класса TiledLayer
    и загружающий фоновое изображение */
 public TiledLayer Fon()throws IOException
 {
    // загрузка изображения из файла ресурса
    Image im = Image.createImage("/fon.png");
    // создаем объект класса TiledLayer
    fonPole = new TiledLayer(/*столбцы*/10,/*строки*/10, im,/*ширина*/15,/*высота*/15);
        // разметка игрового поля
        int[] pole = 
        {
    5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
    1, 5, 5, 5, 5, 5, 5, 5, 5, 5,
    1, 1, 5, 5, 5, 5, 5, 5, 5, 5,
    1, 1, 1, 1, 5, 5, 5, 1, 1, 5,
    1, 1, 1, 1, 1, 5, 5, 1, 1, 1,
    1, 1, 1, 1, 1, 1, 1, 1, 6, 6,
    1, 1, 1, 1, 1, 1, 6, 6, 6, 6,
    2, 4, 4, 4, 4, 4, 3, 3, 3, 3,
    2, 2, 2, 4, 4, 4, 3, 3, 3, 3,
    2, 2, 2, 4, 4, 4, 3, 3, 3, 3,
        };
        // цикл считывающий разметку поля
        for(int i = 0; i < pole.length; i++)
        {
            /* присваеваем каждому элементу игрового поля
               определенную ячейку изображения im*/
            fonPole.setCell(i % 10, i / 10, pole[i]);
        }
        return fonPole;
    }
 
 public void stop(){ z = false; }

 public void run() 
  {
    // получаем графический контекст
    Graphics g = getGraphics();
    // бесконечный цикл
    while (z) 
    {
      // рисуем графические элементы
      init(g);
      // останавливаем цикл на 20 милесекунд
      try { Thread.sleep(20); }
      catch (java.lang.InterruptedException zxz) {};
    }
  }
  
  private void init(Graphics g)
  {
    // белый цвет фона для перерисовки экрана
    g.setColor(0xffffff);
    // размер перерисовки экрана
    g.fillRect(0, 0, getWidth(), getHeight());
    // рисуем уровень с левого верхнего угла дисплея
    lm.paint(g, 0, 0);
    // двойная буферезация
    flushGraphics();
  }
}

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


Шустрый
*


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

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



Файл "/fon.png" есть на месте? 
PM MAIL   Вверх
aaa25
Дата 20.1.2011, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



есть ( нормально в папке  res)
PM MAIL   Вверх
oxigen
Дата 20.1.2011, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Какую именно ошибку выдает?
PM MAIL   Вверх
aaa25
Дата 20.1.2011, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



вот так ошибку выдает netbeans:

java.lang.IllegalArgumentException
        at javax.microedition.lcdui.game.TiledLayer.<init>(), bci=66
        at MyGameCanvas.Fon(MyGameCanvas.java:33)
        at MyGameCanvas.<init>(MyGameCanvas.java:19)
        at MainGame.startApp(MainGame.java:21)
        at javax.microedition.midlet.MIDletTunnelImpl.callStartApp(), bci=1
        at com.sun.midp.midlet.MIDletPeer.startApp(), bci=7
        at com.sun.midp.midlet.MIDletStateHandler.startSuite(), bci=269
        at com.sun.midp.main.AbstractMIDletSuiteLoader.startSuite(), bci=52
        at com.sun.midp.main.CldcMIDletSuiteLoader.startSuite(), bci=8
        at com.sun.midp.main.AbstractMIDletSuiteLoader.runMIDletSuite(), bci=161
        at com.sun.midp.main.AppIsolateMIDletSuiteLoader.main(), bci=26

Добавлено через 11 минут и 13 секунд
ошибка на рисунке

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  err.jpg 296,36 Kb
PM MAIL   Вверх
math64
Дата 20.1.2011, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

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



Всё-таки - либо "/fon.png" не на месте, либо он не тех размеров.
Проверяй содержимое .jar в папке dist, он должен быть в корне и строчными буквами.
PM   Вверх
oxigen
Дата 21.1.2011, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Из документации: 

public TiledLayer(int columns,
                  int rows,
                  Image image,
                  int tileWidth,
                  int tileHeight)

Throws: 
NullPointerException - if image is null 
IllegalArgumentException - if the number of rows or columns is less than 1 
IllegalArgumentException - if tileHeight or tileWidth is less than 1 
IllegalArgumentException - if the image width is not an integer multiple of the tileWidth 
IllegalArgumentException - if the image height is not an integer multiple of the tileHeight


Так что проверь высоту и ширину своей картинки. Кратны ли они 15-ти?
PM MAIL   Вверх
aaa25
Дата 23.1.2011, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



похоже, действительно ошибка в рисунке fon.png,  в ресурсах он 64\48  я заменил его рисунком 60\45 - прога выдала какой-то бред, но ошибки уже нет.   спасибо, это уже кое-что...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

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

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


 




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


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

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