|
Прочие вопросы Вопросы не касающиеся программирования (установка, настройка...) |
07.05.2011, 14:04
|
#1
|
Знающий
Регистрация: 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
|
ПроЭктировщик
Регистрация: 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 f: integer; begin f := 64; repeat ptr_update; setColor(f, f, f); fillRect(0, 0, getWidth, getHeight); if (f < 128) then setColor(255, 255, 255) else setColor(0, 0, 0); drawText('X: ' + ptr_x + '; Y: ' + ptr_y, 0, 0); if ptr_pressed > 0 then f := Random(255); rePaint; delay(32); forever end.
Добавлено:
Пример на Lib_sensor:
program t; uses sensor; var f: integer; ptr_state, ptr_state0, ptr_pressed, ptr_released: boolean; procedure ptr_update; begin 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(f, f, f); fillRect(0, 0, getWidth, getHeight); if (f < 128) then setColor(255, 255, 255) else setColor(0, 0, 0); drawText('X: ' + pointer_dragged_x + '; Y: ' + pointer_dragged_y, 0, 0); if ptr_pressed then f := Random(255); rePaint; delay(32); forever end.
__________________
Мой сайт-блог. Игры, обновления, примеры для Haxe, JavaScript(+HTML5), GameMaker, Love2d...
Последний раз редактировалось YellowAfterlife, 07.05.2011 в 15:15.
Причина: Добавил ответ на сообщение ниже.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо YellowAfterlife за это полезное сообщение:
|
|
07.05.2011, 15:05
|
#3
|
Знающий
Регистрация: 14.05.2010
Сообщений: 297
Написано 13 полезных сообщений (для 13 пользователей)
|
Ответ: Мда, не дружу с сенсором...хелп
Спасиб, а можешь пример показать на lib_sensor, и чтобы она делала именно то что я написал. Прошу, это очень важно)
__________________
G502, GT S5230w user!
|
(Offline)
|
|
07.05.2011, 22:44
|
#4
|
Знающий
Регистрация: 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)
|
|
07.05.2011, 23:21
|
#5
|
Дэвелопер
Регистрация: 21.11.2009
Адрес: Афула
Сообщений: 1,700
Написано 658 полезных сообщений (для 1,963 пользователей)
|
Ответ: Мда, не дружу с сенсором...хелп
Сообщение от AngeLvKedaX
Это всё не то. Я ж попросил: Если происходит нажатие в пределах координат картинки (if (x>0) and (x<100) and (y>0) and (y<100) then halt;
Помогите на примере этой либы:
|
То есть ты не можешь реализовать такое на основе того, что тебе дали? Может, лучше попробовать что-то попроще?
__________________
kali surgeon
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
07.05.2011, 23:59
|
#6
|
ПроЭктировщик
Регистрация: 19.02.2011
Сообщений: 134
Написано 81 полезных сообщений (для 219 пользователей)
|
Ответ: Мда, не дружу с сенсором...хелп
Можно и для одного случая.
Пример программы:
program t; uses sensor; const x1 = 0; y1 = 0; x2 = 100; y2 = 100; var p: integer; z: boolean; s: string; ptr_state, ptr_state0, ptr_pressed, ptr_released: boolean; function userstr: string; begin userstr := 'LO' + 'L RA' + 'I' + 'LS'; end; procedure ptr_update; begin 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:=t else f:=e;end; begin init; setColor(64, 64, 64); fillRect(0, 0, getWidth, getHeight); setColor(255, 255, 255); drawRect(0, 0, 100, 100); 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(64, 3, 16); repeat z := pointer_state > 0; p := (p + 1) mod 3; setColor( f((p = 0) or z, $FF, 0), f((p = 1) or z, $FF, 0), f((p = 2) or z, $FF, 0)); fillRect(0, 0, getWidth, getHeight); 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)
|
|
Сообщение было полезно следующим пользователям:
|
|
08.05.2011, 11:09
|
#7
|
Знающий
Регистрация: 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
|
Бывалый
Регистрация: 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<100) then halt;
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо cherepets за это полезное сообщение:
|
|
08.05.2011, 13:02
|
#9
|
Знающий
Регистрация: 14.05.2010
Сообщений: 297
Написано 13 полезных сообщений (для 13 пользователей)
|
Ответ: Мда, не дружу с сенсором...хелп
cherepets, ты зе бест! спасибочки огромнейшее!!!!!!!!!!!!!!!!!!
__________________
G502, GT S5230w user!
|
(Offline)
|
|
08.05.2011, 14:46
|
#10
|
Знающий
Регистрация: 14.05.2010
Сообщений: 297
Написано 13 полезных сообщений (для 13 пользователей)
|
Ответ: Мда, не дружу с сенсором...хелп
Столкнулся с проблемою: pointer_pressed_x и pointer_state возвращают нажатия длинные (аналог GetKeyPressed), а мне нужно аналог GetKeyClicked. Тоесть чтобы реагировало на клик а не нажатие. Подскажите плиз
__________________
G502, GT S5230w user!
|
(Offline)
|
|
08.05.2011, 15:19
|
#11
|
Бывалый
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений (для 215 пользователей)
|
Ответ: Мда, не дружу с сенсором...хелп
var b:boolean;
//Тут код программы if (pointer_state<>0) and (b=false) then halt; {отлавливается именно клик}
//Тут изменяется b в зависимости от нажатий if pointer_state<>0 then b:=true else b:=false;
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
08.05.2011, 15:41
|
#12
|
Знающий
Регистрация: 14.05.2010
Сообщений: 297
Написано 13 полезных сообщений (для 13 пользователей)
|
Ответ: Мда, не дружу с сенсором...хелп
Cпасибо!)
ещё трабла одна: я делаю прогу в альбомном виде. У меня s5230 самсунг, HD экран, так красивее. В общем вся графика на 270 градусов повёрнута. Надо текст вывести как-то, тоже угол 270. Какие идеи?
__________________
G502, GT S5230w user!
|
(Offline)
|
|
08.05.2011, 16:08
|
#13
|
Бывалый
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений (для 215 пользователей)
|
Ответ: Мда, не дружу с сенсором...хелп
А разве в нет акселя или гироскопа чтоб автоматом при повороте все вращать?
|
(Offline)
|
|
08.05.2011, 16:13
|
#14
|
Знающий
Регистрация: 14.05.2010
Сообщений: 297
Написано 13 полезных сообщений (для 13 пользователей)
|
Ответ: Мда, не дружу с сенсором...хелп
Оно приложения не вращает...надо программно вывести текст, с 270* поворотом)
__________________
G502, GT S5230w user!
|
(Offline)
|
|
08.05.2011, 17:07
|
#15
|
Знающий
Регистрация: 14.05.2010
Сообщений: 297
Написано 13 полезных сообщений (для 13 пользователей)
|
Ответ: Мда, не дружу с сенсором...хелп
Cherepets, проблемка: ты дал код для отлавливания клика, но у меня так: одна процедура по надатию вызывает вторую, а со второй по нажатию можно вернутся в первую. Фишка в том что если разместить в обеих процедурах твой код то процедура вешается, а если в одной- ничё не даёт...помоги, может ещё как-то можно уловить? "has_pointer_events" - эта штука нажатия не ловит?
_____________________________________
Решил проблему: добавил задержку на 100 м.сек.
Помогло.
__________________
G502, GT S5230w user!
Последний раз редактировалось Rock2roll, 08.05.2011 в 17:18.
Причина: Решил проблему.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:28.
|