Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Привязка физической "нитки" (http://www.flasher.ru/forum/showthread.php?t=203427)

Gewer 24.09.2013 00:17

Привязка физической "нитки"
 
Доброе время суток.

Флешем занялся совсем недавно, с целью создать небольшой сайт-визитку по устоявшемуся дизайну, поэтому знаю очень мало и делаю всё по туторам из интернета.

Чтобы Вам понять, чего я хочу добиться, вот ссылка на то, что уже мной сделано: http://smartvel.ru/secret/flsh/web_main.swf

Я подозреваю, что код кривой и громоздкий (прикреплю в конец) и что можно сделать намного лучше, но суть не в этом. Вот эти криво анимированные нити от центра к кнопкам нужно сделать физическими, а также прикрепить их к вылетающим из центра кнопкам. Как это сделать? Нужно использовать какой-то физ. движок? Если можно, то поподробнее, буду очень признателен, если кто-то уделит время нубу.

Если есть какие-то советы и рекомендации начинающему флешеру - не откажусь.

p.s.
AS3.0 - это вообще первый язык, на котором я что-то писал и Flash я впервые в жизни открыл 3 дня назад, так что, как принято говорить на форумах, не судите строго. И не бросайтесь непонятками, пожалуйста :)

Код AS3:

//БОЛЬШАЯ КНОПКА
//выключаем маленькую кнопку
button.enabled=false
button2.enabled=false
 
//добавляем слушатель событий (клик на лого)
button_c.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);
function fl_MouseClickHandler(event:MouseEvent):void
 
//если анимация маленькой кнопки в 1-м кадре, то она проигрывается,
{       
        if (bba.currentFrame==1 && AN1.currentFrame==1)
        {
        AN1.gotoAndPlay(1);
        bba.gotoAndPlay(1);
        cam.gotoAndPlay(1);
        line.gotoAndPlay(1);
        video.gotoAndPlay(1);
        AN2.gotoAndPlay(1);
        bba2.gotoAndPlay(1);
        lamp.gotoAndPlay(1);
        line2.gotoAndPlay(1);
        svettext.gotoAndPlay(1);
 *
//активируется баттон и ему присваивается слушатель
button.enabled=true
button2.enabled=true
button.addEventListener(MouseEvent.MOUSE_OVER, fl_MouseOverHandler);
function fl_MouseOverHandler(event:MouseEvent):void
 *
//Продолжается анимация кнопки при наведении
{
        AN1.play()
}
 
button2.addEventListener(MouseEvent.MOUSE_OVER, fl_MouseOverHandler2);
function fl_MouseOverHandler2(event:MouseEvent):void
{
        AN2.play()
}
 
//Слушатель -схождение мыши с маленькой кнопки
button.addEventListener(MouseEvent.MOUSE_OUT, fl_MouseOutHandler);
function fl_MouseOutHandler(event:MouseEvent):void
 
//Анимация приостанавливается
{
        AN1.stop()
}
button2.addEventListener(MouseEvent.MOUSE_OUT, fl_MouseOutHandler2);
function fl_MouseOutHandler2(event:MouseEvent):void
 
//Анимация приостанавливается
{
        AN2.stop()
}
//Если анимация не в первом кадре, то клик мышкой по лого проигрывает её назад
        }
}
        button_c.addEventListener(MouseEvent.CLICK, click2);
        function click2(event:MouseEvent):void
{
        if (bba.currentFrame==16 && AN1.currentFrame>=13)
        {
 *
        button.addEventListener(Event.ENTER_FRAME, enter)
        function enter(event:Event):void
        {
        button.enabled=false;
        button2.enabled=false;
        AN1.prevFrame();
        bba.prevFrame();
        cam.prevFrame();
        line.prevFrame();
        video.prevFrame();
        AN2.prevFrame();
        bba2.prevFrame();
        lamp.prevFrame();
        line2.prevFrame();
        svettext.prevFrame();
 *
        //Удаляем слушатель, если анимация опять в начале!
        button_c.addEventListener(MouseEvent.CLICK, click3);
        function click3(event:MouseEvent):void
{
        if(bba.currentFrame==1 && AN1.currentFrame==1 && cam.currentFrame==1 && line.currentFrame==1 && video.currentFrame==1 && bba2.currentFrame==1 && AN2.currentFrame==1 && lamp.currentFrame==1 && line2.currentFrame==1 && svettext.currentFrame==1)
        {
        button.removeEventListener(Event.ENTER_FRAME, enter)
}
}
}
}
}
 
//Анимация центрального логотипа
anim_c.stop()
button_c.addEventListener(MouseEvent.MOUSE_OVER, fl_MouseOverHandler_2);
 
function fl_MouseOverHandler_2(event:MouseEvent):void
{
        anim_c.gotoAndPlay(currentFrame)
}
 
button_c.addEventListener(MouseEvent.MOUSE_OUT, mout_1);
 
function mout_1(event:MouseEvent):void
{
        anim_c.gotoAndPlay(11)
}


elder_Nosferatu 24.09.2013 06:25

Блог тов. Волгоградца. Если немного пороетесь, то найдете 5 статей из цикла "Эксперименты с физикой". В одной из них он приводил пример реализованой собственными трудами "веревки". Может подойдет

Gewer 24.09.2013 09:56

Цитата:

Сообщение от elder_Nosferatu (Сообщение 1146789)
Блог тов. Волгоградца. Если немного пороетесь, то найдете 5 статей из цикла "Эксперименты с физикой". В одной из них он приводил пример реализованой собственными трудами "веревки". Может подойдет

Спасибо, покопаюсь. Если где-то встану в тупик - напишу.

Tails 24.09.2013 11:15

Какой там.. Нарисуйте анимацию ваших ниток руками и всё.

XoJlToH 24.09.2013 18:11

При необходимости параметрической задачи покурите https://code.google.com/p/bezier/
Или тут есть обзоры http://racer242.blogspot.com/2008/12/as3.html


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

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