Программирование HTML Создание объекта в Clickteam Fusion 2.5 Wed, October 17 2018  

Поделиться

нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Создание объекта в Clickteam Fusion 2.5 Печать
Добавил(а) microsin   

Руководство [1] научит Вас двум способам, которыми можно создавать объекты во время выполнения приложения (runtime) в Clickteam Fusion 2.5 (CTF). Можно создавать объекты статически (Static Object Creation) и динамически (Dynamic Object Creation).

В чем разница этих двух способов? Статический способ создания подразумевает присвоение объекту определенного набора предустановленных свойств по умолчанию, который Вы можете редактировать в момент проектирования приложения. Динамический способ подразумевает создание объекта, когда программа уже работает, создание происходит с обращением к реальному имени объекта.

Следует хорошо разделять термины "во время разработки" (design-time) и "во время работы приложения" (runtime). Иногда удобно создавать объекты посреди процесса игры (когда программа работает), а иногда в процессе создания игры. В этом руководстве подробно рассматриваются оба способа создания объектов - статически и динамически.

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

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

Чтобы объяснить это, рассмотрим простой пример. Предположим, у Вас есть 5 объектов с именами Object 1, Object 2, Object 3, Object 4, Object 5. Вы можете захотеть, чтобы пользователь выбрал, какой объект нужно создать. Если это делать статически, то тогда нужно создать событие для каждого объекта наподобие следующих:

User Clicks on Button + List = "Object 1"
   Create Object 1
User Clicks on Button + List = "Object 2"
   Create Object 2
User Clicks on Button + List = "Object 3"
   Create Object 3

Если же создавать объект динамически, то Вы можете сделать выбор объекта напрямую по его имени, используя переменную, примерно так:

User Clicks on Button
   Create "Object"+Str$(number)

Таким образом, с динамическим созданием объекта мы избавились от 5 событий, оставив только одно. Далее все это будет рассмотрено подробнее.

[Статическое создание объекта]

В этом примере мы рассмотрим создание объекта во время выполнения программы, статическим способом. Сделать это очень просто. Далее процесс по шагам.

1. Создайте новое приложение через меню File -> New. Перейдите в фрейм Frame 1. Здесь нам предстоит создать некоторые объекты, которые мы будем использовать во время выполнения программы (runtime).

2. Выберите в меню Insert -> New Object, и вставьте новый Active Object.

Clickteam Fusion Insert New Object Clickteam Fusion Insert New Object Active

Объект появится на экране фрейма.

3. Сделайте двойной клик на вставленном объекте, откроется окно его редактирования (также можно сделать правый клик на объекте, и в контекстном меню выбрать Edit). Колесиком прокрутки можно увеличить/приблизить объект.

Clickteam Fusion Edit Active Object

4. Выберите инструмент заливки (paint bucket), выберите цвет (например голубой, Blue) и установите Tolerance level в значение 100 (чтобы легче было заполнить объект целиком одним цветом). Залейте объект синим. Кликните Ok.

Clickteam Fusion Active Object blue filled

Объект появится на экране редактора фрейма, уже раскрашенный в синий цвет. Теперь нам предстоит настроить свойства объекта.

5. Выберите объект на фрейме, и перейдите в окно его свойств (Properties). Откройте 4-ю закладку свойств (RunTime Options) и снимите галочку Create at start (потому что мы хотим создавать объект во время работы программы).

Clickteam Fusion Active Object uncheck Create at start

6. Откройте последнюю, седьмую закладку свойств объекта (About). Переименуйте объект из "Active" в "Object 1", изменив его свойство Name.

Clickteam Fusion Active Object rename

7. Выполните правый клик на объекте, и выберите Clone Object. Выполните клонирование так, чтобы получилось 3 объекта, при этом Fusion автоматически будет назначать объектам имена с инкрементом (Object 2, Object 3). Отредактируйте эти объекты, назначив им другие цвета (чтобы просто их потом можно было различить при создании).

Clickteam Fusion Active Object Clone dialog Clickteam Fusion Active Object 3 clones

8. Откройте Event Editor (Ctrl+E). Это нам нужно для создания обработчика события нажатия на клавишу клавиатуры. При нажатии на клавишу мы будем создавать объект в случайной позиции экрана. Вставите новое условие, выполните правый клик на столбце Keyboard & Mouse, и выберите The Keyboard -> Upon Pressing a Key.

Clickteam Fusion create event press key

Когда отобразится приглашение нажатия, нажмите клавишу 1.

Clickteam Fusion create event press key ask

Будет создано новое событие Upon pressing "1".

9. Переместите курсор мыши в пересечение строки события и столбца Create new objects, сделайте правый клик на клетку пересечения, и выберите Create object.

Clickteam Fusion create event action Create object

В окне диалога выберите первый объект "Object 1", и кликните OK, и в следующем приглашении снова OK. Сделайте правый клик в пересечении строки события и столбца Object 1, и выберите Position -> Set X coordinate..., в диалоге установки координаты выберите Random(640). То же самое сделайте для Position -> Set Y coordinate..., только выберите Random(480). Этими действиями мы задали создание объекта Object 1 со случайной позицией на экране.

