ムービークリップにクラスをリンケージし、ムービークリップを拡張する方法を記載します。
これにより、お気に入りの動作は次回からスクリプトを書く必要がなくなります。


続きを読む

 

実行環境

ActionScript3.0 / Adobe Flash CS 5
※CS4でも問題なく動作しますが、ActionScript2.0では構文が違うため使用できません。

 

サンプルプロジェクト

ここで使用するプロジェクトは以下からダウンロードできます。
サンプルプロジェクトのダウンロード

解凍すると以下の構成になっています。

    ./sample
       + link
       |  + sample_class.as    ----> リンクするクラス
       + sample_link.fla       ----> プロジェクト

今回リンクするクラスは [link] フォルダ内に配置しています。
特にそうでなくてはいけないということはありません。

 

クラスのリンケージ方法

1.ムービークリップをライブラリ上で右クリックし、[プロパティ...]を選択します。
ファイル 29-1.png

2.[ActionScriptに書き出し(X)] にチェックを入れ [クラス名(C)] にリンケージするクラス名を入れます。
  今回 [link] フォルダの下にクラスを配置しているので、[link.sample_class] になります。
  もしflaファイルと同じパス上にクラスがあるなら、クラス名だけでよいです。
  ※クラス名とファイル名は一致している必要があるみたいです。
ファイル 29-2.png

 

クラスのソースコード

