Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Текстовый эффект (http://www.flasher.ru/forum/showthread.php?t=118808)

tetra 04.12.2008 11:58

Текстовый эффект
 
Был у меня тутор как сделать такое
http://www.lacoste-future.com/en/#/yourvision/
(раздел Share your vision), да потерялся.
может кто подскажет как это оргнизованно, интерисует именно сама анимация "сквозь вселенную" текста
Соответсвенно интерисует реализация на AS1 - 2

artem_fs 04.12.2008 12:33

без as это делается просто выставлением центра мувика в центр проекта и твином увеличивается. при этом текст в мувике должен быть смещен вправо/влево/вверх/вниз/наискосок.

tetra 04.12.2008 12:41

без аs не интерестно т.к надписи будут динамически подгружаться, + там есть фокус при клике на любую фразу..

artem_fs 04.12.2008 13:14

ну в as можно использовать тот-же принцип. аттачить клип в центр в него текст подгружать и сдвигать.
хотя с фокусом уже сложноее. я пока не дорос)

tetra 05.12.2008 11:19

Вот кому надо сам сделал
Код AS1/AS2:

// создаем типа камеру
this.createEmptyMovieClip("theScene", 1);
// положение центр сцены
theScene._x = Stage.width / 2;
theScene._y = Stage.height / 2;
// расстояние до объекта
theScene.depth = 1;
// функция фокуса на определенный текст
selectText = function ()
{
    cameraView.target.x = this.x;
    cameraView.target.y = this.y;
    cameraView.target.z = this.z;
};
// определяем положение каждого текста относительно камеры по мега формуле perspective_ratio = D / (D + z); D - дистанция
// z- воображаемая координата z
displayText = function (cameraView, focalLength)
{
    var x = this.x - cameraView.x;
    var y = this.y - cameraView.y;
    var z = this.z - cameraView.z;
 
 
    // если мы не в пределах камры - генерим новые координаты текста рандомно
        if (z < 0)
    {
        this.z = this.z + 5000;
        this.x = Stage.width - Math.random() * (Stage.width * 2);
        this.y = Stage.height - Math.random() * (Stage.height * 2);
                // положение тектста относительно точки перспективы
        x = this.x - cameraView.x;
        y = this.y - cameraView.y;
        z = this.z - cameraView.z;
    }
        // формула расчета перспективы
    var scaleRatio = focalLength / (focalLength + z);
        // расчитали теперь все ставим на место
        this._x = x * scaleRatio;
    this._y = y * scaleRatio;
        // далние не видны
        this._alpha = 100 * scaleRatio;
    this._xscale = this._yscale = 100 * scaleRatio;
    this.swapDepths(Math.round(-z));
 
};
// Для теста напихали кучу обьектов
objectsInScene = new Array();
for (i = 1; i <= 10; i++)
{
    attachedObj = theScene.attachMovie("text", "text_mc" + i, theScene.depth++);
    attachedObj.x500 - Math.random() * 1000;
    attachedObj.y =500 - Math.random() * 1000;
    attachedObj.z = i * 500;
    attachedObj.onPress = selectText;
    attachedObj.display = displayText;
    objectsInScene.push(attachedObj);
 
 
 
}
// начальные координаты
cameraView = new Object();
cameraView.x = 0;
cameraView.y = 0;
cameraView.z = 0;
cameraView.target = new Object();
cameraView.target.x = 0;
cameraView.target.y = 0;
cameraView.target.z = 0;
//D - дистанция
focalLength = 2000;
// обратное ускорение при клике на текст с учетом перспективы
easeToTarget = function ()
{
    cameraView.x = Math.ceil(cameraView.x + (cameraView.target.x - cameraView.x) / 20);
    cameraView.y = Math.ceil(cameraView.y + (cameraView.target.y - cameraView.y) / 20);
    cameraView.z = Math.ceil(cameraView.z + (cameraView.target.z - cameraView.z) / 20);
    var i = 0;
    while (i < objectsInScene.length)
    {
        objectsInScene[i].display(cameraView, focalLength);
        ++i;
 
    }
};
// плавный подлет
theScene.onEnterFrame = easeToTarget;
// Равномерное движение камеры
//константа скорости
var speed = 10;
        onEnterFrame = function ()
{
    cameraView.target.z = cameraView.target.z +  speed;
}



Часовой пояс GMT +4, время: 12:56.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.