В AS3, почему мы помещаем наши операторы импорта в оператор пакета, а не в объявление класса?
Это типичный (но довольно бессмысленный) класс AS3:
package my.foo.package
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.utils.Timer;
public class FooClass extends MovieClip
{
public static const EVENT_TIME_UP:String = 'timeUpEvent';
public function FooClass()
{
var timer:Timer = new Timer(2000, 1);
timer.addEventListener(TimerEvent.TIMER, timerHandler);
timer.start();
}
private function timerHandler(e:TimerEvent):void
{
dispatchEvent(new Event(FooClass.EVENT_TIME_UP));
}
}
}
Но почему все операторы импорта предназначены для того, чтобы пройти весь путь вверх по классу?Класс работает отлично, когда я перемещаю импорт внутрь объявления класса, как показано ниже.
package my.foo.package
{
import flash.display.MovieClip;
public class FooClass extends MovieClip
{
import flash.events.Event;
import flash.events.TimerEvent;
import flash.utils.Timer;
public static const EVENT_TIME_UP:String = 'timeUpEvent';
public function FooClass()
{
var timer:Timer = new Timer(2000, 1);
timer.addEventListener(TimerEvent.TIMER, timerHandler);
timer.start();
}
private function timerHandler(e:TimerEvent):void
{
dispatchEvent(new Event(FooClass.EVENT_TIME_UP));
}
}
}
Только пакет MovieClip должен быть в пакете, потому что мой класс его расширяет.
Нет ничего полезного в соглашениях по кодированию Adobe AS3 .
Так почему же мы помещаем импорт в пакет, а не в класс, который их фактически использует?Пакет не использует импортированные классы, не так ли?И почему это все еще работает, если я перемещаю импорт в Класс?