Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   как сделать эффект Wiggle (http://www.flasher.ru/forum/showthread.php?t=215524)

Кот Баюн 08.05.2018 14:21

как сделать эффект Wiggle
 
Всем привет!
Вопрос у меня такой есть.
В известной программе After Effects есть выражение wiggle (с двумя параметрами), которое может дать хаотичное движение.
Например если прописать wiggle на свойства x,y, объект будет рандомно дрожать (смещаться) на произвольное значение по x-y, туда и обратно, но не убегая далеко с места
Как такое реализовать средствами AS2?

Tails 08.05.2018 14:37

Ну это же очень просто. Запомнить начальную позицию и генерировать точки со смещением от неё.

Кот Баюн 08.05.2018 16:53

ребят, я тупой. объясните :)
может есть исходник у кого похожий, который можно переработать?

Добавлено через 1 час 55 минут
на основе одного исходника из интернета создал немного модифицированный код, но результат слишком часто трясется.
как сделать помедленнее, пока не знаю :)

Код AS1/AS2:

onClipEvent (enterFrame) {
        function shake(){
                shakex = random(20)-10;
                shakey = random(20)-10;
                shakex *= 0.1;
                shakey *= 0.1;
                if(shakex<1 && shakey<1){
                        this._x = 0;
                        this._y = 0;
                }
        }
        setInterval(shake,1000);
        this._x -= shakex;
        this._y -= shakey;
}
onClipEvent (enterFrame) {
        if (this._x>310) {
                this._x=309;
                trace("X =" + this._x);
        }
}
onClipEvent (enterFrame) {
        if (this._y>310) {
                this._y = 309;
                trace("Y =" + this._y);
        }
        if (this._y<300) {
                this._y = 300;
        }
}


ALeXVoz 08.05.2018 18:52

Код AS1/AS2:

var x:Number = 50;
var y:Number = 50;
var dx:Number = 2;
var dy:Number = 2;
 
mc.onEnterFrame = function () {
    mc._x = Math.round(x + Math.random() * dx)
    mc._y = Math.round(y + Math.random() * dy)
}

Как то так. Можно не использовать целые и убрать округления. Надо экспериментировать как лучше будет.
AS2 че то подзабыл уже. Мож в синтаксисе немного ошибся.

Кот Баюн 08.05.2018 18:57

этот код действует примерно как и тот, что я нашел в инете, он дает резкое дрожание, но не мягкое шевеление :)

Tails 08.05.2018 19:30

Подключите твин. Генерируете точки - запускаете твин, по завершению анимации генерируете ещё раз и т.д. У твина есть бонус - выбор функции изинга, удобно будет менять характер "дрожания".

Кот Баюн 08.05.2018 21:17

программно просто удобнее
можно отключить по необходимости, а твин не отключишь

Tails 08.05.2018 22:01

Я имел ввиду программный твин, например этот.

Кот Баюн 08.05.2018 22:05

это плагин, получается?
он создает свои классы?
при сборке SWF он зашивается внутрь?

Tails 08.05.2018 22:14

Вот тут все исходники для AS2:
https://github.com/greensock/GreenSock-AS2

Это библиотека классов. Скачайте, добавьте к себе в проект и используйте так, как указано в примерах на сайте. При сборке swf зашивается внутрь.


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

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