1
在AS3中,我們爲什麼要將我們的導入語句放在包裝聲明中,而不是在類別聲明中?爲什麼要在包中放入import語句?
這是一個典型的(但相當無意義)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));
}
}
}
但爲什麼所有的import語句的意思走,一路在那裏,外面的課嗎?當我將導入移動到像下面這樣的類聲明中時,該類很好地工作。
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 coding conventions這沒什麼有用的。
那麼,爲什麼我們把進口放在包裏,而不是實際使用它們的類。該包是不是使用導入的類是它?爲什麼如果我將輸入移動到類中,它仍然有效?
除了最後加了圓括號的部分之外,還要同意這篇文章 - 您應該再次爲內部使用的類(包語句塊之外的私人類)導入類。包塊內的導入語句在包塊外不可見。 – Amarghosh 2010-06-24 04:59:44