Массив всех графических объектов Objects
Массив всех графических объектов Objects
В модуле ABCObjects определен динамический массив Objects, который хранит все созданные графические объекты. Он принадлежит к типу ObjectsABCArray, определенному в ABCObjects. Для массива Objects определены всего 2 операции: Objects.Count возвращает количество графических объектов, а Objects[i] возвращает i-тый графический объект (типа ObjectABC, нумерация осуществляется с 0).
Использование массива Objects позволяет единообразно обращаться ко всем графическим объектам, вызывая для них любые методы и обращаясь к любым свойствам класса ObjectABC.
Пример 1. Броуновское движение объектов.
uses ABCObjects;
var i:integer;
begin
for i:=1 to 30 do
new CircleABC(Random(WindowWidth),Random(WindowHeight),20,clRandom);
while True do
for i:=0 to Objects.Count-1 do
Objects[i].MoveOn(Random(3)-1,Random(3)-1);
end.
В этом примере создается 30 объектов CircleABC. Поскольку все они сохраняются в массиве Objects, при их создании результат вызова конструктора не присваивается никакой переменной. После создания все объекты начинают перемещаться в бесконечном цикле на случайный вектор, совершая броуновское движение.
Пример 2. Изменение свойств объектов заданного типа.
uses ABCObjects;
var i:integer;
begin
for i:=1 to 30 do
case Random(2) of
0: new CircleABC(Random(WindowWidth),Random(WindowHeight),20,clRandom);
1: new RegularPolygonABC(Random(WindowWidth), Random(WindowHeight), 20, 3, clRandom);
end;
while True do
for i:=0 to Objects.Count-1 do
if Objects[i] is RegularPolygonABC then
RegularPolygonABC(Objects[i]).Angle := RegularPolygonABC(Objects[i]).Angle + 1;
end.
В этом примере создается 30 объектов CircleABC или RegularPolygonABC. Затем в бесконечном цикле вращаются только объекты RegularPolygonABC. Вращение достигается увеличением свойства Angle, которое определено только в классе RegularPolygonABC. Для установки принадлежности объекта к классу RegularPolygonABC используется операция is, после чего объект Objects[i] преобразуется к типу RegularPolygonABC при помощи операции приведения типа.
Пример 3. Удаление всех графических объектов, пересекшихся с объектом p:
for i:=Objects.Count-1 downto 0 do
if (Objects[i]<>p) and (p.Intersects(Objects[i]) then
Objects[i].Destroy;
В играх часто нужно удалить все графические объекты, которые настиг объект p. Для этого следует перебрать все графические объекты за исключением самого p и проверить их на предмет пересечения с p. Удаление осуществляется вызовом деструктора соответствующего объекта. Отметим также, что в результате удаления количество объектов уменьшается, поэтому следует перебирать объекты от конца к началу.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Вставка в веб-документ графических объектов
Вставка в веб-документ графических объектов Поскольку в настоящее время большинство сайтов имеет те или иные графические объекты, возможности программы NeonHtml предусматривают не только вставку изображений в документ, но и максимальную автоматизацию данного процесса.
Вставка графических объектов
Вставка графических объектов В данном разделе мы рассмотрим, каким образом в веб-документ можно вставить изображение, картинку или иной графический объект. Отметим, что возможности программы предусматривают вставку графических объектов тремя способами. Первый
1996 г.: война всех против всех
1996 г.: война всех против всех Избрание Билла Клинтона не повернуло вспять волну дерегулирования. Ему пришлось согласиться, что «эпоха большого правительства» закончена — мнение, которое относилось как к режиму вмешательства властей в экономику, так и к концепции
Просмотр всех объектов базы данных с помощью хранимой процедуры sp_help
Просмотр всех объектов базы данных с помощью хранимой процедуры sp_help SQL Server позволяет просмотреть все объекты, доступные в любой базе данных. Это можно сделать с помощью хранимой процедуры (stored procedure) – небольшого кода, хранящегося и выполняемого на сервере. Просмотреть
Прямоугольный массив
Прямоугольный массив Для создания прямоугольного массива установите переключатель в окне Array (Массив) в положение Rectangular Array (Прямоугольный массив). При этом станут доступны следующие параметры.• Для изменения количества строк и столбцов используют поля Rows (Строки) и
IB Objects
IB Objects Этот продукт объединяет две давно известные системы компонентов для Firebird и InterBase, которые позволяют разработчикам использовать инструменты Borland IDE (Delphi, Kylix, и Borland C++ Builder) для реализации всех возможностей Firebird. Одна система совместима с библиотеками Borland TDataset и
Массив компонентов…
Массив компонентов… Возможно ли создание массива компонентов? Для показа статуса я использую набор LED-компонентов и хотел бы иметь к ним доступ, используя массив.Прежде всего необходимо объявить массив:LED: array[1..10] of TLed; (10 элементов компонентного типа TLed)При
Полярный массив
Полярный массив Для создания полярного массива установите переключатель в окне Array (Массив) в положение Polar Array (Полярный массив) (рис. 6.11). Рис. 6.11. Окно создания полярного массиваПри этом становятся доступны следующие параметры.• Поля X и Y служат для указания центра
Трехмерный массив
Трехмерный массив Для создания трехмерного массива используется команда 3DARRAY. Как и на плоскости, в трехмерном пространстве можно создать два типа массива – прямоугольный и круговой. Только при формировании прямоугольного массива в качестве дополнительного параметра
Прямоугольный массив
Прямоугольный массив В трехмерном пространстве, кроме строк и столбцов, в прямоугольном массиве добавляются еще и уровни.Чтобы создать трехмерный прямоугольный массив, нажмите кнопку 3D Array (Трехмерный массив) на вкладке Home (Основная) в группе Modify (Редактирование) ленты
Круговой массив
Круговой массив Чтобы создать круговой трехмерный массив, нажмите кнопку 3D Array (Трехмерный массив) на вкладке Home (Основная) в группе Modify (Редактирование) ленты или выполните команду Modify ? 3D Operations ? 3D Array (Редактирование ? Трехмерные операции ? Трехмерный массив).Пример
Ускорение перерисовки графических объектов
Ускорение перерисовки графических объектов Для обеспечения быстрой перерисовки используется следующий прием: в начале программы вызывается LockDrawingObjects, а при необходимости перерисовать весь экран – специальная процедура RedrawObjects. Отключается режим вызовом
ABCObjects: контейнеры графических объектов
ABCObjects: контейнеры графических объектов Класс ContainerABC представляет собой контейнер графических объектов. Он также является потомком ObjectABC, но при создании не содержит ни одного объекта. Он добавляет следующий интерфейс: procedure Add(g: ObjectABC); property Count: integer; // количество
Smarter Objects: виртуальное взаимодействие с реальными объектами Николай Маслухин
Smarter Objects: виртуальное взаимодействие с реальными объектами Николай Маслухин Опубликовано 07 мая 2013 Медиалаборатория Массачусетского технологического института (MIT Media Lab) представила новую технологию взаимодействия с физическими объектами на
Урок 5.8. Вставка графических объектов в документ
Урок 5.8. Вставка графических объектов в документ Кроме автофигур в документы Word 2007 можно вставлять и другие графические объекты: рисунки из файлов, картинки из коллекции, диаграммы, фигурный текст, формулы и т. д. Особенности работы с этими объектами мы рассмотрим в этом