Эта функция обрабатывает положение персонажа на экране. Она вызывается здесь, но также вызывается в каждом кадре в событии onEnterFrame:
1 function positionCharacter(){
2 world.char.x =world.char.tempx;
3 world.char.y =world.char.tempy;
4 world.char.z =world.char.tempz;
5 var temp =iso.mapToScreen(world.char.x,world.char.y,
.world.char.z);
6 world.char.clip._x =temp [0 ];
7 world.char.clip._y =temp [1 ];
8 }
В строках 2-4 мы устанавливаем координаты персонажа x, y и z, основываясь на его текущих временных координатах в памяти. Затем мы используем эти координаты для определения координат персонажа x и y на экране, применяя метод mapToScreen() объекта isometricAS. Наконец, мы размещаем персонажа на экране.
Следующим логическим шагом было бы рассмотрение функции, используемой для перемещения персонажа от одной точки к другой. Но в процессе этого движения происходит обнаружение столкновения, путем использования щупалец, которые определяют, вошел ли персонаж в ячейку, содержащую объект. Прежде мы поговорим о том, как перемещать персонажа, давайте поговорим о функциях, которые создают объекты на экране и изменяют типы отображаемых плиток.
1 function makeObject(x,z,object){
2 world.tiles [x ][z ].isObject =true;
3 world.tiles [x ][z ].clip.objects.gotoAndStop(object);
4 }
5 function changeGroundTile(x,z,object){
6 world.tiles [x ][z ].clip.innerTile.gotoAndStop(object);
7 }
8 function changeManyGroundTiles(x,xnum,z,znum,object){
9 for (var i =0;i<xnum;++i){
10 for (var j =0;j<znum;++j){
11 world.tiles [x+i ][z+j ].clip.innerTile.gotoAndStop
.(object);
12 }
13 }
14 }
Эти три функции довольно очевидны. Первая из них, makeObject(), добавляет объект (растение или блок) в плитку. При этом она также устанавливает свойство isObject в true в массиве tiles. Мы используем свойство isObject со щупальцами, когда обнаруживаем столкновение. В следующей функции, changeGroundTile(), просто тип отображаемой плитки