Форум 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)
-   -   Нужна помощь в экшинскрипте (http://www.flasher.ru/forum/showthread.php?t=100620)

goword 31.08.2007 15:39

Нужна помощь в экшинскрипте
 
http://www.flashmint.com/show-template-1980.html
очень нужно создать этот эффект - может поможите ссылкой на подобный урок или дадите нужное направление... Спасибо

chingachgoog 31.08.2007 15:56

искать по слову "эластики" или "инерция движения".
В общем чистая физика движения начальной школы.

Eric Gurt 31.08.2007 22:50

лан, отвечу, пока тему еще не закрыли =)

у каждой кнопки должны быть доп. переменные скорости: по Х и У.
скорость по Х и У всегда прибавляется (или вычитается :) ): (начальное положение-текущее)*0.1. К позиции кнопки каждую еденицу времени прибавляется скорость (Х к Х, У к У). Чтобы кнопка все время не дергалась - каждую ед. времени скорости делаешь *= 0.99.

Думаю, я ответил на твой вопрос.

goword 31.08.2007 23:08

Спасибо. Как я понял это ускорение?
По запросам "эластики" или "инерция движения" - ничего не нашел

Eric Gurt 01.09.2007 00:58

для тебя это просто 2 переменные, которые прибавляются каждый кадр к положению твоего мувика.

D12 01.09.2007 20:51

2Goword вот держи точку опоры =) нитки сам примотаешь :)
Код:

createEmptyMovieClip("asteroid", 1);
with (asteroid) {
        lineStyle(1, 0xFFFFFF, 50);
        beginFill(0x6633CC, 70);
        moveTo(-15, -15);
        lineTo(15, -15);
        lineTo(15, 15);
        lineTo(-15, 15);
        lineTo(-15, -15);
        endFill();
}
asteroid._x = 275;
asteroid._y = 200;
///***///
var homeX:Number = asteroid._x;
var homeY:Number = asteroid._y;
var friction:Number = 0.8;
var ratio:Number = 0.3;
var speedX:Number = 0;
var speedY:Number = 0;
var HeightY:Number = 50;
var HeightX:Number = 100;
var Maxi_y:Number = homeY+HeightY;
var Min_y:Number = homeY-HeightY;
var Maxi_x:Number = homeX+HeightX;
var Min_x:Number = homeX-HeightX;
var Go:Number = 0;
///***///
asteroid.onEnterFrame = function() {
        if (this.hitTest(_root._xmouse, _root._ymouse, true)) {
                Go = 1;
        }
        if (Go == 1) {
                startDrag(this);
        }
        if (this._x<Min_x || this._x>Maxi_x || this._y<Min_y || this._y>Maxi_y) {
                Go = 2;
        }
        if (Go == 2) {
                speedX = speedX*friction+(homeX-this._x)*ratio;
                speedY = speedY*friction+(homeY-this._y)*ratio;
                this._x += speedX;
                this._y += speedY;
                stopDrag();
        }
};

2Eric Gurt Фазаны говоришь :) Хех =)

udaaff 01.09.2007 22:18

D12, прикольная штука, переписал под себя, если кому-то интересно, мой вариант:
Код:

//
class Jamper extends MovieClip {
        /**
        */
        private var _x0:Number;
        private var _y0:Number;
        private var _xMax:Number;
        private var _yMax:Number;
        private var _xA:Number;
        private var _yA:Number;
        private var _i:Number;
        /**
        */
        public function Jamper() {
                _x0 = _x;
                _y0 = _y;
                _xMax = 100;
                _yMax = 50;
        }
        /**
        */
        function onRollOver() {
                onEnterFrame = null;
                startDrag(false);
                onMouseMove = __chekPosition;
        }
        //
        private function __chekPosition() {
                if (Math.abs(_x-_x0)>_xMax || Math.abs(_y-_y0)>_yMax) {
                        _i = 0;
                        _xA = _x-_x0;
                        _yA = _y-_y0;
                        stopDrag();
                        onEnterFrame = __moving;
                        onMouseMove = null;
                }
        }
        //
        private function __moving() {
                if (Math.abs(_xA)<1 && Math.abs(_yA)<1) {
                        _x = _x0;
                        _y = _y0;
                        onEnterFrame = null;
                }
                _i += 30;
                _x = _x0+_xA*Math.cos(_i*Math.PI/180);
                _y = _y0+_yA*Math.cos(_i*Math.PI/180);
                _xA *= .9;
                _yA *= .9;
        }
}

P.S. Твою формулу изменения скорости пришлось заменить на формулу с амплитудой, чтобы можно было отловить тот момент, когда мувик практически перестанет двигаться, для того, чтобы обнулить onEnterFrame. :victory:

goword 02.09.2007 14:28

Вложений: 1
D12, спасибо вот где ме нужно реализовать этот эффект

Как же привязать к тексту эту ленточку... чтобы текст руководил ленточкой?

D12 02.09.2007 20:11

тоесть я полагаю вам нужно чтобы ленточка была привязанна к активной кнопке на которой находится курсор ?
до завтра потерпишь ?

goword 02.09.2007 20:35

Мне бы понять суть... Сам с радостью заделаю...
ДА и в коде D12 - сейчас разбираюсь...


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

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