Clickteam Fusion create event action Position XY

Повторите шаги 8 и 9 для объектов Object 2 и Object 3, только для Object 2 выберите для события цифровую клавишу 2, а для Object 3 цифровую клавишу 3. Подсказка: можно перетаскивать зеленые галочки в редакторе событий, копируя нужные действия.

Clickteam Fusion create all event actions

Попробуйте, как работает приложение (F8). При нажатии клавиш 1, 2 и 3 на экране будут создаваться объекты Object 1, Object 2 и Object 3 соответственно.

[Динамическое создание объекта]

Здесь мы будем отслеживать, какая клавиша нажата, и в зависимости от этого будем создавать нужный объект. После создания объекта мы будем сбрасывать сохраненное значение клавиши, чтобы не делать повторных созданий объекта. Мы увидим, что динамическим способом можно создавать 1, 2, 3, 10, 100 и большее количество объектов, используя для этого всего лишь одно условие, вместо создания 1, 2, 3, 10 и т. д. условий. Это экономит время, рабочую нагрузку и упрощает программу. Далее процесс по шагам.

1. Создайте новое приложение через меню File -> New. Перейдите в фрейм Frame 1.

2. Откройте редактор фрейма для Frame 1. Вставьте во фрейм объект Keyboard Object (меню Insert -> New Object, откроется диалоговое окно Create new object).

Примечание: возможно, что Keyboard Object еще не установлен в Вашей системе CTF. Тогда в диалоговом окне Create new object нажмите кнопку Manager. Откроется менеджер расширений (диалог Extension manager), найдите в его списке Keyboard Object, и нажмите напротив него ссылку Install. После этого Вы сможете обычным образом вставить во фрейм Keyboard Object.

Clickteam Fusion Insert Keyboard Object

Вставьте Keyboard Object в любое место фрейма (его позиция не имеет значения).

3. Повторите шаги 2..7 из предыдущего примера, где мы создавали объекты статически. Выберите сразу все 3 объекта Object 1, Object 2 и Object 3, перейдите на третью закладку (Movement) их свойств и выберите в выпадающем списке свойства Type вариант Bouncing Ball. Это будет означать, что объекты после создания начнут движение.

4. Перейдите в окно редактора событий (Event Editor, Ctrl+E). Теперь начнется настоящая магия - мы создадим только одно событие, в котором сможем создавать неограниченное количество объектов без необходимости создавать событие для каждого.

Вставьте новое условие события (двойным кликом на New condition), выберите Keyboard Object, и выберите Upon Key Down.

Clickteam Fusion Insert Keyboard Object condition Upon Key Down

После этого выбора откроется окно Key number, где нужно задать, какую кнопку нужно обработать. Здесь нам нужно определить, была ли нажата кнопка 1, 2 или 3. Сделайте правый клик на Keyboard Object, и выберите Last key pressed. В окне ввода появится выражение LastKeyPressed( "Keyboard object" ).

Clickteam Fusion Insert Keyboard Object condition Upon Key Down LastKeyPressed

Кликните OK, нами создано обрабатываемое условие.

5. Теперь, как в прошлом примере, переместите курсор мыши вдоль строки события до столбца Create new objects, и выберите действие Create Object By Name.

Clickteam Fusion Keyboard Object Action Create Object By Name

Когда ранее мы делали выбор в редакторе расширения для обработки нажатия клавиши Keyboard Object, то использовали значение последней нажатой клавиши (LastKeyPressed). Вспомните, что мы назначили нашим объектам имена Object 1, Object 2 и Object 3, поэтому мы можем для создания объекта применить выражение "Object "+Str$(LastKeyPressed). Слово "Object " является строкой, однако номер нажатой клавиши это число, поэтому мы применили Str$ для преобразования числа в строку. Таким образом, число 1 станет строкой "1", число 2 станет строкой "2" и т. д.

Введите для действия Create object by name в редакторе выражений следующий текст (не забудьте вставить пробел в конце строки "Object "):

"Object "+KeyString$ ( "Keyboard object", LastKeyPressed( "Keyboard object" ) )

Clickteam Fusion Keyboard Object Action Create Object By Name expression

Примечание: можно вводить все части этого текста вручную, а можно снова сделать правый клик на Keyboard Object и для вставки функций KeyString и LastKeyPressed выбирать в его контекстном меню пункты Key string и Last key pressed соответственно.

После ввода выражения кликните OK. Это все, программа завершена, проверьте её работу (F8). При нажатии на клавиши 1, 2 и 3 будут создаваться и улетать за края экрана объекты Object 1, Object 2 и Object 3 соответственно (обратите внимание, что нажатия на другие клавиши не приводят ни к каким действиям).

Что за магия тут работает? Все просто: в одном событии мы можем создавать нужный объект, ссылаясь на него по имени, используя клавиатуру как входную переменную. Это и есть то, что называют в CTF динамическим созданием объекта.

[Ссылки]

1. A Guide to Creating Objects in Fusion 2.5 site:clickteam.com.

 

Добавить комментарий


Защитный код
Обновить

Top of Page