В строке 8 мы возвращаем значения x и y (которые являются координатами в системе Flash) в виде массива.
Последний метод объекта isometricAS, который мы будем рассматривать в этом разделе, делает нечто, что мы еще не обсуждали:
1 isometricAS.prototype.mapToIsoWorld =function(screenX,
.screenY){
2 var z =(screenX/this.cosAlpha-screenY/
.(this.sinAlpha*this.sinTheta))*
.(1/(this.cosAlpha/this.sinAlpha+
.this.sinAlpha/this.cosAlpha));
3 var x =(1/this.cosAlpha)*(screenX-z*this.sinAlpha);
4 return [x,z ];
5 };
Эта функция проецирует координаты (x, y) из системы Flash в изометрическую систему. Поскольку у нас есть лишь x- и y-координаты из системы Flash, мы не можем спроецировать положение точки в координаты (x, y, z) в изометрической системе; мы можем лишь спроецировать его на две координаты. Этот метод полезен, когда мы хотим захватить положение курсора мыши пользователя и затем вычислить его координаты в изометрическом мире.
Если вы когда-нибудь играли в игру Минигольф (Mini Golf) от Electrotank, то вы видели, как это используется; когда вы перемещаете курсор вокруг персонажа, персонаж крутится за ним. Затем, когда вы кликаете, персонаж ударяет по шару. Для вычисления угла, который курсор мыши образует с персонажем, мы проецируем координаты мыши в изометрический мир. Угол, как он виден на экране, не является истинным углом в изометрическом мире.
Мы не собираемся использовать этот метод в данном разделе, но мы покажем его прямое применение в последнем разделе этой главы. Я не собираюсь описывать математику, использованную в приведенных выше уравнениях, поскольку она довольно трудна, но я скажу вам, что я использовал уравнения из метода mapToScreen() и двигался от них в обратном направлении.
Выберите кадр в слое Actions и откройте панель Actions. Давайте посмотрим на первые три строки кода ActionScript:
1 iso =new isometricAS();
2 ball ={x:0,y:0,z:0,clip:floor.ball,
.shadowClip:floor