Форум 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=158534)

stweet 20.06.2011 20:24

Теория, функции.
 
Код AS3:

// вопрос:
// В данном случае происходит дублирование функции?
 
tween([sprite1, x, y]);
tween([sprite2, x, y]);
 
private function tween(arg:Array):void
{
        arg[0].x += (arg[1] - arg[0].x) * .2;
        arg[0].y += (arg[2] - arg[0].y) * .2;
}
 
// или всё же правильнее будет:
 
arr:Array = [];
 
tween(sprite1, x, y);
tween(sprite2, x, y);
 
private function tween(... ar):void
{
        arr.unshift(ar);
 
        for (var i:int = arr.length; i-- > 0;)
        {
                arg[i][0].x += (arg[i][1] - arg[i][0].x) * .2;
                arg[i][0].y += (arg[i][2] - arg[i][0].y) * .2;
        }
}


wvxvw 20.06.2011 20:59

А почему не так?
Код AS3:

private function tween(sprite:DisplayObject, xPos:Number, yPos:Number):void
{
    sprite.x += transform(xPos, sprite.x);
    sprite.y += transform(yPos, sprite.y);
}
 
private function transform(position:Number, property:Number):Number
{
    return (position - property) * 0.2;
}


dimarik 20.06.2011 21:39

будит. оно меня все время будит. а так хочется поспать!

stweet 21.06.2011 00:51

Цитата:

Сообщение от wvxvw (Сообщение 1005179)
А почему не так?

суть вопроса в другом.
Цитата:

В данном случае происходит дублирование функции?

wvxvw 21.06.2011 01:13

Я просто ни в том ни в другом случае не вижу смысла создавать массив... А можно как-то словами объяснить в чем именно проблема? А то мне без этого не совсем понятно... Вот если бы ссылки на геттеры и сеттеры можно было передавать, тогда можно было бы более короткую / универсальную запись сделать, а без этого я не вижу лучших вариантов.

i.o. 21.06.2011 01:13

Цитата:

В данном случае происходит дублирование функции?
угу...

kackbip 21.06.2011 07:38

Я что-то не понял, что такое дублирование функции.

terbooter 21.06.2011 09:42

А что такое дублирование функции?

kackbip 21.06.2011 09:50

Если речь о повторном создании объекта функции то нет.
Если речь о повторном вызове то сколько раз вызовете столько раз и вызовется. :)
Странный вопрос :)

i.o. 21.06.2011 11:19

Цитата:

А что такое дублирование функции?
Код AS3:

        arg[0].x += (arg[1] - arg[0].x) * .2;
        arg[0].y += (arg[2] - arg[0].y) * .2;

В строке и 1 и 2 происходит одно и то же действие (Y/N) ?

kackbip 21.06.2011 11:33

Цитата:

Сообщение от i.o. (Сообщение 1005309)
Код AS3:

        arg[0].x += (arg[1] - arg[0].x) * .2;
        arg[0].y += (arg[2] - arg[0].y) * .2;

В строке и 1 и 2 происходит одно и то же действие (Y/N) ?

Ессно, нет. Это типа в этом вопрос заключался?

stweet 22.06.2011 16:11

Цитата:

Сообщение от wvxvw (Сообщение 1005254)
Я просто ни в том ни в другом случае не вижу смысла создавать массив...

там система чутка сложнее, нужно просчитать путь от одной точки к другой. В массив может попасть не одна а несколько объектов. Я привёл пример на кусочке кода, что то типа этого:
Код AS3:

                private function tween(arg:Array):void 
                {
                        var timer:Timer = new Timer(10);
                                timer.addEventListener(TimerEvent.TIMER, ON_TIMER);
                                timer.start();
 
                        function ON_TIMER(e:TimerEvent):void
                        {
                                if (arg[0].x != arg[1] || arg[0].y != arg[2])
                                {
                                        arg[0].x += (arg[1] - arg[0].x) * .2;
                                        arg[0].y += (arg[2] - arg[0].y) * .2;
 
                                        if (arg[1] - arg[0].x < 1 && arg[1] - arg[0].x > -1) arg[0].x = arg[1];
                                        if (arg[2] - arg[0].y < 1 && arg[2] - arg[0].y > -1) arg[0].y = arg[2];
                                }
 
                                if (arg[0].x == arg[1] && arg[0].y == arg[2]) {
 
                                        timer.stop();
                                        timer.removeEventListener(TimerEvent.TIMER, ON_TIMER);
                                        timer = null;
 
                                        arg[0].mouseEnabled = true;
                                }
 
                                e.updateAfterEvent();
                        }
                }

и меня интересовало, если такую фукцию вызвать дважды, второй вызов может припятствовать первому или первый второму?

Цитата:

Сообщение от i.o. (Сообщение 1005309)
Код AS3:

        arg[0].x += (arg[1] - arg[0].x) * .2;
        arg[0].y += (arg[2] - arg[0].y) * .2;

В строке и 1 и 2 происходит одно и то же действие (Y/N) ?

нет, в место ".2" могут быть разные параметры. Цифры выставленны временно и так совпало что одинаковые)


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

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