Форум 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)
-   -   Длина массива и "-1" (http://www.flasher.ru/forum/showthread.php?t=133717)

noode 11.12.2009 03:54

Длина массива и "-1"
 
Всем привет, после просмотра урока о эффекте для движения курсора, задался вопросом в коде..
Буду признателен тем кто объяснит...

Код AS1/AS2:

onClipEvent(load){
        Mouse.hide();
        trail = new Array();
        trailNum = 0;
        speed = 4;
 
}
 
onClipEvent(enterFrame){
        var m:MovieClip = _root.attachMovie('mc', 'mc'+trailNum, trailNum);
        m._x = _root._xmouse;
        m._y = _root._ymouse;
 
        trail.push(m);
        trailNum++;
 
        for(i=trail.length-1;i>=0;i--){
                trail[i]._alpha-=speed;
                trail[i]._xscale-=speed;
                trail[i]._yscale-=speed;
                trace(i)
                if(trail[i]._alpha<=0){
                        trail.splice(0,1);
                        trail[i].removeMovieClip();
                        }
                }
 
 
        }


Непонятен именно этот момент:

i=trail.length-1

iflamberg 11.12.2009 04:13

это цикл от последнего элемента к первому. length - длина. Если в массиве один элемент, то length = 1, но индекс первого элемента - [0], если в массиве n эелементов, то индекс последнего элемента в массиве - [length-1].

noode 11.12.2009 09:13

это то все ясно...
но зачем "-1"

etc 11.12.2009 10:02

Ключевое слово во втором посте — «индекс».

noode 11.12.2009 10:35

тоесть в массиве первый элемент всегда должен быть с индексом 0 ?

Zik. 11.12.2009 10:45

Допустим есть массив
Код AS1/AS2:

var a:Array = [10, 20, 30, 40, 50, 60, 70, 80, 90]

Длина массива - 9
Индекс последнего элемента - 8
Потому что отсчет идет с нуля
Код:

10 - [0]
20 - [1]
30 - [2]
40 - [3]
50 - [4]
60 - [5]
70 - [6]
80 - [7]
90 - [8]

Собственно, если мы напишем просто .length, то в цикле произойдет ошибка, так как последнего элемента не будет существовать, так как мы будем обращаться к девятому индексу (length = 9), а конечный индекс = 8

noode 11.12.2009 17:49

"Потому что отсчет идет с нуля"
этого ответа было достаточно!))


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

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