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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Виртуальный склад. использование графики, использование графики 
:(
    Опции темы
pinocioBR
Дата 30.11.2012, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте!

 Помогите пожалуйста в реализации приложения под Android.
 Значит имеется склад, в нем имееются ящики, так же на складе есть работник который двигает эти ящики.
 пользователь выступает в качестве наблюдателя.

 вот что я уже имею
Код

//GameView.java
 
package pinocio.sclad;
 
import android.util.AttributeSet;
import android.view.*;
import android.content.*;
import android.graphics.*;
 
public class GameView extends SurfaceView implements SurfaceHolder.Callback
{
    /**
     * Область рисования
     */
    private SurfaceHolder mSurfaceHolder;
    /**
     * Поток, рисующий в области
     */
    private GameManager mThread;
    
    /**
     * Конструктор
     * @param context
     * @param attrs
     */
    public GameView(Context context, AttributeSet attrs)
    {
        super(context, attrs);
 
        // подписываемся на события Surface
        mSurfaceHolder = getHolder();
        mSurfaceHolder.addCallback(this);
        mThread = new GameManager(mSurfaceHolder, context);
    }
 
    @Override
    /**
     * Изменение области рисования
     */
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height)
    {
        mThread.initPositions(height, width);
    }
 
    @Override
    /**
     * Создание области рисования
     */
    public void surfaceCreated(SurfaceHolder holder)
    {
        mThread.setRunning(true);
        mThread.start();
    }
 
    @Override
    /**
     * Уничтожение области рисования
     */
    public void surfaceDestroyed(SurfaceHolder holder)
    {
        boolean retry = true;
        mThread.setRunning(false);
        while (retry)
        {
            try
            {
                // ожидание завершение потока
                mThread.join();
                retry = false;
            }
            catch (InterruptedException e) { }
        }
    }
}


и собственно сам класс рисования.

Код

//GameManager.java
 
package pinocio.sclad;
 
import android.util.AttributeSet;
import android.view.*;
import android.content.*;
import android.content.res.Resources;
import android.graphics.*;
import android.graphics.Paint.Style;
 
public class GameManager extends Thread
{
    private static final int FIELD_WIDTH = 300;
    private static final int FIELD_HEIGHT = 250;
 
   /** Область, на которой будем рисовать */
    private SurfaceHolder mSurfaceHolder;
 
    /** Состояние потока (выполняется или нет. Нужно, чтобы было удобнее прибивать поток, когда потребуется) */
    private boolean mRunning;
 
    /** Стили рисования */
    private Paint mPaint;
 
    /** Прямоугольник игрового поля */
    private Rect mField;
   
    /** Ресурсы приложения */
    private Resources mRes;
 
    /**
     * Инициализация положения объектов, в соответствии с размерами экрана
     * @param screenHeight Высота экрана
     * @param screenWidth Ширина экрана
     */
    
    public void initPositions(int screenHeight, int screenWidth)
    {
        int left = (screenWidth - FIELD_WIDTH) / 2;
        int top = (screenHeight - FIELD_HEIGHT) / 2;
 
        mField.set(left, top, left + FIELD_WIDTH, top + FIELD_HEIGHT);
    }
 
    /**
     * Конструктор
     * @param surfaceHolder Область рисования
     * @param context Контекст приложения
     */
    public GameManager(SurfaceHolder surfaceHolder, Context context)
    {
        mSurfaceHolder = surfaceHolder;
        mRunning = false;
 
        mPaint = new Paint();
        mPaint.setColor(Color.BLUE);
        mPaint.setStrokeWidth(2);
        mPaint.setStyle(Style.STROKE);
        mField = new Rect();
    }
 
    /**
     * Задание состояния потока
     * @param running
     */
    public void setRunning(boolean running)
    {
        mRunning = running;
    }
 
    @Override
    /** Действия, выполняемые в потоке */
    public void run()
    {
        while (mRunning)
        {
            Canvas canvas = null;
            try
            {
                // подготовка Canvas-а
                canvas = mSurfaceHolder.lockCanvas();
                synchronized (mSurfaceHolder)
                {
                    // собственно рисование
                    canvas.drawRect(mField, mPaint);
                }
            }
            catch (Exception e) { }
            finally
            {
                if (canvas != null)
                {
                    mSurfaceHolder.unlockCanvasAndPost(canvas);
                }
            }
        }
    }
}


теперь мне необходимо создать класс для ящика и работника, но я не могу понять как реализовать ихнее перемещение по складу.
 а после создания класов их необходимо прорисовать в классе GameManager 

 Гуру программисты помогите чайнику ))
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Android | Следующая тема »


 




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


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

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