Я не силен в разработке Java приложений (больше как-то с Java EE работаю), но помню, когда еще на 2-ом курсе писали приложения на C#, там такая же штука была - нельзя было вызывать методы объектов из других процессов. Для решения этого момента была какая-то ужасная конструкция, уже не помню, что она собой представляла. Но факт остается фактом - нельзя вызывать некоторые методы объектов, относящихся к интерфейсу из другого потока.
На StackOverflow (ссылка) есть решение. Из него следует, что нужно иметь поток (либо создать его, либо использовать родительский), который будет создавать нужные тебе объекты (вдруг у тебя больше одного объекта MediaPlayer), и ждать от других потоков обработчики событий, чтобы исполнить их в контексте своего потока.
Чтобы адаптировать это решение к твоей задаче, можно сделать примерно так:
1. Сначала определить обработчик события
Код
public interface MediaPlayerInvoker { public void run(MediaPlayer player); }
2. Определить класс с интерфейсом Runnable, чтобы запустить его в отдельном потоке
Код
public class Invoker implements Runnable { public static final BlockingQueue<MediaPlayerInvoker> queue = new LinkedBlockingQueue<MediaPlayerInvoker>();
private MediaPlayer mediaPlayer;
public Invoker() { mediaPlayer = new MediaPlayer(); //Или как он там создается }
Пару вопросов: 1. Где создаешь объект класса MediaPlayer - в главном потоке или в каком-то дочернем? 2. Работают ли эти методы, если они будут вызваны из главного потока?
Мой совет - не пиши свой движок. Для того, чтобы написать хороший движок, нужен опыт в разработке хоть каких-нибудь приложений + хорошая теоретическая база (паттерны проектирования; принципы ООП если выбрал С++ или Java, к примеру; математика тоже очень важна). Лучше начни делать свою игру, точнее, ремейк какой-нибудь известной игры. Моей первой игрой была змейка в командной строке (или в терминале, если на Linux скомпилить). В процессе столкнешься с проблемами, будешь их решать (желательно гуглить, и не надо стесняться - все всегда гуглят. Только код копипастить нежелательно) - наберешься опыта, может, тогда сможешь что-то для себя сделать.
Barbatos верно отметил, что долго расписывать. Существует теория игр, если хочешь действительно хороший ИИ. Не думаю, что мощи GML хватит на описание этих алгоритмов. Ну или это будет достаточно геморройно.
Сообщение отредактировал monk05 - Вторник, 09 Апреля 2013, 19:08
MyACT, 1) Какую камеру ты хотел бы видеть? Просто я тебя не совсем понял. 2) Постараюсь сделать. 3) Тоже попробую реализовать. 4) Я над этим работаю. 5) Просто наложить текстурку будет не красиво. Буду увеличивать детализацию.
Добавлено (23.04.2012, 15:39) --------------------------------------------- Единственная сложность - у меня, как вы поняли, Linux. Под Wine'ом Blender 2.62 не компилирует нормально. Поэтому, возможно, с этим будут проблемы.
Добавлено (23.04.2012, 15:45) --------------------------------------------- У кого Windows, пожалуйста, протестируйте.
Жанр: логическая, пространственная головоломка На каком движке/конструкторе: Blender Game Engine (BGE) В каком пространстве: 3D Вид в игре: от первого лица Похожие игры: Q.U.B.E, Cubez Язык Программирования: Python Платформа: Linux, Windows Предоставление исходного кода игры: Open Source Тип лицензии: ) Freeware
Описание: Как и в любой другой игре этого жанра, есть вход, есть выход, а путь сам себе проложи из того, что есть. 6 уровней различной сложности.
Скриншоты:
P.S. Это моя первая игра, так что багов в ней может быть много. Возможно будут обновления игры.
Добавлено (01.04.2012, 11:44) --------------------------------------------- Все, тему можно закрывать - нашел выход. Использую систему сообщений.
Добавлено (03.04.2012, 12:39) --------------------------------------------- Теперь у меня каждый объект имеет свой собственный обработчик сообщений. Как я раньше до этого не додумался!?
Да нет, я не спорю с вами, Faeton, просто учитель мне сказал, что ноль в нулевую степень возводить нельзя. Может, это и есть подвох?
Добавлено (28.09.2011, 20:28) --------------------------------------------- Кстати, ваше решение, если можно так сказать, лучшее из присутствующих здесь.