Давайте посмотрим на операторы слоя Object Definitions. Вначале мы видим это:
1 isometricAS =function (maxx,maxz){
2 this.maxx =maxx;
3 this.maxz =maxz;
4 this.theta =30;
5 this.alpha =45;
6 this.theta *=Math.PI/180;
7 this.alpha *=Math.PI/180;
8 this.sinTheta =Math.sin(this.theta);
9 this.cosTheta =Math.cos(this.theta);
10 this.sinAlpha =Math.sin(this.alpha);
11 this.cosAlpha =Math.cos(this.alpha);
12 };
Сначала мы создаем сам объект с именем isometricAS. Создавая его как функцию объекта, мы настраиваем его таким образом, чтобы мы могли позднее создавать экземпляры этого объекта вызовом конструктора new isometricAS(). Тут есть два параметра maxx и maxz. Мы рассмотрим их в следующем разделе, поскольку они применяются только в методе calculateDepth(). В строках 4 и 5 мы устанавливаем углы, которые необходимы, чтобы мир был изометрическим - 30? и 45?. Затем, в следующих нескольких строках мы вычисляем синус и косинус этих углов и сохраняем значения. (Это способ не вычислять их каждый раз, когда они нам потребуются.)
Далее мы создаем следующий метод для объекта isometricAS:
1 isometricAS.prototype.mapToScreen =function(xpp,ypp,zpp){
2 var yp =ypp;
3 var xp =xpp*this.cosAlpha+zpp*this.sinAlpha;
4 var zp =zpp*this.cosAlpha-xpp*this.sinAlpha;
5 var x =xp;
6 var y =yp*this.cosTheta-zp*this.sinTheta;
7 //var z =zp*this.cosTheta+yp*this.sinTheta;
8 return [x,y ];
9 };
Этот метод принимает координаты точки в изометрической системе и проецирует ее x- и y-координаты в систему Flash. Это выполняется с помощью тех же математических вычислений, что мы рассмотрели ранее в этом разделе.
Обратите внимание, что строка 7 закомментирована. Ранее в этом разделе, когда мы говорили о математике, я упоминал, что нам не потребуется z-координата, когда мы будем в системе Flash. Я сохранил эту строку ActionScript просто на случай, если она вам понадобится. Если вы когда-нибудь решите отобразить не-изометрический вид, в котором вам нужно будет применить изменения перспективы, то вам понадобится эта координата