![]() |
|
||||||||||
|
|||||
|
Регистрация: Jan 2008
Сообщений: 7
|
Был у меня тутор как сделать такое
http://www.lacoste-future.com/en/#/yourvision/ (раздел Share your vision), да потерялся. может кто подскажет как это оргнизованно, интерисует именно сама анимация "сквозь вселенную" текста Соответсвенно интерисует реализация на AS1 - 2 |
|
|||||
|
Регистрация: Jul 2008
Сообщений: 257
|
без as это делается просто выставлением центра мувика в центр проекта и твином увеличивается. при этом текст в мувике должен быть смещен вправо/влево/вверх/вниз/наискосок.
|
|
|||||
|
Регистрация: Jan 2008
Сообщений: 7
|
без аs не интерестно т.к надписи будут динамически подгружаться, + там есть фокус при клике на любую фразу..
|
|
|||||
|
Регистрация: Jul 2008
Сообщений: 257
|
ну в as можно использовать тот-же принцип. аттачить клип в центр в него текст подгружать и сдвигать.
хотя с фокусом уже сложноее. я пока не дорос) Последний раз редактировалось artem_fs; 04.12.2008 в 13:17. |
|
|||||
|
Регистрация: Jan 2008
Сообщений: 7
|
Вот кому надо сам сделал
// создаем типа камеру 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.x = 500 - 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. |
|
|
« Предыдущая тема | Следующая тема » |
|
|