Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   страх перед курсором (http://www.flasher.ru/forum/showthread.php?t=67857)

Art-dir 12.08.2005 23:42

страх перед курсором
 
Уважаемые флешеры!

Подскажите, как реализовать такую лабуду, дабы был какой-либо объект (например квадрат) и чтобы он постоянно "бегал" от курсора.

Может кто знает примеры или хорошие способы реализации? :confused:

Король 13.08.2005 01:40

хороший способ реазилации - высчитывать расстояние от объекта до курсора с помощью теоремы пифагора и при достижении критической отметки - двигать объект в ту же сторону, в которую двигается курсор

TERRORist 13.08.2005 02:02

Цитата:

Сообщение от король
хороший способ реазилации - высчитывать расстояние от объекта до курсора с помощью теоремы пифагора и при достижении критической отметки - двигать объект в ту же сторону, в которую двигается курсор

"двигать объект в ту же сторону, в которую двигается курсор" - лучше посчитать угол и двигать в направлении от курсора. это будет
действительно "трусливый" квадрат.

Ion 13.08.2005 02:26

А можно ещё когда по событию onMouseUp высчитывать рандомную координату и оттаскивать туды объект

Niketas 13.08.2005 02:33

готово!
 
Вот. Сидел, f@ck'ал себе мозги, сделал.
Скорее всего, это не то, что тебе нужно, но тоже ничего. Зато все понятно =)
________________________________

А вот что надо делать:
1. Рисуешь квадрат, F8>Movieclip, называешь quad (имею в виду Instance Name).
2. Создаешь второй кадр, такой же как и первый.
3. В Actions первого пишешь следующий код:
PHP код:

//действие разворачивается при загрузке этого кадра
    
ifFrameLoaded(1) {
    
//высчитаем расстояние от курсора до квадрата
    
var Length;
    
Length int(Math.sqrt((_root._xmouse _root.quad._x)*(_root._xmouse _root.quad._x)+(_root._ymouse _root.quad._y)*(_root._ymouse _root.quad._y)));
    
//если расстояние больше или равно 100 пикселям, то все нормально - квадрат на месте
    //100 - условное значение, при желании его можно регулировать, введя переменную 
    
if (Length>=100) {
        Return;
    }
    
//противный случай: курсор попал в область 100 пикселей от квадрата
    //область имеет форму окружности - для наглядности работы квадрат
    //помещен как раз в такую
    
else {
        
//находим синус и косинус угла между quad и курсором
        
var AngleSin,AngleCos,xWay,yWay,Way;
        
AngleSin = (_root.quad._y-_root._ymouse)/Length;
        
AngleCos = (_root.quad._x-_root._xmouse)/Length
        
//считаем прямой путь
        
Way=100-Length;
        
//считаем путь по координатам
        
xWay=Way*AngleCos;
        
yWay=Way*AngleSin;
        
//перемещаем quad
        
_root.quad._x += xWay;
        
_root.quad._y += yWay;
        
//теперь подумаем, что же должен делать квадрат, перемещаясь за сцену
        //при этом его координаты становятся либо отрицательными, либо больше
        //габаритов сцены
        //для того, чтобы квадрат за сцену не уезжал, он будет упираться в края
        //прямоугольника, отстоящего от сторон сцены на 20 пикселей (чтобы 
        //квадрат не упирался в стенку)
        
if (_root.quad._x<30) {
            
_root.quad._x=30;
        }
        if (
_root.quad._x>520) {
            
_root.quad._x=520;
        }
        if (
_root.quad._y<30) {
            
_root.quad._y=30;
        }
        if (
_root.quad._y>370) {
            
_root.quad._y=370;
        }
        
//радуйтесь!
        
}
}; 

4. Ясен пень, что это не php-код, но так читабельнее - имхо.
5. Следует учитывать, что сцена имеет стандартные размеры 550x400, иначе меняете некоторые значения внизу кода.
6. Если вы хотите разобраться, как же этот бред работает, то вам непременно нужно скачать себе сцену.
7. Если вам лень качать, открывать, разбираться в .fla-сцене, можете потестить готовый swf.
Разобраться: quad.fla
Потестить: quad.swf

TERRORist 13.08.2005 02:54

спаситель!

Ion 13.08.2005 02:55

Прикольно, только фла у мя не открылся. Эту тему, кстати над заюзать в Physical Engine, а то там народ (включая меня) уже заворотом мозгов страдать начинает

TERRORist 13.08.2005 03:04

да в сущности ничем он там не поможет.

TERRORist 13.08.2005 03:06

если б желание було, забодяжил бы я физ движок. благо опыт есть. мож подумаю.

Niketas 13.08.2005 03:17

Цитата:

Сообщение от TERRORist
если б желание було, забодяжил бы я физ движок. благо опыт есть. мож подумаю.

Опять ты, чйортофф флэймер :mad:
Возвращайся обратно!!! :D
Цитата:

Сообщение от Ion
Прикольно, только фла у мя не открылся.
Тыкаешь в ссылку, попадаешь на страницу agava. там тыкаешь в файл, и он уже сохраняется. У меня получалось :confused:


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

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