Форум 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)
-   -   Некорректная работа Tween (http://www.flasher.ru/forum/showthread.php?t=105189)

Волгоградец 10.12.2007 12:34

Некорректная работа Tween
 
Вложений: 1
Привет. Вот код перемещения клипа при клике мышкой на рабочем поле в точку клика. Проблема в следующем: при столкновении с объектом клип иногда ведет себе как должен - т.е. останавливается - а иногда как будто отскакивает - т.е. резко появляется в случайном месте экрана далеко от препятствия.
Код:

_root.onMouseDown = function (){
        c = this._xmouse;
        d = this._ymouse;
        import mx.transitions.Tween;
        var a:Tween = new Tween(ball, "_x", mx.transitions.easing.None.easeNone, ball._x, c, 1, true);
        var b:Tween = new Tween(ball, "_y", mx.transitions.easing.None.easeNone, ball._y, d, 1, true);
        ball.onEnterFrame = function (){
                if (this.hitTest(square)){
                        q = this._x;
                        w = this._y;
                        //trace (this._x);
                        //trace (this._y);
                        a.stop ();
                        b.stop ();
                        delete this.onEnterFrame;
                        if (this._x <= 300){
                                this._x = q - 2;
                                this._y = w - 2;
                        }
                        if (this._x >= 300){
                                this._x = q + 2;
                                this._y = w + 2;
                        }
                }
        }
}

В чем проблема? Или это кривые руки?
P.S.: может кто-то подскажет другой вариант поведения клипа при столкновении.

Вот исходник:

wvxvw 10.12.2007 12:42

Лучше не в onEnterFrame проверять а в onMotionChanged того твина, который работает с клипом, который нужно хиттестить. Да и объекты лучше одним твином двигать, а не двумя...

CrazyFlasher 10.12.2007 12:45

по мне так лучше вообще этот твин не использовать!:rtfm:

Волгоградец 10.12.2007 13:47

wvxvw, научи пжлста, как в один твин запихнуть изменение по _x и _y...
СумашедшийФлэшер, почему его лучше не использовать? На форуме ему (Твину) дифирамбы поют...

etc 10.12.2007 13:58

Поищите TweenExtended.

Волгоградец 10.12.2007 14:41

__etc, поискал. Нашел. А как теперь использовать? Я с ООП как-то не очень... Как вообще добавлять сторонние классы? Import'ом? Или в специальную папку нужно положить? Сори за ламерский вопрос...

Добавлено: файл .mxp.

etc 10.12.2007 14:48

В каком виде? В mxp?

Волгоградец 10.12.2007 16:05

Файл в .mxp.

etc 10.12.2007 16:10

Ну тогда надо просто запустить его (если не запускается, то установить через Extension Manager). Документация по классу появится потом в панели хелпа.

wvxvw 10.12.2007 16:14

Да ну, нормально он работает (Твин в смысле)...
Код:

import mx.transitions.Tween;
import mx.transitions.easing.*;
//
var tw:Tween = new Tween(mc,"_x",Regular.easeInOut,0,300,3,true);
tw.onMotionChanged = function():Void {
        trace(this.time); // Время, сколько проигрывается анимация
        trace(this.position); // 1..0, значение изменения параметра, который анимируется (0-изначальное положение, 1-конечное).
        trace(this.obj); // Ссылка на объект, который анимируется.
        this.obj._y = this.obj._x;
}

а класс Tween ничем особенным от других кем угодно написаных классов не отличается. Можно и самому его аналог написать, и пользоваться другими, вот, еще есть MCTween - я спокойно живу с тем, что пришло вместе с Флешем и мне хватает %)


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

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