User Tools

Site Tools


ro:clickb

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

ro:clickb [2017/09/12 04:41]
junior-root
ro:clickb [2020/02/28 10:46]
Line 1: Line 1:
-===== ClickB (Funcție) ===== 
-> **Engleză:** //**CLICK** = clic; **B**utton = buton// 
-==== Format ==== 
-**clickb**\\ 
-**clickb** ( ) 
- 
-Întoarce un [[integerexpressions|număr_întreg]]. 
-==== Descriere ==== 
-Întoarce butonul cu care s-a dat clic cu mouse-ul ultima dată în fereastra grafică. Întoarce valoarea 0 dacă nu s-a făcut clic. 
-{{page>mousebuttonconstants}} 
-==== Exemplu ==== 
-<code> 
-loop: 
-cls 
-print "mousex = "; mousex 
-print "mousey = "; mousey 
-print "mouseb = "; mouseb 
-print 
-print "clickx = "; clickx 
-print "clicky = "; clicky 
-print "clickb = "; clickb 
- 
-pause 0.05 
-goto loop 
-</code> 
-==== Exemplul doi ==== 
-<code> 
-# șterge orice clic făcut mai devreme 
-clickclear 
-# așteaptă pentru ca utilizatorul să dea clic 
-print "Fă clic pe fereastra grafică" 
-while clickb = 0 
-  pause .01 
-endwhile 
-# Arată unde s-a făcut clic 
-print "Utilizatorul a dat clic la (x=" + clickx + ", y=" + clicky + ")" 
-</code> 
-==== Notă ==== 
-Funcția **ClickB** va întoarce întotdeauna valoarea unui singur buton, deoarece un utilizator nu poate da clic cu două butoane în exact același moment.\\ 
-Dacă se dorește să se verifice dacă utilizatorul a dat clic cu un anumit buton (să spunem cel din stânga) se poate compara astfel: 
-<code> 
-if clickb = MOUSEBUTTON_LEFT then print "a fost apăsat butonul din stânga"; 
-</code> 
-Deși funcția **ClickB** poate întoarce valoarea unui singur buton apăsat, ea mai poate detecta și acțiunea de dublu clic (două clicuri rapide și succesive cu același buton în aproximativ același loc). În cazul în care utilizatorul execută un dublu clic, atunci valoarea întoarsă va conține valoare butonului care a generat clicul la care se va adăuga și valoarea MOUSEBUTTON_DOUBLECLICK.\\ 
-Dacă se dorește să se verifice dacă utilizatorul a executat un dublu clic cu butonul din stânga se poate compara cu oricare din variantele: 
-<code> 
-if clickb = MOUSEBUTTON_LEFT + MOUSEBUTTON_DOUBLECLICK then print "a fost apăsat butonul din stânga"; 
-if clickb = MOUSEBUTTON_LEFT & MOUSEBUTTON_DOUBLECLICK then print "a fost apăsat butonul din stânga"; 
-</code> 
-**Atenție:** În cazul executării unui dublu clic, BASIC-256 va detecta mai întâi clicul inițial și va semnaliza prin funcția **ClickB** butonul apăsat. Dacă se execută un dublu clic, doar al doilea clic **ClickB** va conține atât valoare butonului cu care s-a făcut clic, cât și valoarea MOUSEBUTTON_DOUBLECLICK.\\ 
-Pentru a detecta un clic făcut cu butonul din stânga, indiferent că este un simplu clic sau este un dublu clic, se poate verifica astfel: 
-<code> 
-if (clickb & MOUSEBUTTON_LEFT) then print "a fost apăsat butonul din stânga"; 
-</code> 
- 
- 
-==== Exemplu cu detectarea butoanelor și a dublu clicului ==== 
-<code> 
-# șterge orice clic făcut mai devreme 
-clickclear 
-print "Fă clic pe fereastra grafică" 
-# așteaptă pentru ca utilizatorul să dea clic 
-while clickb = 0 
-  pause .01 
-endwhile 
- 
-pause 0.5 # utilizatorul a dat clic, totuși acordăm un pic de timp ca să vedem dacă utilizatorul execută un dublu clic 
- 
-# Arată unde s-a făcut clic 
-print "Utilizatorul a dat clic cu "; 
-if clickb & MOUSEBUTTON_LEFT then print "butonul din stânga"; 
-if clickb & MOUSEBUTTON_RIGHT then print "butonul din dreapta"; 
-if clickb & MOUSEBUTTON_CENTER then print "butonul din mijloc"; 
-print " la (x=" + clickx + ", y=" + clicky + ")" 
- 
-if clickb & 32 then print "De fapt utilizatorul a făcut un dublu clic!... :)" #replace 32 with constant MOUSEDOUBLECLICK 
-</code> 
-==== Exemplu complex ==== 
-<code> 
-# Să dăm clic și dublu clic! - Florin Oprea 
-col={red,darkred,green,darkgreen,blue,darkblue,cyan,darkcyan,purple,darkpurple,yellow,darkyellow,orange,darkorange,grey,darkgrey} 
- 
-graphsize 300, 300 
-clg 
-fastgraphics 
-penwidth 2 
- 
-xx = 0 
-yy = 0 
-patrat_x = 0 
-patrat_y = 0 
-patrat_s = 0 
-patrat_c = 0 
- 
-bucla: 
-# efect de desenare 
-if patrat_s <> 0 then 
-  patrat_s = patrat_s + 20 
-  patrat_x = patrat_x - 10 
-  patrat_y = patrat_y - 10 
-  color col[patrat_c] 
-  rect patrat_x, patrat_y, patrat_s, patrat_s 
-  if patrat_x<=0 and patrat_y<=0 and patrat_x+patrat_s>=300 and patrat_y+patrat_s>=300 then patrat_s = 0 
-end if 
- 
-# desenează culori 
-c=0 
-for y = 50 to 200 step 50 
-  for x = 50 to 200 step 50 
- 
-    # verifică dacă este dat un clic în pătrat 
-    if clickb & MOUSEBUTTON_LEFT and clickx>=x and clickx<=x+30 and clicky>=y and clicky<=y+30 then 
-      xx = x 
-      yy = y 
-      # verifică dacă este un dublu clic 
-      if clickb & 32 then 
-        patrat_x = x 
-        patrat_y = y 
-        patrat_s = 30 
-        patrat_c = c 
-      end if 
-      clickclear 
-    end if 
- 
-    # desenează pătrat 
-    if xx=x and yy=y then 
-      color white,col[c] 
-    else 
-      color black,col[c] 
-    end if 
-    c++ # incrementeză indexul de culoare 
-    rect x, y, 30 ,30 
-  next x 
-next y 
- 
-refresh 
-pause 0.1 
-goto bucla 
-</code> 
- 
-==== Vezi și ==== 
-{{page>ro:start#Mouse&noheader}} 
-==== Istoric ====  
-|0.9.4d|Adăugată în acestă versiune| 
-|1.99.99.58|S-au adăugat numele constantelor pentru butoane| 
  
ro/clickb.txt · Last modified: 2020/02/28 10:46 (external edit)