×
Namespaces

Variants
Actions

Archived:Usando um cursor em PySymbian

From Nokia Developer Wiki
Jump to: navigation, search

Archived.pngAquivado: Este artigo foi arquivado, pois o conteúdo não é mais considerado relevante para se criar soluções comerciais atuais. Se você achar que este artigo ainda é importante, inclua o template {{ForArchiveReview|escreva a sua justificativa}}.

Acredita-se que este artigo ainda seja válido no contexto original (quando ele foi escrito)


Article Metadata

Artigo
Tradução:
Originado de Using a cursor
Por maiconherverton
Última alteração feita por hamishwillee em 31 May 2013


Você pode mover o cursor. Quando você pressiona a tecla de seleção, um círculo vermelho é desenhado. Quanto mais tempo você pressionar, maior o círculo. Esse exemplo você pode ver aqui: Classe Teclado (Inglês).

import e32
from appuifw import *
from key_codes import *
 
class Keyboard(object):
def __init__(self):
self.state = {} # A tecla está pressionada?
self.buffer= {} # Esperando ser processada?
def handle_event(self, event): # para event_callback
code = event['scancode']
if event['type'] == EEventKeyDown:
self.buffer[code]= 1 # Colocados em fila
self.state[code] = 1
elif event['type'] == EEventKeyUp:
self.state[code] = 0
def pressing(self, code): # Basta verificar
return self.state.get(code,0)
def pressed(self, code): # checa o processo do evento
if self.buffer.get(code,0):
self.buffer[code] = 0 # tira da fila
return 1
return 0
 
key = Keyboard()
app.body = canvas = Canvas(event_callback=key.handle_event)
 
def quit():
global running
running = 0
 
app.exit_key_handler = quit
running = 1
 
#
# Chamada do polígono pode ser mais rápida do que um blit.
#
 
x,y = 20,20
arrow = [(0,0), (0,10), (2,8), (4,12), (6,11), (4,7), (7,7)]
 
while running:
if key.pressing(EScancodeUpArrow):
y -= 1
if key.pressing(EScancodeDownArrow):
y += 1
if key.pressing(EScancodeLeftArrow):
x -= 1
if key.pressing(EScancodeRightArrow):
x += 1
if key.pressed(EScancodeSelect):
r = 1
while key.pressing(EScancodeSelect):
r += 1 # grande círculo vermelho
canvas.ellipse([(x-r,y-r),(x+r,y+r)], fill=0xff0000)
canvas.polygon([(x+dx,y+dy) for dx,dy in arrow], 0, 0xffffff)
e32.ao_sleep(0.03)
 
canvas.clear()
canvas.polygon([(x+dx,y+dy) for dx,dy in arrow], 0, 0xffffff)
e32.ao_sleep(0.01)
This page was last modified on 31 May 2013, at 04:05.
208 page views in the last 30 days.