Flash&AS - Рисуване с AS
Ще разгледаме как можем да правим линии и криви с помощта на AS (по късно и фигури). Отоворете Флаш документ. На фрейм едно поставете следния код :

var mcClip:MovieClip = this.createEmptyMovieClip ("mcClip",this.getNextHighestDepth());
drawCurve();
function drawCurve():Void {
mcClip.lineStyle (0, 0, 100);
mcClip.lineTo (100, 100);
}

Ето обяснението на кода. С първия ред създаваме празно Moovie Clip, което след това ще съдържа линията която чертаем. С ред 2 "извикваме" функцията, която след това създаваме. С помощта на тази функция ще направим линииката. С ред 3 създаваме фунцкия drawCurve, задаваме и Void, тоест тя няма да връща никаква информация. Рисуваме линията с метода lineTo (_x, _y), но преди това трябва да зададем по какъв начин да изглежда с метода lineStyle (дебелина, цвят, прозрачност). Тоест в случая сме задали lineStyle (0, 0, 100) - дебелина HairLine, цвят черен, opacyti - 100. По default флаш започва да рисува от координати 0,0 , освен ако не е зададено друго. Това става с метода moveTo (_x, _y). Тоест ще изградим тънка черна линия от точки 0,0 до 100,100.
Пример :
ЛИНК

Нека сега да нарисуваме нещо по сложно, а именно крива. Кода ще е доста подобен ..

var mcClip:MovieClip = this.createEmptyMovieClip ("mcClip",this.getNextHighestDepth());
drawCurve();
function drawCurve():Void {
mcClip.lineStyle (0, 0, 100);
mcClip.curveTo (50, 50, 100, 0);
}

Метода curveTo се задава така curveTo (изкривяване по х, изкривяване по y, х, у).
Тоест в случая имаме нещо такова Пример :
ЛИНК


Ето как да анимираме тази крива :)

var mcClip:MovieClip = this.createEmptyMovieClip ("mcClip",this.getNextHighestDepth());
var control:Number = 0;
setInterval (drawCurve, 5);
drawCurve();
function drawCurve():Void {
mcClip.clear();
mcClip.lineStyle (0, 0, 100);
mcClip.curveTo (50, control, 100, 0);
control += .5;
updateAfterEvent ();
}

Какви са промените тук .. Тъй като желаем нещо да се "променя" задаваме интервал, през който това да става със setInterval (_mc, miliSeconds). Задаваме и променлива за изкривяване по "у" (var control:Number = 0;), всъщност цялата анимицая се състои от това. В метода curveTo просто променяме _y с променливата control. На следващия ред ( control += .5; ) задаваме на променливата control да разте с 0.5 пиксела на "промяна". Редът updateAfterEvent (); не е задължителен, но тъй като имаме промяна на състоянието е добре да се използва. Остана един "не обяснен" ред - mcClip.clear(); . Той се намира в начало на фунцкията, и кара флаш всеки път когато изпълнява фунцкията, да трие всичко "старо", тоест както когато правим покадрова анимация трием съдържанието на стария фрейм и/или го заненяме със съдържанието на новия.
Пример :
ЛИНК


И сега едно поседно "усложнение" :) :

var mcClip:MovieClip = this.createEmptyMovieClip ("mcClip",this.getNextHighestDepth());
setInterval (drawCurve, 5);
drawCurve();
function drawCurve():Void {
mcClip.clear();
mcClip.lineStyle (0, 0, 100);
mcClip.curveTo (mcClip._xmouse, mcClip._ymouse, 100, 0);
updateAfterEvent ();
}

Какви са разликите ... Отново задаваме на Флаш да изълнява фунцкията на всеки 5 милиСекунди, да чисти старото съдържание. Но този път за изкривяване по х и у използваме х и у-а на мишката, получаваме ефект на интерактивност :)
Пример : LINK


А защо ни е да рисуваме с флаш ? Отговор : за да можем да създадем интеракативни апликации например, както тази :
LINK

Автор на урок АЗ и ако някой го копира и забрави да го упомене ще го направа евнух VeryhappyАко имате въпроси come on :)
Наздраве.












/ Трябва да сте регистриран за да напишете коментар /