Tag Archive for 'Эффект'

О пользе Maple

Часто возникает необходимость протестировать некоторую математическую модель прежде чем ее кодить в ActionScript или другой любой язык. Построить парочку красивых графиков, подогнать параметры. Конечно, можно быстренько накидать приложеньеце и нарисовать все во Flash, но зачем, когда есть куча специализированного математического софта? Мне когда-то в универе вдалбливали основы Maple, так что теперь с переменным успехом я пользуюсь им. Надо сказать, что я полный нуб и делаю все методом тыка, что не мешает мне тем не менее получать нужные результаты.

Итак, понадобилось мне запрограммить некоторое псевдослучайное колеблющееся движение. Мне нужен такой паттерн с периодичностью, резкими рывками, затуханием.

Открываю Maple. Начинаю задавать константы.

mpl1

minAmp — минимальное значение глобальной амплитуды,
maxAmp — максимальное,
minLen — минимальная длина волны,
deltaLen — minLen + deltaLen = maxLen — максимальная длина волны,
speed — скорость маленькой волны (позже убилось).

Далее функции длины волны и амплитуды.

mpl2

Длину волны я в примере брал константой, не хватило времени переписать под функцию, хоть там и не долго. Тут вроде бы все понятно. От некоторого x считается длина волны и амплитуда, обе периодичны.

mpl4

Получается такой график амплитуды.

mpl3

Теперь в это можно подставить еще один синус, который будет в амплитуду упираться.

mpl5

Какая-то цикличность есть, но уж слишком криво. Теперь надо добавить много рандома.

mpl6

Вот эта функция генерит рандом. Проще говоря, есть некоторый seed, который растет от “больше нуля” до “чуть больше единицы” на dseed, потом резко сбрасывается на единицу (почти до нуля) и меняется скорость роста dseed на некоторую величину определяемую переменными minRand и ampRand. И далее возвращается результат в предпоследней строчке. Отсюда получается такой рваный ритм, а из-за разброса dseed то быстрое, то медленное движение. И все это ограничено еще амплитудой, что выше.

В итоге имеем следующий результат.

mpl7

Вот это уже рандом. Играясь с параметрами, можно получить весьма интересные результаты.

Ну и пример. Долго лучше не смотреть. И он солидно грузит систему, так что рекомендую эту страничку закрывать.

Maple исходник на всякий случай.

Эффектик

Лежал, не мог уснуть. Встал, сделал имитацию некотороего эффектика. Вроде бы нормально. 10й плеер.

Исходник.

Пусть само пишет

Сегодня за полдня написал небольшой эффектик. Ничего сложного, просто бот сидит пишет программку по некоторым шаблонам и правилам.

Так выглядит XML с шаблонами.

<config>
<node name="const">
<static var="0" color="AAAAAA"/>
</node>
<node name="string">
<static var="0" color="60e18c"/>
</node>
<node name="root">
<input name="site"/>
</node>
<node name="site">
<static text="site " color="00FFFF"/><input name="name"/><static text=" {"/><br/>
<static text="    "/><input name="content"/><br/>
<static text="}"/>
</node>
<node name="statement">
<input name="statement"/>
</node>
<node name="expression">
<input name="expression"/>
</node>
<node name="variable">
<static text="var "/><input name="name"/><static text=" = "/><input name="value"/>
</node>
<node name="object">
<static var="0" color="00FFFF"/><static text="."/><input name="method"/>
</node>
<node name="function">
<static var="0" color="AAAAAA"/><static text="( "/><input name="parameters"/><static text=" )"/>
</node>
<node name="quotes">
<static text=""" color="60e18c"/><input name="string"/><static text=""" color="60e18c"/>
</node>
</config>

А так, собственно, код.

q.addNodeText( ":site", "site", "site", 200, 500 );
q.addConstText( "site:name", "ru.valyard.site", 200 );
q.addNodeList( "site:content", "statement" );

var c: String = "site.content";

q.addText( c+".0:statement", "Application", 200 );
q.addNode( c, "object", ["Application"], 500 );
q.addNodeText( c+".0:method", "function", "addModules", 200, 500 );
q.addNodeList( c+".0.method:parameters", "expression", ", " );

var p: String = c+".0.method.parameters";
q.addText( p+".0:expression", "\"", 200 );
q.addNode( p, "quotes" );
q.addStringText( p+".0:string", "Test", 200, 500 );
q.addText( p+".1:expression", "\"", 200 );
q.addNode( p, "quotes" );
q.addStringText( p+".1:string", "Apple", 200, 500 );
q.addText( p+".2:expression", "\"", 200 );
q.addNode( p, "quotes" );
q.addStringText( p+".2:string", "Warcraft LOL", 200, 500 );

q.addText( c+".1:statement", "var", 200 )
q.addNode( c, "variable", null, 500 );
q.addConstText( c+".1:name", "module", 200, 500 );
q.addNodeText( c+".1:value", "object", "Application", 200, 500 );
q.addNodeText( c+".1.value:method", "function", "loadModule", 200, 500 );

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

Переворачивая страницы

Тут в рассылке ruFlash подсказали отличный линк на эффект переворачивания страниц с исходниками. Даже демонстрашка есть подробная как делается этот эффект. Честно признаться, но только сейчас я понял как это сделано.

Как говорится, век живи — век учись!

Update. Ух ты, а тут их столько и в одном месте. Класс!

Хи3

xitri.com – отличный сайт с оличными уроками по флэш анимации и эффектами.

С удовольствием прочитал все заметки и подписался на RSS.