packageの外からのクラス生成
【Main.as】 package { import flash.display.*; public class Main extends MovieClip { public function Main() { var c1:class1 = new class1(); var c2:class2 = new class2(); } } } class class1 { public function class1() {} } 【class2.as】 package { public class class2 { function class2() { //var c1:class1 = new class1(); ←コンパイルエラー } } }
classの下にclassはネストできないので、ちょこっとした処理のクラスを作りたい場合はpackageの外にかく。これでそのファイル内でしかアクセスできないようになる。
Mainからclass1は生成できるが、class2からclass1の生成は出来ないのでちゃんと隠蔽できている。外部のpackageを読み込むときの注意として
import flash.display.*; package {
この位置におくとコンパイルエラーとなる。
package { 内部の処理 } import flash.display.*; class class1 extends MovieClip { public function class1() {} }
この位置におけば大丈夫。これはちょこっと処理をまとめたいときに重宝するなり。まぁむしろクラスのネストを許可しろよと言いたいw