Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > Android

Android Разработка игр на платформе Android

Ответ
 
Опции темы
Старый 15.05.2012, 09:30   #16
cyberblut
Знающий
 
Регистрация: 14.06.2009
Сообщений: 338
Написано 139 полезных сообщений
(для 257 пользователей)
Ответ: Помогите новичку!

Сообщение от ratum Посмотреть сообщение
В активити Game создан экземпляр hero класса Hero. При нажатии кнопки в MapView(view для Game) создаётся активити Inventory. Как из Inventory получить доступ к hero?
никак
(Offline)
 
Ответить с цитированием
Старый 15.05.2012, 17:54   #17
ratum
Оператор ЭВМ
 
Регистрация: 29.08.2011
Сообщений: 22
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Помогите новичку!

То есть нельзя чтобы несколько классов имели доступ к одному и тому же экземпляру класса х?
(Offline)
 
Ответить с цитированием
Старый 15.05.2012, 18:42   #18
cyberblut
Знающий
 
Регистрация: 14.06.2009
Сообщений: 338
Написано 139 полезных сообщений
(для 257 пользователей)
Ответ: Помогите новичку!

Сообщение от ratum Посмотреть сообщение
То есть нельзя чтобы несколько классов имели доступ к одному и тому же экземпляру класса х?
Нельзя, чтобы контексто-зависимые классы имели доступ друг к другу. Из активити A нельзя получить доступ к активити B напрямую. Равно как и к их вьюхам.
(Offline)
 
Ответить с цитированием
Старый 16.05.2012, 07:23   #19
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Помогите новичку!

Как вариант, можно создать отдельный класс для хранения глобальных указателей, и через него работать с объектами.
Типа:
public class Globals {
	public static Hero hero;
}
Далее в коде в любом классе пишем:
Globals.hero = new Hero("John");
Ещё в другом месте обращаемся к свойствам:
if(Globals.hero != null && Globals.hero.getHealth() > 10) {
  //.....
}
Вместо Globals можно написать покороче имя для удобства, например G.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ratum (16.05.2012)
Старый 16.05.2012, 18:59   #20
ratum
Оператор ЭВМ
 
Регистрация: 29.08.2011
Сообщений: 22
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Помогите новичку!

Точно! Спасибо большое! А то я запутался немного))
(Offline)
 
Ответить с цитированием
Старый 17.05.2012, 18:50   #21
ratum
Оператор ЭВМ
 
Регистрация: 29.08.2011
Сообщений: 22
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Помогите новичку!

Допустим, что в Game создан экземпляр Global:

global = new Global(this);

В Global созданы экземпляры 2 разных View. Как в Game задать setContentView() через эти 2 экземпляра?
(Offline)
 
Ответить с цитированием
Старый 18.05.2012, 00:35   #22
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Помогите новичку!

Научись формировать вопрос, в понятный текст, чтобы он давал читателю представление ЧТО ты пытаешься сделать, и КАК ты это уже попробовал сделать.
Если чётко сформируешь вопрос, то в 90% случаях ответишь на свой же вопрос сразу. Если таки не смог, по крайней мере другие смогут понять вопрос и помочь.
(Offline)
 
Ответить с цитированием
Старый 18.05.2012, 01:12   #23
ratum
Оператор ЭВМ
 
Регистрация: 29.08.2011
Сообщений: 22
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Помогите новичку!

В Game создан экземпляр Global. В Global описываются все остальные классы: объекты и вьюхи для Game (как предложил Жека), так как хочу использовать одну активити и несколько вьюх. Но не получается установать вьюхи для отображения в Game. Если в Global объявляю Game как final то eclipse ругается на конструкторы вьюх (что Game не инициализируется, хотя раньше делал абсолютно так же), если Game без final, то eclipse компилирует без ошибок, но при старте активити Game приложение вылетает. Вот так)
(Offline)
 
Ответить с цитированием
Старый 18.05.2012, 07:02   #24
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Помогите новичку!

Я не предлагал создавать global через new. Я предлагал сделать все его члены статическими, чтобы осуществлять доступ не через экземплял глобал'а, а через имя класса. И не финальными они должны быть, т.к. финальные поля нужно либо в объявлении инициализировать, либо в конструкторе, но такой вариант не подходит, т.к. ты заранее не захочешь всё создавать в конструкторе и не сможешь (в случае с активити).
Делай так в классе Global:
public static Game game;
Далее, активити нельзя создавать через new, оно само создаётся; отследить создание можно в методе с именем onCreate(Bundle b), в этом методе делай присвоение переменной
Global.game = this;
И так для всех активити.
И всё, однажды присвоив значение, сможешь везде с ним работать.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ratum (21.05.2012)
Старый 18.05.2012, 17:34   #25
ratum
Оператор ЭВМ
 
Регистрация: 29.08.2011
Сообщений: 22
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Помогите новичку!

Вроде понял. Буду пробовать.
(Offline)
 
Ответить с цитированием
Старый 21.05.2012, 23:53   #26
ratum
Оператор ЭВМ
 
Регистрация: 29.08.2011
Сообщений: 22
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Помогите новичку!

Спасибо, Жека! Всё работает!

Как можно отследить/заблокировать нажатие кнопки "назад"/"меню"?
(Offline)
 
Ответить с цитированием
Старый 22.05.2012, 06:38   #27
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Помогите новичку!

Посмотри статейку: Создание меню
(Offline)
 
Ответить с цитированием
Старый 14.10.2012, 21:09   #28
ratum
Оператор ЭВМ
 
Регистрация: 29.08.2011
Сообщений: 22
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Помогите новичку!

Как можно сделать прокрутку? Нужно для прокрутки карты, которая не влезает на экран. Пробовал через MotionEvent.ACTION_MOVE, но получается какая-то ересь.
(Offline)
 
Ответить с цитированием
Старый 15.10.2012, 10:41   #29
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Помогите новичку!

Я для прокрутки использую ScrollView.
В методе onCreate:
ScrollView sv = new ScrollView(this);
sv.setFillViewport(true);
LinearLayout lay = new LinearLayout(this);
lay.setOrientation(LinearLayout.VERTICAL);
sv.addView(lay);
//здесь добавляем всё что нужно в лайаут lay
//например 10 кнопок:
int pad 30;
lay.setPadding(padpadpadpad);
Button b;
for(
int k=0;k<10;++k) {
    
= new Button(this);
    
b.setText("Кнопка "+k);
    
b.setId(1000+k);
    
//b.setOnClickListener(ButtonListener);
    
b.setEnabled(== 0);
    
lay.addView(b);
}
setContentView(sv); 
(Offline)
 
Ответить с цитированием
Старый 15.10.2012, 18:11   #30
ratum
Оператор ЭВМ
 
Регистрация: 29.08.2011
Сообщений: 22
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Помогите новичку!

А как сделать это без LinearLayout? То есть я использую

case MotionEvent.ACTION_DOWN:
x = (int)event.getX();
y = (int)event.getY();

для определения области касания, так как не использую кнопки. Можно ли реализовать "сырую" (с получением и ручной обработкой координат) прокрутку, без использования layout?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 23:18.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com