Уроки Flash: Малюємо дерева засобами ActionScript 2.0, Програми для роботи з графікою, Програмні керівництва, статті



Даний урок, присвячений малювання дерев. Вся принадність уроку полягає в тому, що малювати ми будемо дерева словами в панелі 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 ми зобразили цілком правдоподібне деревце.


Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*