![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Aug 2008
Адрес: Saint-Petersburg
Сообщений: 1
|
Здравствуйте.
Есть задача сделать нечто на подобии http://ferrero.ru/, только траектория представляет собой параболу. Начал писать, сделал практически всё, но у меня вот никак не выходит пара моментов. 1) Я так и не понял, как с помощью AS задать объектам двигаться не по оси X, а по параболе. 2) То, что есть работает не совсем корректно, почему-то процесс увеличения и уменьшения объектов происходит и за пределами рабочей области. 3) Не пойму как сделать так, чтобы объекты пропадали и появлялись позже/раньше областей по бокам, где мы меняем направление движения, иначе происходит наслоение и вообще это не совсем верно. Прошу совета или указания на ошибку, хотя бы по одному пункту. Заранее, спасибо! Код ниже, если нужен fla файл могу кинуть. //ширина кнопки var _buttonWidth:Number = 150; //минимальная ширина кнопки var _minbuttonWidth:Number = 70; //длинна зазора между кнопками var _backlashButton:Number = 35; //направление движения var _vector:Number = 1; //количество кнопак var _buttonNumber:Number = 7; //значение по оси X для кнопак var _minX:Number = 0; var _maxX:Number = Stage.width; //значение по оси Y для кнопак var _positionY:Number = 90; //скорость для кнопак var _speedX:Number = 2; //ссылки для кнопак var _addressesSites:Array = ["http://www.adobe.com", "http://www.google.com", "http://www.flash-mx.ru", "http://www.rambler.ru", "http://www.mail.ru", "http://www.membrana.ru", "http://www.3dnews.ru", "http://www.3dnews.ru"]; //скорость увеличения и уменьшения для кнопак var _scaleSpeed:Number = 0.5; //степень размытости, меньше больше var _blurX:Number = 100; //блюр эффект для кнопак если равен "true" то активен, "false" то не активен var _activationBlur:Boolean = true; //рабочие величины var _workWidth:Number = _buttonWidth+_backlashButton; var _workCoordinateX:Number = _workWidth*_buttonNumber; // // //активируем необходимые фильтры флеша import flash.filters.*; import flash.display.*; // //наводки спараво и слево right.onRollOver = function() { _root._vector = 1; }; left.onRollOver = function() { _root._vector = 0; }; // //цикл расстановки кнопак for (var i:Number = 0; i<_buttonNumber; i++) { var iconButton:MovieClip = attachMovie("Icon"+i, "IconButton"+i, i); iconButton._x = (_minX-(_buttonWidth/2))+i*_workWidth; iconButton._y = _positionY; //ключевая переменная которая равна числовому номеру нашей кнопки, по её номеру задаём номер ссылки из массива _addressesSites iconButton.e = i; //переменная которая участвует в функциях onRollOut и onRollOver с её помщью(активна она или нет) в onEnterFrame задается действие на уменьшение или увеличение кнопки iconButton.o = false; // // //кнопочные событья iconButton.onRollOut = function() { this.o = false; _speedX = 2; }; iconButton.onRollOver = function() { this.o = true; _speedX = 0; }; iconButton.onPress = function() { getURL(_addressesSites[this.e], "_blank"); }; // // //этика поведения кнопки iconButton.onEnterFrame = function() { if (_vector==1) { this.z = Math.floor((Stage.width/2)/400*_speedX); this._x += this.z; } if (_vector==0) { this.z = Math.floor((Stage.width/2)/400*_speedX); this._x -= this.z; } //новые позиции кнопак при смещении за рабочий экран if (this._x<_minX-(_workWidth-this.z)) { this._x = this._x+_workCoordinateX; } if (this._x>_maxX+(_workWidth+this.z)) { this._x = this._x-_workCoordinateX; } //блюр эффект if (_activationBlur == true) { if (this._x<Stage.width/2) { var filter:BlurFilter = new BlurFilter(Math.floor(((_maxX/2)-this._x)/_blurX), 0, 3); } if (this._x>Stage.width/2) { var filter:BlurFilter = new BlurFilter(Math.floor(((_maxX/2)-this._x)/_blurX)*-1, 0, 3); } var filterArray:Array = new Array(); filterArray.push(filter); this.filters = filterArray; } if (_speedX>0) { if (this._x<Stage.width/2 && _vector==0 && this._width>_minbuttonWidth) { this._width = this._height -= _scaleSpeed; } if (this._x<Stage.width/2 && _vector==1 && this._width<_buttonWidth) { this._width = this._height += _scaleSpeed; } if (this._x>Stage.width/2 && _vector==1 && this._width>_minbuttonWidth) { this._width = this._height -= _scaleSpeed; } if (this._x>Stage.width/2 && _vector==0 && this._width<_buttonWidth) { this._width = this._height += _scaleSpeed; } } }; } вопрос 2 и 3 решил сам. Главный вопрос который передо мной стоит это: Как заставить мои мувики двигаться по параболической траектории? То есть логически я понимаю что нужно написать уравнение параболы, это не так сложно. А вот как заставить их по ней двигаться не пойму. Заранее, спасибо.
__________________
To conquer fear you must become fear. © Batman Begins |
![]() |
![]() |
Часовой пояс GMT +4, время: 15:59. |
|
|
« Предыдущая тема | Следующая тема » |
|
|