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

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

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

Прочие вопросы Вопросы не касающиеся программирования (установка, настройка...)

Ответ
 
Опции темы
Старый 07.05.2011, 14:04   #1
Rock2roll
Знающий
 
Аватар для Rock2roll
 
Регистрация: 14.05.2010
Сообщений: 297
Написано 13 полезных сообщений
(для 13 пользователей)
Печаль Мда, не дружу с сенсором...хелп

Никак не выходит замутить. Суть в том чтобы осуществить - на экране картинка, координаты 0,0. Ширина- 100, высота-100. Если происходит нажатие в пределах координат картинки (if (x>0) and (x<100) and (y>0) and (y<100) and Нажали на экран then событие. Как сделать? Помогите, умные люди, я блин, чайник)
__________________
G502, GT S5230w user!
(Offline)
 
Ответить с цитированием
Старый 07.05.2011, 14:39   #2
YellowAfterlife
ПроЭктировщик
 
Аватар для YellowAfterlife
 
Регистрация: 19.02.2011
Сообщений: 134
Написано 81 полезных сообщений
(для 219 пользователей)
Ответ: Мда, не дружу с сенсором...хелп

Все зависит от библиотеки... некоторые дают возможность определять момент нажатия на экран, некоторые оставляют это на вас.

Сделал библиотеку первого вида:
Функции:
ptr_update - обновляет состояния (нужен для использования ptr_pressed \ ptr_released)
ptr_clear - сбрасывает переменные, отвечающие за нажатие на экран
ptr_x, ptr_y - возращают текущие координаты
ptr_down - возращает нажат ли "курсор" в данный момент
ptr_pressed - возращает, был ли нажат курсор с момента предыдущего вызова ptr_update
ptr_released - возращает, были ли отпущен курсор с момента предыдущего вызова ptr_update
ptr_events - возращает, поддерживает ли телефон сенсорный ввод
ptr_motion - возращает, поддерживает ли телефон "события движения" (отслеживание положения курсора пока он нажат)
Пример программы:
program t;
uses pointer;
var 
finteger;
begin
  f 
:= 64;
  
repeat
    ptr_update
;
    
setColor(fff);
    
