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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 12.07.2002, 13:58
LostWarrior вне форума Посмотреть профиль Отправить личное сообщение для LostWarrior Найти все сообщения от LostWarrior
  № 1  
LostWarrior

Регистрация: Jul 2002
Адрес: Киев
Сообщений: 222
Отправить сообщение для LostWarrior с помощью ICQ
По умолчанию Опять про "звездное небо"

Вот вам пример полета сквозь вселенную.
Кто найдет причину, по которой работает не правильно?

stop();
getRandom = function(min, max){
return Math.floor(Math.random()*(max+1-min))+min;
}
onEnterFrame = function () {
while (stars<maxStars) {
_root.createEmptyMovieClip("star"+stars, stars);
with (_root["star"+stars]) {
_x = getRandom(120, 170);
_y = getRandom(120, 170);
sang = (_y-y0)/Math.sqrt(Math.pow((_y-y0), 2)+Math.pow((_x-x0), 2)); // синус угла направления звезды
lineStyle(1, 0xFFFFFF, 100);
moveTo(0, 0);
lineTo((_x-x0)*sang/2, (_y-y0)*sang/2);
}
stars++;
}
// Двигаем звезды
for (i=0; i<stars; i++) {
with (_root["star"+i]) {
_x += (_x-x0)*sang/2;
_y += (_y-y0)*sang/2;
clear();
lineStyle(1, 0xFFFFFF, 100);
moveTo(0, 0);
lineTo((_x-x0)*sang/2, (_y-y0)*sang/2);
if ((_x>1000) || (_y>1000) || (_x<-1000) || (_y<-1000)) {
removeMovieClip();
_root.createEmptyMovieClip("star"+i, i);
with (_root["star"+i]) {
_x = getRandom(120, 170);
_y = getRandom(120, 170);
sang = (_y-y0)/Math.sqrt(Math.pow((_y-y0), 2)+Math.pow((_x-x0), 2));
lineStyle(1, 0xFFFFFF, 100);
moveTo(0, 0);
lineTo((_x-x0)*sang/2, (_y-y0)*sang/2);
destroy = false;
}
}
}
}
}


в первом кадре инициализация значений:
maxStars=30;
stars=0;
ms=0;
x0=150;
y0=150;


размер клипа 300х300, цвет черный.

Получается много интересных эффектов, если много раз проверять, но правильно не работает.
__________________
Michael SuLLivaN
#icq 140702090

Я стал вегетарианцем не потому, что люблю животных, а потому... что НЕНАВИЖУ растения!

Старый 12.07.2002, 17:23
DeliMIter вне форума Посмотреть профиль Отправить личное сообщение для DeliMIter Найти все сообщения от DeliMIter
  № 2  
DeliMIter
некрофил
 
Аватар для DeliMIter

Регистрация: Mar 2002
Адрес: ...по колено в кровище...
Сообщений: 2,292
Я думаю, проблема в слишком большом количестве кода. Там от силы должно быть пару строк.
__________________
...убивать людей не удовольствия ради, но для еды.

Старый 12.07.2002, 17:46
LostWarrior вне форума Посмотреть профиль Отправить личное сообщение для LostWarrior Найти все сообщения от LostWarrior
  № 3  
LostWarrior

Регистрация: Jul 2002
Адрес: Киев
Сообщений: 222
Отправить сообщение для LostWarrior с помощью ICQ
Я ошибку уже исправил. а вот то-же самое в пару строк было-бы очень интересно посмотреть
__________________
Michael SuLLivaN
#icq 140702090

Я стал вегетарианцем не потому, что люблю животных, а потому... что НЕНАВИЖУ растения!

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

Регистрация: Mar 2002
Адрес: ...по колено в кровище...
Сообщений: 2,292
Код:
function onEnterFrame() {
 if (--_timeout > 0) return;
 (newStar = attachMovie("Star", "S" + ++_depth, _depth))._x = 120 + random(60);
 newStar._dx = (newStar._speed = 10 + random(5)) * Math.cos(_angle = Math.atan2((newStar._y = 120 + random(60)) - 150), newStar._x - 150);
 newStar._dy = newStar._speed * Math.sin(_angle);
 newStar.onEnterFrame = function() {
  if (((this._x += this._dx) > 300)or(this._x < 0)) this.removeMovieClip();
  if (((this._y += this._dy) > 300)or(this._y < 0)) this.removeMovieClip();
 }
 _timeout = 2 + random(3);
}
P.S. Не тестил.
__________________
...убивать людей не удовольствия ради, но для еды.


Последний раз редактировалось DeliMIter; 12.07.2002 в 19:47.
Создать новую тему   Часовой пояс GMT +4, время: 10:35.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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