2016-03-06 2 views
0

Так что в идеале я бы идеально хотел интерпретировать язык, который просто выполняет инструкции и может приостановить выполнение посредством вызова метода на этом языке.Подвесные скрипты на Java?

Например,

walkTo (х, у) будет ждать операции, чтобы закончить, если бы на его собственном потоке, так как ходьба занимает больше времени, чем время цикла одной из операций моей игры.

Таким образом, я хотел бы, чтобы метод walkTo начинал то, что ему нужно, а затем может выполнять выполнение вызова, приостанавливая каждый раз, когда он выполнял то, что ему нужно для цикла.

function walkTo(x, y) { 
    while (curX != x && curY != y) { 
     step(whateverDirection); 
     suspend(); 
    } 
} 

или быть в состоянии приостановить й количество циклов нравится приостановить (10)

, но я смотрел на несколько ресурсах на выполнение этого, и это трудно понять каждую мелочь, о проектах. Мне было интересно, есть ли у кого-нибудь, кто делает игру, об этом.

Инструкции берутся в том же потоке, который вызывает execute/run/whatever и приостанавливает инструкции прекращения чтения и возврата. Состояние сохраняется, ожидая выполнения следующего вызова.

Я пробовал https://github.com/offbynull/coroutines, который выполняет то, что я хочу, но я хочу что-то немного легче, без необходимости делать байт-коды.

+0

ваша цель просто пропустить 10 игры клещей? – AdamSkywalker

+0

Нет, это позволяет выполнять операции, выполняющие несколько циклов. Как и вы начинаете действие, для завершения требуется определенное количество тиков, затем происходит что-то еще и так далее. –

ответ

0

Я думаю, что интерпретируемый язык для вашего движка может быть слишком большим из ответов на эту проблему, у вас может быть переменная, которую вы добавляете к каждому обновлению игры, и когда эта переменная превышает определенный порог, выполнить код

int timer = 0; 

public void update() { 
    if(timer > 60) { 
     doThing(); 
     timer = 0 
    } else { 
     timer--; 
    } 
} 

Если ваша игра обновляется 60 раз в секунду, то это будет работать doThing() один раз в секунду

+0

Я хочу, чтобы это было главным образом в ответ на события. Времена - просто простая функция, добавленная поверх нее. –

Смежные вопросы