| ActionScript 3.0. Урок 7-5. Пример создания динамических объектов |
|---|
| 26.09.2008 г. | |
|
Этот пример в случайном порядке добавит в разные места экрана символы и рисунки. Далее, на основе расположения объектов, скрипт реорганизует их таким образом, что объекты, расположенные ниже, будут размещены над объектами, расположенными выше, для появления перспективы. Шаги:1. В исходных файлах откройте файл RandomTreesWithArrangement.fla из директории DisplayObjects. Этот файл состоит из одного пустого слоя, названного ActionScript и двух объектов в библиотеке, символа дерева типа movie clip и рисунка tree.png.
Рисунок: Дерево как объект movie clip и bitmap Чтобы иметь возможность динамически создавать объекты в библиотеке с помощью ActionScript 3, вам потребуется настроить опции связи и написать уникальное имя класса, через которое будет происходить обращение к объектам. 2. Щелкните правой кнопкой мыши (на компьютере Mac щелкните Command) по символу дерева типа movie clip в библиотеке. 3. В появившемся меню выберите Linkage... ![]() Рисунок: Установка свойств связи из библиотеки 4. В диалоге Linkage выберите пункт Export for ActionScript.
Рисунок: Имя класса для tree.png После установки свойств связи мы можем приступать к кодированию на ActionScript, чтобы создать эти объекты. Вначале, определите некоторые переменные, которые будут применяться в примере. В данном случае, существует всего одна переменная, treeCount, для определения того, как много деревьев будет сгенерировано.
7. Выберите первый кадр на слое ActionScript и откройте панель Actions. // The number of trees to generate Далее мы можем определить функцию для генерирования деревьев. В основном будем полагаться на функцию Math.random() Для создания и размещения деревьев будет использоваться цикл на основе значения переменной treeCount, которое будет добавляться в функцию при ее вызове. // don't forget to add the tree
Теперь мы можем вызвать функцию createTrees, и деревья из библиотеки будут динамически создаваться и добавляться на экран. 10. Добавьте следующий скрипт на панель Actions. 11. Протестируйте свой клип. Вы должны увидеть следующее
Рисунок: Динамически созданные случайным образом деревья Поскольку эти деревья были добавлены динамически и случайно, их расположение не кажется верным. Вы можете видеть, что деревья, расположенные выше на экране перекрывают деревья, расположенные ниже, в то время как ожидалось нечто противоположное. В ActionScript 2 это можно было с легкостью установить в процессе создания деревьев, установив их глубину равной координате y. Это не работает в ActionScript 3, так как нельзя оставлять разрывы в таблице отображения – все глубины должны быть смежными. Решением для ActionScript 3 будет помещение объектов в массив и сортировка этого массива на основе значения y (или другого) объектов. Отсортированное упорядочивание этого массива может потом использоваться для упорядочивания таблицы отображения. Для содействия этому можно создать функцию. 12. Добавьте следующий скрипт на панель Actions. // Arrange all children in the specified Эта функция берет любой контейнер MovieClip и организует его потомков таким образом, что чем выше они расположены на экране, тем ниже они располагаются в таблице отображения, используя основанную на массиве сортировку. Все, что остается сделать, это вызвать эту новую функцию, используя текущую временную шкалу, так что деревья, созданные ранее, будут расположены правильно. // Arrange the trees 14. Когда вы закончите с добавлением кода, протестируйте клип. Вы должны увидеть следующее.
Рисунок: Динамически созданные деревья после упорядочивания Схожесть таблицы отображения с массивом позволяет с легкостью использовать массивы для сортировки таблиц отображения, как в примере. Таким же образом, вы можете внедрить свой собственный алгоритм сортировки, используя просто таблицу отображения и методы, такие как getChildAt() и setChildIndex(), без помощи массивов. |
|
| Поиск похожих: ActionScript action script уроки tutorials Flash флэш бесплатно пример создания динамических объектов | |
| « Пред. | След. » |
|---|









