Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > ActionScript 1,2 > Помогите разобрать код


Автор: Innuendo 22.6.2006, 13:58
Приветсвую.
Я тут мануал читаю и разбираю примеры в мануале. К книге вообще идёт и болванка с этими примерами, но мне болванки не досталась, и что-то не понимаю я тут...
Тут такой пример:
Код

var game;Object =  new Object();
game.columns = 10;
game.rows = 10;
game.spacing = 30;
game.depth = 1000;
game.path = this.grid;
game.numberOfTypes = 8;

function buildGrid() {
    for (var j:Number=0; J<game.rows; ++j) {
        for (var i:Number =0; i<game.columns; ++i) {
            var name:String = "cell"+i+"_"+j;
            var x:Number = i*game.spacing;
            var y:Number = j*game.spacing;
            var type:Number=1;
            game.path.attachMovie("cell", name, ++gamedepth);
            game.path[name]._x =x;
            game.path[name]._y =y;
            game[name] = {x:i, y:j, name:name, type:type, clip:game.path[name]};
        }
    }
}

Как бы суть понятна:
Есть общий объект game, где и хранятся все данные.
Строится матрица - сетка из мувиклипов. Это понтяно, и алгоритм построения простейший.
Но вот как понять строку 6 строку? game.path =  this.grid. Чем тут является grid? эту мувик клип тоже или что? И для чего здесь this?
и как потом в 15-16 строках к нему обращаются как к массиву?
и вот в последней строке строится что-то. Т.е. объекты можно рассматриват как массивы тоже, и всегда можно сделать object[key1] и т.д.?  

Автор: Maksys 22.6.2006, 17:11
Цитата(Innuendo @  22.6.2006,  16:58 Найти цитируемый пост)
game.path =  this.grid.

Объект game имеет локальную переменку path в которую заносится спецификация this.grid... другими словами чтоб всевремя не писать this.grid юзают эту перемку path.
Цитата(Innuendo @  22.6.2006,  16:58 Найти цитируемый пост)
game.path[name]._x =x;
            game.path[name]._y =y;

Это ни как к массиву это как к объекту это равносильно:
Код

  game.pathcell11._y =y;.. напирмер т.к. перебор в цикле.


Цитата(Innuendo @  22.6.2006,  16:58 Найти цитируемый пост)
Чем тут является grid

в коде не видно, но это скорее всего мс или какой нить объект...

Цитата(Innuendo @  22.6.2006,  16:58 Найти цитируемый пост)
И для чего здесь this

чтобы не писать полностью находясь на данной временной линии например ты находишся на мс show а мс grid находится в show, а show является мс-ом _root и чтоб не писать:
Код

_root.show.grid

пишут:
Код

this.grid

поскольку мы уже в show.... короче книгу надо тебе так на пальцах не объяснить... 

Автор: Innuendo 22.6.2006, 18:59
гы, ну спасибо. Думаю ещё разберусь.
Просто книга уже как-бы для того, кто знает ActionScript. Да и если б я болванку к книге взял, я бы сразу видел код вместе с объектами- легче было бы понять.

Добавлено @ 19:01 
а ещё:
а что "++gamedepth" эквивалентно "gamedepth++"? 

Автор: Maksys 23.6.2006, 06:22
Цитата(Innuendo @  22.6.2006,  21:59 Найти цитируемый пост)
а что "++gamedepth" эквивалентно "gamedepth++"?  

Чертас два...
Первое это инкремент а потом присваивание, а второе наоборот... 

Автор: Innuendo 23.6.2006, 12:36
т.е
++gamedepth =  gamedeth+=1
а gamedepth++ = gamedepth+1
? 

Автор: Maksys 23.6.2006, 20:15
Для особо "ОДАРЕННЫХ":
Код

var game:Number=0;
var gameDepth:Number=10;
game=gameDepth++;
trace("game: "+game+" gameDepth: "+gameDepth);
game=++gameDepth;
trace("game: "+game+" gameDepth: "+gameDepth);

А это ты мог и сам напечатать.... 

Автор: Innuendo 23.6.2006, 21:49
да, мог... спасибо.
Но вот если в цикле for i используется, то там в третьем параметре можно и i++ и ++i , один фиг будет? 

Автор: Maksys 23.6.2006, 22:37
Эксперементируй быстрее проэксперементировать чем глумпые вопросы задавать... 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)