Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 7, 2010 17:41:52

python4ik
От:
Зарегистрирован: 2010-01-05
Сообщения: 251
Репутация: +  0  -
Профиль   Отправить e-mail  

Пару минуток внимания пожалуйста!

:) Не хочу показаться настырным,занудой!А всё же.Пару вопросиков в точку и закроем тему!
:) У меня если честно,может кто так подумал,нет желания надоедать этой темой кому-то!!!!!!!!!!!!!!!!!!!!!

А потому что у вас из головы вылетает все, что вам говорят!
Сколько раз я уже повторил, что происходит в функции redraw!? Как вы увидите изменения на экране, если вы его не перересовываете его после измененией?
:) Так значит плохо залетело в мою бесову голову.Если бы залетело,то оно уже бы в цепях было и давало бы корни.
Это тоже самое,что допустим возьмём такую отвлечённую ситуацию: меня попросил приезжий обьяснить как в г.Херсоне добраться из района Таврический,
до кинотеатра “Украина”.Я отвечаю ему:тю,шо тут не понятного,берёш так и едеш себе, на маршрутке 20.
Где-то вроде-как какая-то извилина дала прикурить другой извилине,вроде как начала шевелится! после многократного прочтения.
Опять же возьмём известный код,где просто управляеш шариком на экране:
import appuifw, graphics, e32, key_codes  

BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
key_down = None
clicked = None

def handle_event(event):
global clicked, key_down
if event['type'] == appuifw.EEventKey:
if key_down:
key_down = (event['keycode'], "down")
else:
key_down = (event['keycode'], "pressed")
elif event['type'] == appuifw.EEventKeyUp and key_down:
code, mode = key_down
if mode == "pressed":
clicked = code
key_down = None

def key_is_down(code):
if key_down == (code, "down"):
return True
return False

def quit():
global running
running = False

def handle_redraw(rect):
if img: canvas.blit(img)

img = None
canvas = appuifw.Canvas(event_callback=handle_event,
redraw_callback=handle_redraw)
appuifw.app.screen = 'full'
appuifw.app.body = canvas
appuifw.app.exit_key_handler = quit

x = y = 100
w, h = canvas.size
img = graphics.Image.new((w, h))
img.clear(WHITE)

running = True
while running:
if key_is_down(key_codes.EKeyLeftArrow):
x -= 2
elif key_is_down(key_codes.EKeyRightArrow):
x += 2
elif key_is_down(key_codes.EKeyDownArrow):
y += 2
elif key_is_down(key_codes.EKeyUpArrow):
y -= 2

img.clear(WHITE) - это получается,очищается экран каждую долю секунды
img.point((x, y), outline = BLACK, width = 50)
handle_redraw(None) - а эта функция как вызывается? (if img: canvas.blit(img)) тоже
каждую долю секунды?
e32.ao_yield()
Допустим я не сворачиваю прогу,чтобы не вызывалась def handle_redraw(rect):. Нынешняя координата шара (100,100). Нажал я кнопку влево,шар переместился на один пиксель (99,100).Что сработало в этот момент,после нажатия влево? Вызвалась img.clear(WHITE)-это понятно.А
if img: canvas.blit(img) вызывается?
Напишите пожалуйста,что срабатывает в момент нажатия клавы!



Офлайн

#2 Апрель 7, 2010 19:18:43

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Пару минуток внимания пожалуйста!

python4ik
img.clear(WHITE) - это получается,очищается экран каждую долю секунды
img.point((x, y), outline = BLACK, width = 50)
handle_redraw(None) - а эта функция как вызывается? (if img: canvas.blit(img)) тоже каждую долю секунды?
1. Не экран, а изображение img. Просматривайте иногда код полностью, а не построчно, чтоб понять как это все работает в совокупности.
2. Да, будет. Но это является плохим тоном, так как скрипт будет грузить процессор на 100%. Нужно делать паузу.
python4ik
Это тоже самое,что допустим возьмём такую отвлечённую ситуацию: меня попросил приезжий обьяснить как в г.Херсоне добраться из района Таврический,
до кинотеатра “Украина”.Я отвечаю ему:тю,шо тут не понятного,берёш так и едеш себе, на маршрутке 20.
А если он после этого переспрашивает: “А что значит сесть? А на какое место сесть? А что такое 20? А что потом? Сколько стоит проезд? А как ехать? Должен ли я попить перед этим чаю?”…….



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version