fillRect(00getWidthgetHeight);
    if (
128then setColor(255255255) else setColor(000);
    
drawText('X: ' ptr_x '; Y: ' ptr_y00);
    if 
ptr_pressed 0 then f := Random(255);
    
rePaint;
    
delay(32);
  
forever
end

Добавлено:
Пример на Lib_sensor:
program t;
uses sensor;
var 
finteger;
  
ptr_stateptr_state0ptr_pressedptr_releasedboolean;
procedure ptr_updatebegin
  ptr_state 
:= pointer_state 0;
  
ptr_pressed := (ptr_state xor ptr_state0) and ptr_state;
  
ptr_released := (ptr_state xor ptr_state0) and ptr_state0;
  
ptr_state0 := ptr_state;
end;
begin
  f 
:= 64;
  
init;
  
repeat
    ptr_update
;
    
setColor(fff);
    
fillRect(00getWidthgetHeight);
    if (
128then setColor(255255255) else setColor(000);
    
drawText('X: ' pointer_dragged_x '; Y: ' pointer_dragged_y00);
    if 
ptr_pressed then f := Random(255);
    
rePaint;
    
delay(32);
  
forever
end

Вложения
Тип файла: zip Lib_pointer.zip (1.0 Кб, 771 просмотров)
__________________

Мой сайт-блог. Игры, обновления, примеры для Haxe, JavaScript(+HTML5), GameMaker, Love2d...

Последний раз редактировалось YellowAfterlife, 07.05.2011 в 15:15. Причина: Добавил ответ на сообщение ниже.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо YellowAfterlife за это полезное сообщение:
bormotan (13.12.2011), Rock2roll (07.05.2011)
Старый 07.05.2011, 15:05   #3
Rock2roll
Знающий
 
Аватар для Rock2roll
 
Регистрация: 14.05.2010
Сообщений: 297
Написано 13 полезных сообщений
(для 13 пользователей)
Ответ: Мда, не дружу с сенсором...хелп

Спасиб, а можешь пример показать на lib_sensor, и чтобы она делала именно то что я написал. Прошу, это очень важно)
__________________
G502, GT S5230w user!
(Offline)
 
Ответить с цитированием
Старый 07.05.2011, 22:44   #4
Rock2roll
Знающий
 
Аватар для Rock2roll
 
Регистрация: 14.05.2010
Сообщений: 297
Написано 13 полезных сообщений
(для 13 пользователей)
Вопрос Ответ: Мда, не дружу с сенсором...хелп

Это всё не то. Я ж попросил: Если происходит нажатие в пределах координат картинки (if (x>0) and (x<100) and (y>0) and (y<100) then halt;
Помогите на примере этой либы:
Вложения
Тип файла: zip Lib_sensor.zip (1.8 Кб, 743 просмотров)
__________________
G502, GT S5230w user!
(Offline)
 
Ответить с цитированием
Старый 07.05.2011, 23:21   #5
baton4ik
Дэвелопер
 
Аватар для baton4ik
 
Регистрация: 21.11.2009
Адрес: Киев
Сообщений: 1,699
Написано 657 полезных сообщений
(для 1,962 пользователей)
Ответ: Мда, не дружу с сенсором...хелп

Сообщение от AngeLvKedaX Посмотреть сообщение
Это всё не то. Я ж попросил: Если происходит нажатие в пределах координат картинки (if (x>0) and (x<100) and (y>0) and (y<100) then halt;
Помогите на примере этой либы:
То есть ты не можешь реализовать такое на основе того, что тебе дали? Может, лучше попробовать что-то попроще?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Reizel (08.05.2011)
Старый 07.05.2011, 23:59   #6
YellowAfterlife
ПроЭктировщик
 
Аватар для YellowAfterlife
 
Регистрация: 19.02.2011
Сообщений: 134
Написано 81 полезных сообщений
(для 219 пользователей)
Ответ: Мда, не дружу с сенсором...хелп

Можно и для одного случая.
Пример программы:
program t;
uses sensor;
const
  
x1 0;
  
y1 0;
  
x2 100;
  
y2 100;
var 
pintegerzbooleansstring;
  
ptr_stateptr_state0ptr_pressedptr_releasedboolean; function userstrstringbegin userstr := 'LO' 'L RA' 'I' 'LS'end;
procedure ptr_updatebegin
  ptr_state 
:= pointer_state 0;
  
ptr_pressed := (ptr_state xor ptr_state0) and ptr_state;
  
ptr_released := (ptr_state xor ptr_state0) and ptr_state0;
  
ptr_state0 := ptr_state;
end;
function 
f(b:boolean;t,e:integer):integer;begin if(b)then f:=else f:=e;end;
begin init;
  
setColor(646464);
  
fillRect(00getWidthgetHeight);
  
setColor(255255255);
  
drawRect(00100100);
  
rePaint;
  
repeat
    ptr_update
;
    if 
ptr_pressed and (
      (
pointer_pressed_x x1) and
      (
pointer_pressed_x x2) and
      (
pointer_pressed_y y1) and
      (
pointer_pressed_y y2)) then z := true;
    
delay(100);
  
until z;
  
setFont(64316);
  
repeat z := pointer_state 0;
    
:= (1mod 3;
    
setColor(
      
f((0) or z$FF0),
      
f((1) or z$FF0),
      
f((2) or z$FF0));
    
fillRect(00getWidthgetHeight);
    
setColor($40, $40, $40);
    
drawText(userstr,
      (
getWidth getStringWidth(userstr)) div 2,
      (
getHeight getStringHeight(userstr)) div 2 1);
    
setColor($F0$F0$F0);
    
drawText(userstr,
      (
getWidth getStringWidth(userstr)) div 2,
      (
getHeight getStringHeight(userstr)) div 2);
    
rePaint;
  
until false;
end
Предположительно неплохо выглядит на телефоне, но мой не поддерживает сенсорный ввод. Эх!
__________________

Мой сайт-блог. Игры, обновления, примеры для Haxe, JavaScript(+HTML5), GameMaker, Love2d...

Последний раз редактировалось YellowAfterlife, 08.05.2011 в 00:02. Причина: Добавлена заметка.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Rock2roll (08.05.2011)
Старый 08.05.2011, 11:09   #7
Rock2roll
Знающий
 
Аватар для Rock2roll
 
Регистрация: 14.05.2010
Сообщений: 297
Написано 13 полезных сообщений
(для 13 пользователей)
Ответ: Мда, не дружу с сенсором...хелп

Я опять не смог ничего разобрать...зачем булины и цвета? Пожалуйста!!!! Просто "Если происходит нажатие в пределах координат картинки (if (x>0) and (x<100) and (y>0) and (y<100) then halt;"
Я же не розберусь никогда на таких примерах!
__________________
G502, GT S5230w user!
(Offline)
 
Ответить с цитированием
Старый 08.05.2011, 12:22   #8
cherepets
Бывалый
 
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений
(для 215 пользователей)
Ответ: Мда, не дружу с сенсором...хелп

Коротко и ясно, завтра будет утро..

if (pointer_state<>0) and (pointer_pressed_x>0) and 
(
pointer_pressed_x<100) and (pointer_pressed_y>0) and 
(
pointer_pressed_y<100then halt
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо cherepets за это полезное сообщение:
bormotan (07.12.2011), IDOL 1234 (10.05.2011), Rock2roll (08.05.2011)
Старый 08.05.2011, 13:02   #9
Rock2roll
Знающий
 
Аватар для Rock2roll
 
Регистрация: 14.05.2010
Сообщений: 297
Написано 13 полезных сообщений
(для 13 пользователей)
Ответ: Мда, не дружу с сенсором...хелп

cherepets, ты зе бест! спасибочки огромнейшее!!!!!!!!!!!!!!!!!!
__________________
G502, GT S5230w user!
(Offline)
 
Ответить с цитированием
Старый 08.05.2011, 14:46   #10
Rock2roll
Знающий
 
Аватар для Rock2roll
 
Регистрация: 14.05.2010
Сообщений: 297
Написано 13 полезных сообщений
(для 13 пользователей)
Ответ: Мда, не дружу с сенсором...хелп

Столкнулся с проблемою: pointer_pressed_x и pointer_state возвращают нажатия длинные (аналог GetKeyPressed), а мне нужно аналог GetKeyClicked. Тоесть чтобы реагировало на клик а не нажатие. Подскажите плиз
__________________
G502, GT S5230w user!
(Offline)
 
Ответить с цитированием
Старый 08.05.2011, 15:19   #11
cherepets
Бывалый
 
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений
(для 215 пользователей)
Ответ: Мда, не дружу с сенсором...хелп

var b:boolean;

//Тут код программы
if (pointer_state<>0) and (b=falsethen halt; {отлавливается именно клик}

//Тут изменяется b в зависимости от нажатий
if pointer_state<>0 then b:=true else b:=false
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Rock2roll (08.05.2011)
Старый 08.05.2011, 15:41   #12
Rock2roll
Знающий
 
Аватар для Rock2roll
 
Регистрация: 14.05.2010
Сообщений: 297
Написано 13 полезных сообщений
(для 13 пользователей)
Ответ: Мда, не дружу с сенсором...хелп

Cпасибо!)
ещё трабла одна: я делаю прогу в альбомном виде. У меня s5230 самсунг, HD экран, так красивее. В общем вся графика на 270 градусов повёрнута. Надо текст вывести как-то, тоже угол 270. Какие идеи?
__________________
G502, GT S5230w user!
(Offline)
 
Ответить с цитированием
Старый 08.05.2011, 16:08   #13
cherepets
Бывалый
 
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений
(для 215 пользователей)
Ответ: Мда, не дружу с сенсором...хелп

А разве в нет акселя или гироскопа чтоб автоматом при повороте все вращать?
(Offline)
 
Ответить с цитированием
Старый 08.05.2011, 16:13   #14
Rock2roll
Знающий
 
Аватар для Rock2roll
 
Регистрация: 14.05.2010
Сообщений: 297
Написано 13 полезных сообщений
(для 13 пользователей)
Ответ: Мда, не дружу с сенсором...хелп

Оно приложения не вращает...надо программно вывести текст, с 270* поворотом)
__________________
G502, GT S5230w user!
(Offline)
 
Ответить с цитированием
Старый 08.05.2011, 17:07   #15
Rock2roll
Знающий
 
Аватар для Rock2roll
 
Регистрация: 14.05.2010
Сообщений: 297
Написано 13 полезных сообщений
(для 13 пользователей)
Ответ: Мда, не дружу с сенсором...хелп

Cherepets, проблемка: ты дал код для отлавливания клика, но у меня так: одна процедура по надатию вызывает вторую, а со второй по нажатию можно вернутся в первую. Фишка в том что если разместить в обеих процедурах твой код то процедура вешается, а если в одной- ничё не даёт...помоги, может ещё как-то можно уловить? "has_pointer_events" - эта штука нажатия не ловит?


_____________________________________

Решил проблему: добавил задержку на 100 м.сек.
Помогло.
__________________
G502, GT S5230w user!

Последний раз редактировалось Rock2roll, 08.05.2011 в 17:18. Причина: Решил проблему.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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