forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Прочие вопросы (http://forum.boolean.name/forumdisplay.php?f=50)
-   -   Мда, не дружу с сенсором...хелп (http://forum.boolean.name/showthread.php?t=14681)

Rock2roll 07.05.2011 14:04

Мда, не дружу с сенсором...хелп
 
Никак не выходит замутить. Суть в том чтобы осуществить - на экране картинка, координаты 0,0. Ширина- 100, высота-100. Если происходит нажатие в пределах координат картинки (if (x>0) and (x<100) and (y>0) and (y<100) and Нажали на экран then событие. Как сделать? Помогите, умные люди, я блин, чайник)

YellowAfterlife 07.05.2011 14:39

Ответ: Мда, не дружу с сенсором...хелп
 
Вложений: 1
Все зависит от библиотеки... некоторые дают возможность определять момент нажатия на экран, некоторые оставляют это на вас.

Сделал библиотеку первого вида:
Функции:
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 - возращает, поддерживает ли телефон "события движения" (отслеживание положения курсора пока он нажат)
Пример программы:
PHP код:

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:
PHP код:

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



Rock2roll 07.05.2011 15:05

Ответ: Мда, не дружу с сенсором...хелп
 
Спасиб, а можешь пример показать на lib_sensor, и чтобы она делала именно то что я написал. Прошу, это очень важно)

Rock2roll 07.05.2011 22:44

Ответ: Мда, не дружу с сенсором...хелп
 
Вложений: 1
Это всё не то. Я ж попросил: Если происходит нажатие в пределах координат картинки (if (x>0) and (x<100) and (y>0) and (y<100) then halt;
Помогите на примере этой либы:

baton4ik 07.05.2011 23:21

Ответ: Мда, не дружу с сенсором...хелп
 
Цитата:

Сообщение от AngeLvKedaX (Сообщение 187752)
Это всё не то. Я ж попросил: Если происходит нажатие в пределах координат картинки (if (x>0) and (x<100) and (y>0) and (y<100) then halt;
Помогите на примере этой либы:

То есть ты не можешь реализовать такое на основе того, что тебе дали? Может, лучше попробовать что-то попроще?

YellowAfterlife 07.05.2011 23:59

Ответ: Мда, не дружу с сенсором...хелп
 
Можно и для одного случая.
Пример программы:
PHP код:

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

Предположительно неплохо выглядит на телефоне, но мой не поддерживает сенсорный ввод. Эх!

Rock2roll 08.05.2011 11:09

Ответ: Мда, не дружу с сенсором...хелп
 
Я опять не смог ничего разобрать...зачем булины и цвета? Пожалуйста!!!! Просто "Если происходит нажатие в пределах координат картинки (if (x>0) and (x<100) and (y>0) and (y<100) then halt;"
Я же не розберусь никогда на таких примерах!

cherepets 08.05.2011 12:22

Ответ: Мда, не дружу с сенсором...хелп
 
Коротко и ясно, завтра будет утро..

PHP код:

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


Rock2roll 08.05.2011 13:02

Ответ: Мда, не дружу с сенсором...хелп
 
cherepets, ты зе бест! спасибочки огромнейшее!!!!!!!!!!!!!!!!!!

Rock2roll 08.05.2011 14:46

Ответ: Мда, не дружу с сенсором...хелп
 
Столкнулся с проблемою: pointer_pressed_x и pointer_state возвращают нажатия длинные (аналог GetKeyPressed), а мне нужно аналог GetKeyClicked. Тоесть чтобы реагировало на клик а не нажатие. Подскажите плиз

cherepets 08.05.2011 15:19

Ответ: Мда, не дружу с сенсором...хелп
 
PHP код:

var b:boolean;

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

//Тут изменяется b в зависимости от нажатий
if pointer_state<>0 then b:=true else b:=false


Rock2roll 08.05.2011 15:41

Ответ: Мда, не дружу с сенсором...хелп
 
Cпасибо!)
ещё трабла одна: я делаю прогу в альбомном виде. У меня s5230 самсунг, HD экран, так красивее. В общем вся графика на 270 градусов повёрнута. Надо текст вывести как-то, тоже угол 270. Какие идеи?

cherepets 08.05.2011 16:08

Ответ: Мда, не дружу с сенсором...хелп
 
А разве в нет акселя или гироскопа чтоб автоматом при повороте все вращать?

Rock2roll 08.05.2011 16:13

Ответ: Мда, не дружу с сенсором...хелп
 
Оно приложения не вращает...надо программно вывести текст, с 270* поворотом)

Rock2roll 08.05.2011 17:07

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


_____________________________________

Решил проблему: добавил задержку на 100 м.сек.
Помогло.


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot