Link:INB Home|INB English| INB русский язык|INB العربية|INB Türkiye|INB فارسی|INB Español|INB Français|INB Português|INB Deutsch|INB 國語|INB 中文|INB 日本语|INB 한국어|INB ภาษาไทย|INB tiếng Việt||Уроки Flash Рисуем деревья средствами ActionScript 2.0
INB русский язык Форум
Добро пожаловать! inbforum.COM Интернет без границ Форум Здесь вы можете обсудить с друзьями по всему миру прений, приходите и присоединяйтесь к нам! Постоянный имя: Ruinbforum.forumotion.com
INB русский язык Форум

Добро пожаловать! inbforum.COM Интернет без границ Форум Здесь вы можете обсудить с друзьями по всему миру прений, приходите и присоединяйтесь к нам! Постоянный имя: Ruinbforum.forumotion.com


Вы не подключены. Войдите или зарегистрируйтесь

《《《《《《《上一页INBforum   Перейти вниз

上一页INBforum》》》》》》》Предыдущая тема Следующая тема Перейти вниз  Сообщение [Страница 1 из 1]

1Уроки Flash Рисуем деревья средствами ActionScript 2.0 Empty Уроки Flash Рисуем деревья средствами ActionScript 2.0 в Пт Окт 01, 2010 9:18 am

Admin

Admin
Admin
Данный урок, посвящен рисованию деревьев. Вся прелесть урока заключается в том, что рисовать мы будем деревья словами в панели ActionScript.
Чтобы наше дерево получилось правдоподобным нам следует представить его строение. Ключевые составляющие любого дерева - ствол и ветки. Ветка, как мы знаем - не бесконечна (также, как и ствол) она растет до определенной длины, после чего сама развивается на несколько веток. Толщина родительской ветки связана с толщиной веток, растущих из нее. А общая толщина ствола примерно равна толщине всех ветвей растущих из него. Мы знаем и о подобии между веткой и деревом - посадим в землю веточку - вырастет дерево.
Учитывая все вышесказанное, приступим к написанию "генератора деревьев".CODE
//Создаем счетчик максимального количества ростков. Оно у нас ограничено - 3000 //тысячи.
function counter():Number {
if (branchCounter == undefined) { // Если переменная branchCounter не имеет значения, //задем ранвой нулю
branchCounter =0;
}
return (branchCounter++); // Или же функция производит пост-инкремент
}
//Функция, которая выращивает наши веточки
function grow() {
this.lineStyle(trunkThickness, 0x000000, 100); //рисуем линию
this.moveTo(0, 0);// Устанавливаем начальные кординаты
this.lineTo(0, trunkLength);
// Если это не ствол, изменить угол и размер ветви
if (this._name != "trunk") {
this._rotation = (Math.random()*angle) - angle/2;
this._xscale *=branchSize;
this._yscale *= branchSize;
}
// Сгенерировать ростки...
var seed = Math.ceil(Math.random()*branch);
for (var i = 0; i < seed; i++) {
if (counter()< 3000) {
var segment = this.createEmptyMovieClip("segment" + i, i)
segment.onEnterFrame = grow;
segment._y += trunkLength; }
}
delete (this.onEnterFrame);
}
// Определить позицию ствола и назначить обработчиком
// события onEnterFrame функцию growO
this.createEmptyMovieClip("trunk", 0);
trunk._x = 200;
trunk._y = 400;
trunk.onEnterFrame = grow;
// Параметры дерева
var angle = 100;
var branch = 5;
var trunkThickness = 8;
var trunkLength = -100;
var branchSize =0.7;


Базовая форма дерева определяется параметрами, значения которых задаются
в завершающих строках листинга:
• angle - максимальный угол ветви по отношению к родителю;
• branch - максимальное количество ростков (дочерних ветвей) для любой
ветви;
• trunkThickness - толщина ствола дерева;
• trunkLength - длина ствола дерева;
• branchSize - отношение размеров дочерней и родительской ветвей (ветви
уменьшаются по мере удаления от ствола).
Сначала мы создаем ствол и задаем его позицию, после чего назначаем функцию
grow() обработчиком события onEnterFrame. Как подсказывает само название,
функция grow() "выращивает" пустое дерево в нашем клипе, для чего она
выполняет две операции. Сначала функция создает исходную ветвь, рисуя
вертикальную линию высотой trunkLength и толщиной trunkThickness. Если в на-
стоящее время рисуется ствол, он оставляется в первоначальном виде
Если же рисуется ветвь, она поворачивается на угол +/- angle) и мас-
штабируется с коэффициентом branchSize .
Вот так средствами AS 2.0 мы изобразили вполне правдоподобное деревце.]

http://ru.inbforum.com

上一页INBforum   Перейти вниз

上一页INBforumПредыдущая тема Следующая тема Вернуться к началу  Сообщение [Страница 1 из 1]

Права доступа к этому форуму:
Вы не можете отвечать на сообщения

Copyright ©2009-2010 LTD Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.

IT:SINGLESERVGoogle谷歌翻译TranslateFORUMSOFTLAYERGoogle谷歌广告联盟AdSenseAsia

 

Создать форум | © PunBB | Бесплатный форум поддержки | Контакты | Сообщить о нарушении | Последние обсуждения