8.06.2015 / 06:45 | |
Aladdin ![](../theme/webdefault/images/m.png) Пользователь
Сейчас: Offline
Имя: Aladdin Откуда: Uzbekistan, Xiva Регистрация: 10.03.2015
| Люди, подскажите пожалуйста, как сделать нормальное управление клавишами? Дело в том, когда нажимаю например вниз(8) курсор перескакивает, как сделать чтоб нормально работало.? Заранее спасибо.
|
8.06.2015 / 07:00 | |
Kalter ![](../theme/webdefault/images/w.png) Пользователь
Сейчас: Offline
Имя: Гриб Откуда: Оренбург - Нежинка Регистрация: 16.10.2013
| Цитата Aladdin: как сделать чтоб нормально работалоКак-как? Я просто не очень понял что именно ты имеешь ввиду.
__________________
![](../theme/webdefault/images/label.png) Homo homini penis est. |
8.06.2015 / 08:01 | |
Aladdin ![](../theme/webdefault/images/m.png) Пользователь
Сейчас: Offline
Имя: Aladdin Откуда: Uzbekistan, Xiva Регистрация: 10.03.2015
| Kalter, Обработчик клавиш: public void keyPressed(int key){
if (key == Canvas.UP ) up = true;
}
public void key Released(int key){
if (key == Canvas.UP) up = false;
}
... public void run(){
...
if (up) up();
...
}
метод up() управляет курсором, ну вот когда нажимаю на 2 или вверх, курсор передвигается бешеной скоростью, перескакивает. Я бы хотел сделать управление как TextEditor, нажимаешь на кнопку передвигается только на один, если удержать, то реагирует только через несколько секунд.) |
8.06.2015 / 12:09 | |
Ксакеп ![](../theme/webdefault/images/m.png) Модератор форума
Сейчас: Offline
Регистрация: 20.06.2012
| Aladdin, насколько я понимаю, обработка нажатий происходит в другом потоке, то есть происходит что-то подобное:
pressed, run, run, run, ..., run, released.
Если это действительно так, то достаточно в первом run установить флаг up в false: нажали кнопку, обработали один раз, ждем пока не отпустят кнопку. Для большей интерактивности можно записывать время последнего смещения курсора: нажали кнопку, run обработал смещение, записал время, run вызывается но не обрабатывает смещение (прошло времени меньше секунды), прошла секунда, снова run обработал смещение, записал время, ..., кнопку отпустили.
System.currentTimeMillis() для записи времени.
Изменено Ксакеп (9.06 / 05:28) (всего 1 раз) |
8.06.2015 / 12:27 | |
Naik ![](../theme/webdefault/images/m.png) Пользователь
Сейчас: Offline
Имя: %name% Регистрация: 14.03.2010
| Ксакеп, точнее System.currentTimeMillis()
/* или */
System.nanoTime()
|
8.06.2015 / 12:50 | |
Magatino ![](../theme/webdefault/images/m.png) Администратор
Сейчас: Offline
Имя: Alexandr Откуда: Где Ленин родился. Simbirsk City Регистрация: 28.01.2011
| Aladdin, Открыть спойлер Закрыть спойлер public void run()
{
cursorKeys();
}
public void cursorKeys()
{
if (up)
up();
}
protected void keyPressed(int key)
{
keys(key, true);
cursorKeys();
keys(key, false);
}
protected void keyRepeated(int key)
{
keys(key, true);
}
protected void keyReleased(int key)
{
keys(key, false);
}
protected void keys(int key, boolean press)
{
if (key==Canvas.UP)
up=press;
}
Изменено Magatino (17.06 / 15:22) (всего 3 раза) |
16.06.2015 / 02:14 | |
Bogdan-G ![](../theme/webdefault/images/m.png) Пользователь
Сейчас: Offline
Имя: Богдан Откуда: Москва Регистрация: 13.02.2011
| Вопрос, в яве6/7 нет полиморфизма если не ошибаюсь из коробки, тогда как будет работать следующий фрагмент кода? Открыть спойлер Закрыть спойлер public static ItemStack getRecipeOutput(ItemStack... aRecipe) {
return getRecipeOutput(F, aRecipe);
}
public static ItemStack getRecipeOutput(boolean aUncopiedStack, ItemStack... aRecipe) {
if (aRecipe == null) return null;
boolean temp = F;
for (byte i = 0; i < aRecipe.length; i++) {
if (aRecipe[i] != null) {
temp = T;
break;
}
}
if (!temp) return null;
InventoryCrafting aCrafting = new InventoryCrafting(new Container() {@Override public boolean canInteractWith(EntityPlayer var1) {return F;}}, 3, 3);
for (int i = 0; i < 9 && i < aRecipe.length; i++) aCrafting.setInventorySlotContents(i, aRecipe[i]);
ArrayList<IRecipe> tList = (ArrayList<IRecipe>)CraftingManager.getInstance().getRecipeList();
for (int i = 0; i < tList.size(); i++) {temp = F;
try {
temp = tList.get(i).matches(aCrafting, DW);
} catch(Throwable e) {e.printStackTrace(GT_Log.err);}
if (temp) {
ItemStack tOutput = aUncopiedStack?tList.get(i).getRecipeOutput():tList.get(i).getCraftingResult(aCrafting);
if (tOutput == null || tOutput.stackSize <= 0) {
// Seriously, who would ever do that shit?
if (!GregTech_API.sPostloadFinished) throw new GT_ItsNotMyFaultException("Seems another Mod added a Crafting Recipe with null Output. Tell the Developer of said Mod to fix that.");
} else {
if (aUncopiedStack) return tOutput;
return GT_Utility.copy(tOutput);
}
}
}
return null;
}
"public static ItemStack getRecipeOutput" повторяется два раза, зачем? и еще "ItemStack..." это еще зачем три точки? редко такое вижу в коде исходников. Как его будет одупливать JVM7? Изменено Ксакеп (16.06 / 07:39) (всего 4 раза) |
16.06.2015 / 07:47 | |
Ксакеп ![](../theme/webdefault/images/m.png) Модератор форума
Сейчас: Offline
Регистрация: 20.06.2012
| Bogdan-G, что значит "в Java нет полиморфизма из коробки"? Вообще, это полная глупость, но возможно, ты имел в виду что-то определенное.
Три точки — это фича Java 7, variadic params, то есть можно вызвать функцию с переменным числом параметров. При вызове они пакуются в массив объектов.
Соответственно у тебя есть две функции: с первым параметром boolean, либо когда все объекты. Различить их не составляет труда, overriding (полиморфизм функций) работает.
|
17.06.2015 / 14:00 | |
Kalter ![](../theme/webdefault/images/w.png) Пользователь
Сейчас: Offline
Имя: Гриб Откуда: Оренбург - Нежинка Регистрация: 16.10.2013
| Java ME. "MIDP lifecycle does not support system exit". Зачем оно вообще реализовано в CLDC?
__________________
![](../theme/webdefault/images/label.png) Homo homini penis est. |
17.06.2015 / 14:51 | |
vl@volk ![](../theme/webdefault/images/m.png) Пользователь
Сейчас: Offline
Имя: Владислав Откуда: Земля Регистрация: 26.12.2012
| На моей нокиа работало, выводило то что я ему передавал
__________________
![](../theme/webdefault/images/label.png) знает толк |