ActionScript3.0 ぷちクイズ 第6問:asファイルの実行方法

この記事は2013年3月18日に書かれたものです。内容が古い可能性がありますのでご注意ください。


asファイルの実行方法

今回は「そもそもActionScriptってどうやって実行するの?」という素朴な疑問を解消するために用意した、基本問題です。
最初にActionScriptについて学び始めた時に、上記のような疑問を持たれた方って結構いるのではないかと思います。私もその一人でした。
調べたスクリプトをFlashの「アクション」タブに貼り付けてパブリッシュすると、なぜかエラーになってしまうのです。
「1037: パッケージをネストすることはできません。」というエラーが大半でした。
かと思うとすんなり実行できるプログラムもあったりで、わけがわかりません。
そんな最初のつまづきを少しでも軽減しようということで、用意した問題がこちらです↓

<問題>
以下のASスクリプトを実行しなさい。

package {
    import flash.display.Sprite;
    public class test extends Sprite {
        public function test():void {
            graphics.lineStyle(10, 0x000000);
            graphics.drawCircle(110, 110, 100);
        }
    }
}

ただ単純にflaファイルに貼り付けただけではエラーになってしまいます。
では、どうすればよいでしょう?

答えは以下です。



<答え>
~~~~~
問題にあるスクリプトは「package」です。
「package」とはクラスファイルが入っているディレクトリの事です。
ここでは詳細なクラスやパッケージの説明は省きますが、ここで大切なのは、
『「package」から記述されているものはflaファイル(フラッシュを保存した時の拡張子は「.fla」ですので、このファイルをflaファイルと言います)ではなく、asファイル(クラスを記述するための外部テキストファイル。拡張子は「.as」)に記述するものである』
ということです。
これが、上記スクリプトをそのままflaファイルにコピペしてパブリッシュしてもエラーになってしまう原因です。
ではどうすればよいのか、以下に実行手順を記載しますので、順を追ってみていきましょう。

1.flashを起動して、メニュー「ファイル」の「新規…」を選択
2.「新規ドキュメント」ウィンドウで「ActionScript(AS)ファイル」を選択し「OK」
ポップアップウィンドウ「新規ドキュメント」でASファイルを選択してください。
3.開かれたファイルにスクリプトを貼り付けて、任意フォルダに「test.as」という名称で保存
4.再びメニュー「ファイル」の「新規…」で「ActionScript(AS3.0)」を選択し「OK」
ポップアップウィンドウ「新規ドキュメント」でFlashファイル(AS3.0)を選択してください。
5.「プロパティ」タブを表示し、「クラス」の部分に「test」と入力する
as3q6-3
6.「test.as」と同じフォルダに任意の名前で保存する(例:test.fla)
7.「test.fla」を開いた状態で「パブリッシュ」する(メニュー「ファイル>パブリッシュ」でパブリッシュできます)。
8.「swfファイル」が以下のように表示できていればOKです。
as3q6-4
~~~~~

このように、「flaファイル」「asファイル」「swfファイル」の関連性が、AS開発ではとても大切なポイントになりますので、しっかりと理解しておくとよいでしょう。
そして、asファイルの中身ですが

public class test extends Sprite {

の「test」はクラス名、

public function test():void {

の「test」はメソッド(コンストラクタ)になります。
この名前とflaファイルで指定する「クラス」名を同一にしておくことが必要になります。

☆補足☆
asファイルを用いずに直接flaファイルに記述して、問題のスクリプトを実行することもできます。その場合は、五行目と六行目をflaファイルに記述するだけでOKです。

graphics.lineStyle(10, 0x000000);
graphics.drawCircle(110, 110, 100);

クラスを用意していないので、flaファイルが記述されているスクリプトをそのまま実行するのです。ASファイルでクラスを記述すると、それを様々なflaファイルで呼び出したり、他のクラスの基としたり、色々と使い途が広がりますが、単純に今回の「円を表示」というスクリプトであれば、このように直接記述してもよいでしょう。どちらにしろ、この2つの違いを理解しておくことが重要です。

  • このエントリーをはてなブックマークに追加

PAGE TOP