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

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

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

Регистрация: Jan 2006
Сообщений: 27
По умолчанию прыгающий мяч (затруднение с использованием while)

Доброго времени суток. Только начинаю изучать экшн скрипт и столкнулся с проблемой при использовании цикла while.
Нужно сделать пригающий мяч. И всё бы хорошо и всё работает, но есть проблема с тенью, она должна уменьшаться при падении мяча и увеличиваться при его подскакивании.
Вот, собсно код:
Код:
ball._x=-50;
ball._y=170;
contour._x=-50;
contour._y=170;
shade._y=336;
shade._x=-200;
var X2=31;
var X0=50;
var Y0=170;
var t=0;
var a=2;
var Vy=0;
var Vx=6;
var newV=null;
var newY=null;
var newX=null;
var newX2=null;
_root.onEnterFrame = function () {
	if (ball._y>350) {
		Vy=-newV*0.85;
		Vx=0.85*Vx;
		X0=newX;
		Y0=newY;
		X2=newX2;
		t=0.6;
	}

/*	while (ball._y+=2) {
		shade._xscale-=2;
	} 
	while (ball._y-=2) {
		shade._xscale+=2;
	} */

	contour._y=Y0+Vy*t+a*t*t/2;
	contour._x=X0+Vx*t;
	ball._y=Y0+Vy*t+a*t*t/2;
	ball._x=X0+Vx*t;
	shade._x=X2+Vx*t;
	newV=Vy+a*t;
	newY=ball._y;
	newX=ball._x;
	newX2=shade._x;
	t+=0.6;
	contour._rotation+=8;
}
Проблема возникает в закоментированой части. Уменьшение и увеличение тени я решил привязать к направлению мяча. Подскажите что именно я написал нитак или как можно сделать иначе, например через for?

UPD: Исходник. сорри продуплил


Последний раз редактировалось Ivan Helsin; 09.01.2009 в 20:01.
Старый 09.01.2009, 19:45
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 2  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
выложите исходник
__________________
return this...

Старый 09.01.2009, 19:45
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 3  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
эээ...ball._y+=2 вернет координату, которая будет всегда преобразвана в true, кроме случая 0 в результате. Таким образом, Вы запускаете бесконечные циклы. "Привязать" означает задать зависимость, причем тут вообще циклы?
__________________
4am is time to rock

Старый 09.01.2009, 19:54
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 4  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Но примерно можно так
Код AS1/AS2:
wMax=10; 	// Максимальная величина в пикселях по ширине
wMin=1;  	// Минимальная величина в пикселях по ширине
hMax=10; 	// Максимальная величина в пикселях по висоте
hMin=1;  	// Минимальная величина в пикселях по висоте
yMax=1000;	// Максимальная высота
yMin=0;     // Минимальная высота
shade._width =((yMax-yMin)/ball._y)*(wMax-wMin);
shade._height=((yMax-yMin)/ball._y)*(hMax-hMin);
Добавлено через 8 минут
А точнее будет так
Код AS1/AS2:
shade._width =wMax-(wMax-wMin)/((yMax-yMin)/ball._y);
shade._height=hMax-(hMax-hMin)/((yMax-yMin)/ball._y);
UPD: Извените за повторяющий пост, промазал. Вот так примеру будет всё выглядеть
Код AS1/AS2:
ball._x=-50;
ball._y=170;
contour._x=-50;
contour._y=170;
shade._y=336;
shade._x=-200;
var X2=31;
var X0=50;
var Y0=170;
var t=0;
var a=2;
var Vy=0;
var Vx=6;
var newV=null;
var newY=null;
var newX=null;
var newX2=null;
 
wMax=100; 	// Максимальная величина в пикселях по ширине
wMin=1;  	// Минимальная величина в пикселях по ширине
hMax=100; 	// Максимальная величина в пикселях по висоте
hMin=1;  	// Минимальная величина в пикселях по висоте
yMax=500;	// Максимальная высота
yMin=0;     // Минимальная высота
 
_root.onEnterFrame = function () {
	if (ball._y>350) {
		Vy=-newV*0.85;
		Vx=0.85*Vx;
		X0=newX;
		Y0=newY;
		X2=newX2;
		t=0.6;
	}
 
	shade._width =wMax-(wMax-wMin)/((yMax-yMin)/ball._y);
	shade._height=hMax-(hMax-hMin)/((yMax-yMin)/ball._y);
 
	contour._y=Y0+Vy*t+a*t*t/2;
	contour._x=X0+Vx*t;
	ball._y=Y0+Vy*t+a*t*t/2;
	ball._x=X0+Vx*t;
	shade._x=X2+Vx*t;
	newV=Vy+a*t;
	newY=ball._y;
	newX=ball._x;
	newX2=shade._x;
	t+=0.6;
	contour._rotation+=8;
}
только с интервалы настроить и всё.
__________________
return this...


Последний раз редактировалось AlexCooper; 09.01.2009 в 20:07.
Старый 09.01.2009, 20:07
Ivan Helsin вне форума Посмотреть профиль Отправить личное сообщение для Ivan Helsin Найти все сообщения от Ivan Helsin
  № 5  
Ответить с цитированием
Ivan Helsin
 
Аватар для Ivan Helsin

Регистрация: Jan 2006
Сообщений: 27
2 AlexCooper

Спасибо, принцип ясен

Старый 10.01.2009, 03:20
zurkis вне форума Посмотреть профиль Отправить личное сообщение для zurkis Найти все сообщения от zurkis
  № 6  
Ответить с цитированием
zurkis
 
Аватар для zurkis

Регистрация: Nov 2008
Адрес: Атланта
Сообщений: 1,271
а еще советую сюда заглянуть: http://xitri.com, там и про мяч тоже есть, так что проблем быть не должно
__________________
Пока я жив, Вы горем обеспечены

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

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

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


 


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


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