以下にMovieClipに割り当てたクラスのソースを記述します。
全てのイベントをキャッチし、traceで表示するようにしています。
package名はどうもフォルダ名をつけなければならないようです。めんどくさい 。。

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
package link {
    import flash.display.MovieClip;
    import flash.events.Event;
    import flash.events.MouseEvent;
    public class sample_class extends MovieClip {
        // ====== 自分覚えておく用MC(thisの迷子防止)
        var    m_this:MovieClip;
        // ====== コンストラクタ
        public function sample_class() {
            trace ( this.name + " : コンストラクタが呼び出されました" );
            // ====== 自分を覚えておく
            this.m_this    = this;
            // =======================================================
            //    イベントリスナの設定
            // =======================================================
            // ====== ACTIVATEイベントリスナを追加
            this.addEventListenerEvent.ACTIVATE, this.Listen_onEvent );
            // ====== ADDEDイベントリスナを追加
            this.addEventListenerEvent.ADDED, this.Listen_onEvent );
            // ====== ADDED_TO_STAGEイベントリスナを追加
            this.addEventListenerEvent.ADDED_TO_STAGE, this.Listen_onEvent );
            // ====== CANCELイベントリスナを追加
            this.addEventListenerEvent.CANCEL, this.Listen_onEvent );
            // ====== CHANGEイベントリスナを追加
            this.addEventListenerEvent.CHANGE, this.Listen_onEvent );
            // ====== CLEARイベントリスナを追加
            this.addEventListenerEvent.CLEAR, this.Listen_onEvent );
            // ====== CLOSEイベントリスナを追加
            this.addEventListenerEvent.CLOSE, this.Listen_onEvent );
            // ====== COMPLETEイベントリスナを追加
            this.addEventListenerEvent.COMPLETE, this.Listen_onEvent );
            // ====== CONNECTイベントリスナを追加
            this.addEventListenerEvent.CONNECT, this.Listen_onEvent );
            // ====== COPYイベントリスナを追加
            this.addEventListenerEvent.COPY, this.Listen_onEvent );
            // ====== CUTイベントリスナを追加
            this.addEventListenerEvent.CUT, this.Listen_onEvent );
            // ====== DEACTIVATEイベントリスナを追加
            this.addEventListenerEvent.DEACTIVATE, this.Listen_onEvent );
            // ====== ENTER_FRAMEイベントリスナを追加
            this.addEventListenerEvent.ENTER_FRAME, this.Listen_onEvent );
            // ====== EXIT_FRAMEイベントリスナを追加
            this.addEventListenerEvent.EXIT_FRAME, this.Listen_onEvent );
            // ====== FRAME_CONSTRUCTEDイベントリスナを追加
            this.addEventListenerEvent.FRAME_CONSTRUCTED, this.Listen_onEvent );
            // ====== FULLSCREENイベントリスナを追加
            this.addEventListenerEvent.FULLSCREEN, this.Listen_onEvent );
            // ====== ID3イベントリスナを追加
            this.addEventListenerEvent.ID3, this.Listen_onEvent );
            // ====== INITイベントリスナを追加
            this.addEventListenerEvent.INIT, this.Listen_onEvent );
            // ====== MOUSE_LEAVEイベントリスナを追加
            this.addEventListenerEvent.MOUSE_LEAVE, this.Listen_onEvent );
            // ====== OPENイベントリスナを追加
            this.addEventListenerEvent.OPEN, this.Listen_onEvent );
            // ====== PASTEイベントリスナを追加
            this.addEventListenerEvent.PASTE, this.Listen_onEvent );
            // ====== REMOVEDイベントリスナを追加
            this.addEventListenerEvent.REMOVED, this.Listen_onEvent );
            // ====== REMOVED_FROM_STAGEイベントリスナを追加
            this.addEventListenerEvent.REMOVED_FROM_STAGE, this.Listen_onEvent );
            // ====== RENDERイベントリスナを追加
            this.addEventListenerEvent.RENDER, this.Listen_onEvent );
            // ====== RESIZEイベントリスナを追加
            this.addEventListenerEvent.RESIZE, this.Listen_onEvent );
            // ====== SCROLLイベントリスナを追加
            this.addEventListenerEvent.SCROLL, this.Listen_onEvent );
            // ====== SELECTイベントリスナを追加
            this.addEventListenerEvent.SELECT, this.Listen_onEvent );
            // ====== SELECT_ALLイベントリスナを追加
            this.addEventListenerEvent.SELECT_ALL, this.Listen_onEvent );
            // ====== SOUND_COMPLETEイベントリスナを追加
            this.addEventListenerEvent.SOUND_COMPLETE, this.Listen_onEvent );
            // ====== TAB_CHILDREN_CHANGEイベントリスナを追加
            this.addEventListenerEvent.TAB_CHILDREN_CHANGE, this.Listen_onEvent );
            // ====== TAB_ENABLED_CHANGEイベントリスナを追加
            this.addEventListenerEvent.TAB_ENABLED_CHANGE, this.Listen_onEvent );
            // ====== TAB_INDEX_CHANGEイベントリスナを追加
            this.addEventListenerEvent.TAB_INDEX_CHANGE, this.Listen_onEvent );
            // ====== UNLOADイベントリスナを追加
            this.addEventListenerEvent.UNLOAD, this.Listen_onEvent );
            // =======================================================
            //    マウスイベントリスナの設定
            // =======================================================
            // ====== CLICKイベントリスナを追加
            this.addEventListener(MouseEvent.CLICK, this.Listen_onMouse );
            // ====== DOUBLE_CLICKイベントリスナを追加
            this.addEventListener(MouseEvent.DOUBLE_CLICK, this.Listen_onMouse );
            // ====== MOUSE_DOWNイベントリスナを追加
            this.addEventListener(MouseEvent.MOUSE_DOWN, this.Listen_onMouse );
            // ====== MOUSE_MOVEイベントリスナを追加
            this.addEventListener(MouseEvent.MOUSE_MOVE, this.Listen_onMouse );
            // ====== MOUSE_OUTイベントリスナを追加
            this.addEventListener(MouseEvent.MOUSE_OUT, this.Listen_onMouse );
            // ====== MOUSE_OVERイベントリスナを追加
            this.addEventListener(MouseEvent.MOUSE_OVER, this.Listen_onMouse );
            // ====== MOUSE_UPイベントリスナを追加
            this.addEventListener(MouseEvent.MOUSE_UP, this.Listen_onMouse );
            // ====== MOUSE_WHEELイベントリスナを追加
            this.addEventListener(MouseEvent.MOUSE_WHEEL, this.Listen_onMouse );
            // ====== ROLL_OUTイベントリスナを追加
            this.addEventListener(MouseEvent.ROLL_OUT, this.Listen_onMouse );
            // ====== ROLL_OVERイベントリスナを追加
            this.addEventListener(MouseEvent.ROLL_OVER, this.Listen_onMouse );
        }
        // =======================================================
        //     イベントハンドラ
        // =======================================================
        private function Listen_onEvent( avEvent:Event ) {
            // ====== イベント名を表示
            trace ( m_this.name +"  : " + avEvent.type.toString() );
        }
        // =======================================================
        //     マウスイベントハンドラ
        // =======================================================
        private function Listen_onMouse( avEvent:MouseEvent ) {
            // ====== イベント名を表示
            trace ( m_this.name +"  : " + avEvent.type.toString() );
        }
    }    
}
このコードは CodePublish で生成しています

コメント

  • コメントはまだありません。

コメントを投稿する

コメントを投稿する場合は以下に注意してください。

・記事に関係する内容であること
・特別な理由がない限り「全体公開」であること

これさえ守っていただければどんな内容でも投稿可能です。
皆様の質問やコメントは他の方の問題解決に繋がりますのでご協力ください。

コメント投稿フォーム
名前
メール
URL
コメント
閲覧制限

コメントを投稿するには、以下の問題に答えてください。
問題:「電圧÷抵抗の解を漢字二文字で入力してください。」