Надо сделать такую штуку: появляется текстовое поле со словом (вариант ответа теста), оно таскается мышью, через 10 секунд исчезает и появляется следующее. За эти 10 с слово (если ответ верный) надо оттащить на мувик, который так или иначе среагирует.
С помощью советов форума, хелпа, О'Рейли и Гурского удалось сделать появление и исчезновение слов, и мышью они успешно таскаются.
Дальше картинку кораблика на сцене конвертирую в символ, класс назначаю "ship", базовый класс - flash.display.Sprite, instance name - caravella. Почему-то в Output всё равно считается MovieClip-ом. В ship.as создаю одноимённый класс, наследуя его от Sprite, импортирую и основной класс документа. В основной функции ship пытаюсь для начала оттрассировать hitTestObject каравеллы с объектом box из осн. класса документа (в нём сидит вариант ответа). Должно бы появиться "false", а появляется ругань на "possibly undefined variables". Проверял видимость переменных одного класса из другого в той же директории на более простых вещах (оттрассировать функцией одного класса переменную из другого) - то же самое. Всё объявлял "public". Ничего не понимаю! В хелпе и О'Рейли не смог найти объяснения, вроде, сказано, что если в публичном классе объявить публичную переменную или функцию, то её вполне можно прочитать в другом классе. Пожалуйста, если у кого найдётся время помотреть исходники и объяснить ошибки, сделайте это!
Я какие-то базовые понятия путаю? В php, например, переменные любого публичного класса можно (импортировав) прочитать и даже переопределить в любом же.
Исходники не могу загрузить. Вставляю код основного класса:

Код:
package
{
import flash.display.Sprite;
import flash.text.*;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.utils.Timer;
public class answers extends Sprite
{
var words:Array =[
{val:"Гаити",flag:true},
{val:"Ньюфаундленд",flag:false},
{val:"Гренландия",flag:false},
{val:"Куба",flag:true},
{val:"Цейлон",flag:false},
{val:"Великобритания",flag:false},
{val:"Ямайка",flag:true},
{val:"Антарктида",flag:false},
{val:"табак",flag:true},
{val:"индейцы",flag:true},
{val:"золото",flag:false},
{val:"Тринидад",flag:true},
{val:"Шпицберген",flag:false},
{val:"мыс Дежнёва",flag:false},
{val:"Амазонка",flag:false}
];
var i:int =0;// итератор слов
// создаём 10-секундный таймер и поле отсчёта
var timer:Timer = new Timer(1000, 10);
var timerField:TextField=new TextField;
// создаём клип-контейнер
var box:Sprite=new Sprite;
// создаем поле ответа
var tf:TextField=new TextField;
public function answers():void
{
//добавляем листенеры к таймеру
timer.addEventListener(TimerEvent.TIMER, onTick);
timer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
// Перехватываем нажатие кнопки мыши
box.addEventListener(MouseEvent.MOUSE_DOWN,handleMouseDown);
// Отпускание мышки
box.addEventListener(MouseEvent.MOUSE_UP,handleMouseUp);
//Отпускание мышки за пределами флэшки
box.addEventListener(MouseEvent.MOUSE_OUT,handleMouseUp);
//запускаем первое слово
newWord(i);
}
//собственно функция появления варианта ответа
private function newWord(i):void
{
//запускаем таймер
timer.reset();
timer.start();
//поле таймера
timerField.x =450;
timerField.text = "Осталось " + timer.repeatCount + " с.";
addChild(timerField);
//заполняем и форматируем поле ответа
tf.autoSize=TextFieldAutoSize.LEFT;
tf.selectable=false;
tf.text=words[i].val;
var format:TextFormat=new TextFormat;
format.font="Verdana";
format.size=16;
format.bold=true;
tf.setTextFormat(format);
//выводим клип и суём туда текстовое поле
box.x =10;
box.y =10;
addChild(box);
box.addChild(tf);
}
//Функции Drag&Drop
private function handleMouseDown(event:MouseEvent):void
{
box.startDrag();
}
private function handleMouseUp(event:MouseEvent):void
{
box.stopDrag();
}
//функции таймера
private function onTick(event:TimerEvent):void
{
// показывает счётчик
var t:int = event.target.repeatCount-event.target.currentCount;
timerField.text="Осталось " + t + " с.";
}
private function onTimerComplete(event:TimerEvent):void
{
//клип-контейнер и счётчик исчезают
removeChild(timerField);
box.removeChild(tf);
removeChild(box);
//если не дошли до конца, сдвигаем итератор и запускаем следующее слово
if (i < words.length-1) {
i++;
newWord(i);
}
}
}
}
...и класса ship:

Код:
package
{
import flash.display.Sprite;
import answers;
public class ship extends Sprite
{
public function ship():void
{
trace(this.caravella.hitTestObject(answers.box));
}
}
}
Заранее благодарен, хотя, похоже, вакансию я уже пролохал
