Спасибо всем ответившим!
Продолжая дискуссию: пишу класс, вычисляющий скорость движения курсора мыши. Каким образом метод моего класса будет получать текущую координату курсора мыши без доступа к объекту stage (читай: не имея ссылки на объект stage)?
trace(stage) = null только если экземпляр этого класса не добавлен на таймлайн. НО! Добавить его туда я не могу, т.к. класс должен работать внутри других классов.
Прикладываю код класса, если кто захочет помочь советом. На данный момент экз. класса получает ссылку на сцену в кач. параметра.
Спасибо!
Код AS3:
package src.tools
{
import flash.events.*;
import flash.display.Stage;
/*
Класс, позволяющий вычислять скорость движения курсора мыши
и координаты курсора.
Имеет 2 приватных свойства: ссылка на таймлайн и массив координат мыши
Имеет 4 метода: возвращающают скорости по горизонтали и вертикали, а также
координаты курсора в данный момент.
*/
public class MouseWatcher
{
// Свойство получит ссылку на сцену
private var mStage:Stage;
// Свойство, содержит координаты курсора в предыдущий момент времени
// [0] - по горизонтали
// [1] - по вертикали
private var mPositionPrev:Array;
// Конструктор класса
public function MouseWatcher(mStage:Stage)
{
this.mPositionPrev = new Array();
// Определяем корневой таймлайн
this.mStage = mStage;
}
// Метод возвращает горозонтальную скорость курсора
// Один аргумент отвечающий за вывод скорости или ее модуля
public function mouseSpeedHor(abs:Boolean):Number
{
var mousePosHorCurr:Number;//Текущая координата курсора
var mousePosHorDiff:Number;// Разница между предыдущей и текущей координатой
mousePosHorCurr = this.mStage.mouseX;// Текущая координата мыши
mousePosHorDiff = mousePosHorCurr - this.mPositionPrev[0];// Разность координат
this.mPositionPrev[0] = mousePosHorCurr;// Текущая координата сохраняется как устаревшая
//Если надо найти модуль скорости ...
if (abs)
{
// ... то мы его вычисляем
mousePosHorDiff = Math.abs(mousePosHorDiff);
}
return mousePosHorDiff;
}
// Метод возвращает горозонтальную скорость курсора
// Один аргумент отвечающий за вывод скорости или ее модуля
public function mouseSpeedVert(abs:Boolean):Number
{
var mousePosVertCurr:Number;//Текущая координата курсора
var mousePosVertDiff:Number;// Разница между предыдущей и текущей координатой
mousePosVertCurr = this.mStage.mouseY;// Текущая координата мыши
mousePosVertDiff = mousePosVertCurr - this.mPositionPrev[1];// Разность координат
this.mPositionPrev[1] = mousePosVertCurr;// Текущая координата сохраняется как устаревшая
if (abs)
{
// ... то мы его вычисляем
mousePosVertDiff = Math.abs(mousePosVertDiff);
}
return mousePosVertDiff;
}
public function get mPosX():Number
{
return this.mStage.mouseX;
}
public function get mPosY():Number
{
return this.mStage.mouseY;
}
}
}