Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.02.2009, 15:10
CodyII вне форума Посмотреть профиль Отправить личное сообщение для CodyII Посетить домашнюю страницу CodyII Найти все сообщения от CodyII
  № 1  
Ответить с цитированием
CodyII
 
Аватар для CodyII

Регистрация: Aug 2008
Адрес: Saint-Petersburg
Сообщений: 1
По умолчанию Флеш каталог. Пролемы со скоростью и тректорией движения.

Здравствуйте.

Есть задача сделать нечто на подобии http://ferrero.ru/, только траектория представляет собой параболу.

Начал писать, сделал практически всё, но у меня вот никак не выходит пара моментов.

1) Я так и не понял, как с помощью AS задать объектам двигаться не по оси X, а по параболе.

2) То, что есть работает не совсем корректно, почему-то процесс увеличения и уменьшения объектов происходит и за пределами рабочей области.

3) Не пойму как сделать так, чтобы объекты пропадали и появлялись позже/раньше областей по бокам, где мы меняем направление движения, иначе происходит наслоение и вообще это не совсем верно.

Прошу совета или указания на ошибку, хотя бы по одному пункту. Заранее, спасибо! Код ниже, если нужен fla файл могу кинуть.

Код AS1/AS2:
//ширина кнопки
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;
		}
		}
	};
}
Добавлено через 28 часов 39 минут
вопрос 2 и 3 решил сам.

Главный вопрос который передо мной стоит это: Как заставить мои мувики двигаться по параболической траектории?

То есть логически я понимаю что нужно написать уравнение параболы, это не так сложно.

А вот как заставить их по ней двигаться не пойму.

Заранее, спасибо.
__________________
To conquer fear you must become fear. © Batman Begins

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:59.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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