|
Android Разработка игр на платформе Android |
15.05.2012, 09:30
|
#16
|
Знающий
Регистрация: 14.06.2009
Сообщений: 338
Написано 139 полезных сообщений (для 257 пользователей)
|
Ответ: Помогите новичку!
Сообщение от ratum
В активити Game создан экземпляр hero класса Hero. При нажатии кнопки в MapView(view для Game) создаётся активити Inventory. Как из Inventory получить доступ к hero?
|
никак
|
(Offline)
|
|
15.05.2012, 17:54
|
#17
|
Оператор ЭВМ
Регистрация: 29.08.2011
Сообщений: 22
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Помогите новичку!
То есть нельзя чтобы несколько классов имели доступ к одному и тому же экземпляру класса х?
|
(Offline)
|
|
15.05.2012, 18:42
|
#18
|
Знающий
Регистрация: 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)
|
|
Сообщение было полезно следующим пользователям:
|
|
16.05.2012, 18:59
|
#20
|
Оператор ЭВМ
Регистрация: 29.08.2011
Сообщений: 22
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Помогите новичку!
Точно! Спасибо большое! А то я запутался немного))
|
(Offline)
|
|
17.05.2012, 18:50
|
#21
|
Оператор ЭВМ
Регистрация: 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
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Помогите новичку!
Научись формировать вопрос, в понятный текст, чтобы он давал читателю представление ЧТО ты пытаешься сделать, и КАК ты это уже попробовал сделать.
Если чётко сформируешь вопрос, то в 90% случаях ответишь на свой же вопрос сразу. Если таки не смог, по крайней мере другие смогут понять вопрос и помочь.
|
(Offline)
|
|
18.05.2012, 01:12
|
#23
|
Оператор ЭВМ
Регистрация: 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:
Далее, активити нельзя создавать через new, оно само создаётся; отследить создание можно в методе с именем onCreate(Bundle b), в этом методе делай присвоение переменной
И так для всех активити.
И всё, однажды присвоив значение, сможешь везде с ним работать.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
18.05.2012, 17:34
|
#25
|
Оператор ЭВМ
Регистрация: 29.08.2011
Сообщений: 22
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Помогите новичку!
Вроде понял. Буду пробовать.
|
(Offline)
|
|
21.05.2012, 23:53
|
#26
|
Оператор ЭВМ
Регистрация: 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
|
Оператор ЭВМ
Регистрация: 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(pad, pad, pad, pad); Button b; for(int k=0;k<10;++k) { b = new Button(this); b.setText("Кнопка "+k); b.setId(1000+k); //b.setOnClickListener(ButtonListener); b.setEnabled(k % 2 == 0); lay.addView(b); } setContentView(sv);
|
(Offline)
|
|
15.10.2012, 18:11
|
#30
|
Оператор ЭВМ
Регистрация: 29.08.2011
Сообщений: 22
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Помогите новичку!
А как сделать это без LinearLayout? То есть я использую
case MotionEvent.ACTION_DOWN:
x = (int)event.getX();
y = (int)event.getY();
для определения области касания, так как не использую кнопки. Можно ли реализовать "сырую" (с получением и ручной обработкой координат) прокрутку, без использования layout?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 04:47.
|