Хочешь писать сайты на Django? Сейчас акция получить подарки. Python + Django Framework 1.7; 1.8; 1.9; 2.0 - школа практического программирования В. Бовсуновского

  Kivy (Python под Android) - школа практического программирования В. Бовсуновского.

Школа программирования Бовсуновского Kivy
Школа программирования Бовсуновского Kivy

Menu


К списку категорий

Подписаться на Ютуб, получать новые видео. ×

Шаг 39. Динамическое рисование. Понимание функций обратного вызова.


Изображение



Описание

В этом курсе мы будем писать классы динамического рисования фигур.

Важно понять метод, такой как функции обратного вызова (callback - читается калбек).

 



Статья

Я в курсе объяснил что такое функции обратного вызова. так же мы писали классы с использованием функций обратного вызова.

Немного теории.

Функции обратного вызова используются, когда нечто меняется.

То есть постоянно меняются значения.

Представьте себе вы написали онлайн игру про рисование кругов (пример символический, круги взяты, что бы бло просто понятно).

А теперь представим один пользователь рисует круг, заметьте при увеличении круга постоянно меняются координаты.

А теперь представьте 100 пользователей рисует круг (каждый из 100).

Если бы любой язык запоминал в память все изменение координат, но никакой памяти бы не хватило.

Вот и нашли выход, сохранять определённые состояния.

То есть сохранять состояния при наступлении, какого-либо действия.

Действия. как методы мы описываем в классах, kivy нам представляет сами функции обратного вызова, например bind(), unbind().

Как это работает?

Мы описали метод, когда создаётся круг

и описали метод обновления фигуры (когда пользователь увеличивает круг).

Алгоритм такой. Пользователь поставил палец на планшет, kivy определил точку касания.

Пользователь начал рисовать круг (растягивая его), смотретие рисунок.

На рисунке маленька точка это. когда пользователь поставил палец на планшет, далее круг меньше и круг больше.

И видете 4 точки в круге, по которым можно нарисовать круг. Так вот в этом и есть смысл функций обратного вызовва.

Kivy используя функции обратного вызова сохраняет в памяти не все координаты, а только те которые являются ключевыми.

Вот эти ключевые точки, как состояния мы и опишам в методах класса, например обновление фигуры и конец рисования.

update_figure() - пока пользователь рисует круг, просто меняются координаты без запоминания (в памяти ничего), а это сокрость работы.

end_figure()- пользователь отпустил, сработала функция, закончить рисование и запомнила всего 4 точки (чёрные на круге) и фигура отобразилась.

В итоге kivy запомнил всего 4 точки в памяти. А все оставльные координаты просто читал.

На выходе получаем, память не грузится, скорость большая и результат (нанрисованный круг) на лицо.

 

Наша с вами задача в этом уроке научится притменять функции обратного вызова в динамическом рисовании.

Давайте научимся, перейти к шагу 39.

Обязательно выполните домашнее задание.

 

И не переживайте, что бы уделить больше времени и разобраться основательно вы разобъём на 5 курсов эту тему и изучим основательно, что бы вы могли реально писать приложения.

 





Рекомендации

Домашнее задание. Так как в kivy работая с динамическими фигурами, вы постоянно будете использовать функции обратного вызова.

В Kivy это такие функции, как bind(), unbind() и др. - мы их будетм применять.

Я же вас попрошу, что бы более детально разобраться в общем в логистике функций обратного вызова, найти примеры в интрнет относительно Python, повторяю Kivy мы разберём, но обязательно найти примеры в интернет относительно работы

функций обратного вызова в чистом пайтон, ведь смысл везде один и тот же.

Так будете потятнее смысл работы функций обратного вызова или как из называют функций callback.

Вот саом задание.

Ввести в поиске фразы:

функции обратного вызова в Python.

функции callback в python

example callback Python

Эти примеры проделать, объяснить и сбросить в группу в эту рубрику.

(Помните помогая другим вы помогаете себе).



2016-11-07 09:37:51+00:00

К списку категорий




Практика программирования Python для Android.

Сделан на: Python-2.7.8; Django 1.8.8 - научиться; Хостинг "Джино"; Дизайн - Foundation-6;