public classとか public functionとかファイル名とか

HelloWorldをするのに適当にファイルを作ったらはまった。

package{
  import flash.display.*;
  import flash.text.*;
  public class HelloWorld extends Sprite{
    public function HelloWorld(){
      var tf:TextField = new TextField();
      tf.text = "Hello World!";
      addChild(tf);
    }
  }
}

上記の内容でファイル名を
HelloWorld2.as
とか、classやfunctionと違う場合に以下のようなエラーが出る

  public class HelloWorld extends Sprite{
    public function HelloWorld2(){

のようにpublic classがファイル名と異なる場合

$ mxmlc HelloWorld2.as
設定ファイル "/Applications/flexsdk3/frameworks/flex-config.xml" をロードしています
/(current path)/HelloWorld2.as: エラー: source-path 'HelloWorld2' 内のファイルは、ファイル "HelloWorld" 内のクラス定義と同じ名前でなければなりません。

一方

  public class HelloWorld2 extends Sprite{
    public function HelloWorld(){

のようにpublic functionがファイル名と異なる場合

$ mxmlc HelloWorld2.as
設定ファイル "/Applications/flexsdk3/frameworks/flex-config.xml" をロードしています
/(current path)/HelloWorld2.as(6): col: 31 警告: return value for function 'HelloWorld' に型宣言がありません。
public function HelloWorld(){ ^
/(current path)/HelloWorld2.swf (640 bytes)

ということで、public functionとpublic classとファイル名は同じじゃないとダメなのかもしれない。