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

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

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

Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
А если попробовать такой вариант:
Создаем MC - окружность радиусом 20, линкуем его в библиотеке под именем "ball".
В первый (и единственный) фрейм вписываем следующий код:
Код:
bx = [];
by = [];
n = 5;
for (a=1; a<=n; a++) {
    bx[a] = 0;
    by[a] = 0;
    _root.attachMovie( "ball","ball"+a, a);
    _root["ball"+a]._x = random(300);
    _root["ball"+a]._y = random(300);
}
bx[1] = (ball2._x-ball1._x+random(5))/20;
by[1] = (ball2._y-ball1._y+random(5))/20;
function calc_reflection (aa, bb) {
    x1 = bx[aa];
    y1 = by[aa];
    x2 = bx[bb];
    y2 = by[bb];
    x3 = _root["ball"+aa]._x-_root["ball"+bb]._x;
    y3 = _root["ball"+aa]._y-_root["ball"+bb]._y;
    s = 1/(x3*x3+y3*y3);
    a = (x1*x3+y1*y3)*s;
    x4 = x3*a;
    y4 = y3*a;
    x1 = x1-x4;
    y1 = y1-y4;
    a = (x2*x3+y2*y3)*s;
    x5 = x3*a;
    y5 = y3*a;
    x2 = x2-x5;
    y2 = y2-y5;
    bx[aa] = x1+x5;
    by[aa] = y1+y5;
    bx[bb] = x2+x4;
    by[bb] = y2+y4;
}

function calc_collision (aa, bb) {
    x1 = _root["ball"+aa]._x;
    y1 = _root["ball"+aa]._y;
    x2 = x1+bx[aa];
    y2 = y1+by[aa];
    x3 = _root["ball"+bb]._x;
    y3 = _root["ball"+bb]._y;
    r = 20;
    i = bx[aa];
    j = by[aa];
    k = x1-x3;
    l = y1-y3;
    a = i*i+j*j;
    if (a == 0) {
        return 1;
    }
    b = 2*(i*k+j*l);
    c = k*k+l*l-r*r;
    d = b*b-4*a*c;
    if (d<0) {
       return 1;
    }
    t = (-b-Math.sqrt(d))*0.5/a;
    if ((t<0) || (t>1)) {
       return 1;
    }
    x4 = i*t+x1;
    y4 = j*t+y1;
    _root["ball"+aa]._x = x4;
    _root["ball"+aa]._y = y4;
    calc_reflection(aa, bb);
    return 0;
}
this.onEnterFrame = function(){
	f = 0;
for (aa=1; aa<=n; aa++) {
    for (bb=1; bb<=n; bb++) {
        if (bb != aa) {
            if (calc_collision(aa, bb)==0) {
                f = 1;
            }
        }
    }
    if (f==0) {
        x = Math.floor(_root["ball"+aa]._x);
        y = Math.floor(_root["ball"+aa]._y);
        if (x<10 or x>=390) {
            bx[aa] = -bx[aa];
        }
        if (y<=10 or y>=390) {
            by[aa] = -by[aa];
        }
        _root["ball"+aa]._x += bx[aa];
        _root["ball"+aa]._y += by[aa];
    }
}
}
Проверяем.
Хреново только, что чем больше шаров, тем тяжелее движение. Или это только на моем стареньком 386-м компутере?
Да, это все для мувика с размерами 400Х400.
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный.
(S.Wizard)

Старый 30.07.2003, 23:12
Пушистик вне форума Посмотреть профиль Отправить личное сообщение для Пушистик Посетить домашнюю страницу Пушистик Найти все сообщения от Пушистик
  № 22  
Пушистик
Bumble Bee
[+1 05.07.06]
 
Аватар для Пушистик

Регистрация: May 2003
Адрес: Третья планета от Солнца
Сообщений: 1,254
Отправить сообщение для Пушистик с помощью ICQ
крута!ну тада можно просто взять такие шарики раздела исходники!
__________________
Portfolio

Старый 31.07.2003, 08:29
cyraxchel вне форума Посмотреть профиль Отправить личное сообщение для cyraxchel Найти все сообщения от cyraxchel
  № 23  
cyraxchel
"Аинслей"
 
Аватар для cyraxchel

Регистрация: Apr 2003
Адрес: Russia, Chelyabinsk
Сообщений: 359
Отправить сообщение для cyraxchel с помощью ICQ
2Supnabor:
Спасибо, что подметил ошибку. А то бы вааще забил бы на этот хитТест.

2sergwizard:

Твой вариант обязательно попробую. Только позже. Торопят сильно. А в коде надо разобраться. =) Да и шаров порядка 20 штук. И помимо этого еще дополнительная анимация с уменьшением клипа, в котором беснуются шары.

Всем СПАСИБО!
__________________
Мы не съедобны.

Старый 31.07.2003, 09:46
cyraxchel вне форума Посмотреть профиль Отправить личное сообщение для cyraxchel Найти все сообщения от cyraxchel
  № 24  
cyraxchel
"Аинслей"
 
Аватар для cyraxchel

Регистрация: Apr 2003
Адрес: Russia, Chelyabinsk
Сообщений: 359
Отправить сообщение для cyraxchel с помощью ICQ
2sergwizard:

Попробовал твой вариант. Классно. Но не для моего случая. У меня показывается хаотичное движение молекул в колбе. Такая вот муть. =)

Кстати, насчет количества шаров - ты прав. У меня тоже притормаживать начинает.
__________________
Мы не съедобны.

Старый 01.08.2003, 19:57
cyraxchel вне форума Посмотреть профиль Отправить личное сообщение для cyraxchel Найти все сообщения от cyraxchel
  № 25  
cyraxchel
"Аинслей"
 
Аватар для cyraxchel

Регистрация: Apr 2003
Адрес: Russia, Chelyabinsk
Сообщений: 359
Отправить сообщение для cyraxchel с помощью ICQ
Люди, поможите, если сможете.

Опять трабл с этим делом. Шарики (молекулы) скачут в некотором прямоугольном объеме. Мне нужно, чтобы после того, как шарики какое-то время поскакали, они высыпались через открывшееся отверстие (оно уже чем дно и находится посередине) внизу объема. И не получается.
HELP!

Если есть возможность удалять onClipEvent(EnterFrame), подскажите, как. Сделаю через него.
__________________
Мы не съедобны.


Последний раз редактировалось cyraxchel; 01.08.2003 в 19:59.
Старый 02.08.2003, 13:28
Пушистик вне форума Посмотреть профиль Отправить личное сообщение для Пушистик Посетить домашнюю страницу Пушистик Найти все сообщения от Пушистик
  № 26  
Пушистик
Bumble Bee
[+1 05.07.06]
 
Аватар для Пушистик

Регистрация: May 2003
Адрес: Третья планета от Солнца
Сообщений: 1,254
Отправить сообщение для Пушистик с помощью ICQ
cyraxchel, кидай сорс на мыло!
morientes@mail.ru
чё нибудь придумаем:))
__________________
Portfolio

Старый 02.08.2003, 13:40
cyraxchel вне форума Посмотреть профиль Отправить личное сообщение для cyraxchel Найти все сообщения от cyraxchel
  № 27  
cyraxchel
"Аинслей"
 
Аватар для cyraxchel

Регистрация: Apr 2003
Адрес: Russia, Chelyabinsk
Сообщений: 359
Отправить сообщение для cyraxchel с помощью ICQ
Все, отправил.
__________________
Мы не съедобны.

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

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

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


 


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


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