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

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

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

Регистрация: Jan 2007
Сообщений: 8
По умолчанию Одинаковые вычисления для большого кол-ва объектов.

У меня много планет, для которых рассчитывается скорость, сила(между всеми планетами), расстояние... ну например 3 обьекта: 1,2 и 3...
Код:
rx_12 = 1._x - 2._x;
ry_12 = ...
r_12 = Math.sqrt(rx_12*rx_12+ry_12*ry_12);
так же для обьектов 2 и 3
rx_23 = 2._x - 3._x;
ry_23 = ...
и для 1 и 3...
но если я создам 4 обьекта, то таких вычислений будет 6... а я хочу чтобы в самом начале можно было создать сколько угодно таких обьектов, и программа должна сама создать для них код заменяя 1 и 2 на номера клипов... как это сделать? И еще, как в степень возводить?

Старый 14.01.2007, 18:00
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
1. Название клипов не должны начинаться с цифры, пусть будет так: mc1, mc2, mc3, ....
2. Тогда все будет выглядить так
Код:
function getDistance (mc1:MovieClip, mc2:MovieClip):Number {
	var dx:Number = mc1._x - mc2._x;
	var dy:Number = mc1._y - mc2._y;
	var r:Number = Math.sqrt (dx * dx + dy * dy);
	return r;
}
r12 = getDistance (mc1, mc2);
r23 = getDistance (mc2, mc3);
r13 = getDistance (mc1, mc3);
3. В степень возводится с помощью
Код:
Math.pow (число, степень)
Однако, если нужно возвести в квадрат, то лучше использовать простое перемножение, так как это будет происзводится быстрее, чем через Math.pow
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 15.01.2007, 03:15
FluFf вне форума Посмотреть профиль Отправить личное сообщение для FluFf Найти все сообщения от FluFf
  № 3  
Ответить с цитированием
FluFf

Регистрация: Jan 2007
Сообщений: 8
Но мне все равно придется прописывать заранее
r12 = getDistance (mc1, mc2);
r23 = getDistance (mc2, mc3);
r13 = getDistance (mc1, mc3);
а потом еще силу, угол между каждыми телами... а как сделать, чтобы все это прописывалось для любого количества обьектов? т.е. если я создам 30 обьектов, то программа должна написать для всех расстояние, силу и.т.д.

Старый 15.01.2007, 11:09
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Использовать классы для этого

Старый 15.01.2007, 12:17
whiteRed вне форума Посмотреть профиль Отправить личное сообщение для whiteRed Найти все сообщения от whiteRed
  № 5  
Ответить с цитированием
whiteRed
 
Аватар для whiteRed

Регистрация: Nov 2004
Сообщений: 187
Отправить сообщение для whiteRed с помощью ICQ
можно сделать примерно так:
Код:
for(i=1; i<=n; i++){
  for(j=i+1; j<=n; j++){
    this["r"+i+"_"+j] = getDistance(this["mc"+i], this["mc"+j]);
  }
}
но лучше все таки классы
__________________
С моих слов записано верно. Мною прочитано.

Старый 15.01.2007, 21:12
FluFf вне форума Посмотреть профиль Отправить личное сообщение для FluFf Найти все сообщения от FluFf
  № 6  
Ответить с цитированием
FluFf

Регистрация: Jan 2007
Сообщений: 8
А можно поподробнее про классы? Даже не слышал о них...

Старый 16.01.2007, 01:16
FluFf вне форума Посмотреть профиль Отправить личное сообщение для FluFf Найти все сообщения от FluFf
  № 7  
Ответить с цитированием
FluFf

Регистрация: Jan 2007
Сообщений: 8
большое спасибо... все сделал спомощью циклов... только вот в таймере не получается сделать... т.е.
Код:
for(i=1; i<=n; i++){
  for(j=i+1; j<=n; j++){
    this["r"+i+"_"+j] = getDistance(this["mc"+i], this["mc"+j]);
  }
}
это работает, а если это запихать в функцию и присвоить ее таймеру, то ниче не работает...

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

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

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


 


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


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