- 2008-11-20 (木) 21:19
- ActionScript | Flash
共有オブジェクトとして書き出したリンケージクラスを、読み込み側SWFでインスタンス生成するときにはまったのでメモ。
起こったこと。
- MovieClipクラスを継承したSheardMovieClipクラスを作成します
- Flash上でムービークリップを作成し、いくつかのムービークリップを配置します。
そしてそれらにインスタンス名をつけます。(ここではmc1,mc2とします。)SheardMovieClip (クラス名:SheardMovieClip、ランタイム共有用に書き出し) ├mc1 (インスタンス名:mc1) └mc2 (インスタンス名:mc2)
- 共有ライブラリSWFを書き出し
- このSheardMovieClipを読み込み側Flashにコピーして、プロパティでランタイム共有用に読み込みとなるよう設定します。
- そして読み込み側でインスタンス生成します。
new SheardMovieClip();
として読み込み側SWFを書き出すとReferenceErrorが発生!
ReferenceError: Error #1056: SheardMovieClip のプロパティ mc1 を作成できません。
共有ライブラリSWFを書き出すときには何もなかったのに、共有ライブラリとして読み込むと、参照できないというか中のムービークリップの名前(プロパティ)を作成できないと言われる。
SheardMovieClipクラスに参照プロパティを作ってみる。
public var mc1:MovieClip; public var mc2:MovieClip;
そして読み込み側SWFを再度書き出し。
お、何も言われない。
と思って、今度は共有ライブラリSWFを書き出してみると
1151: 定義 mc1 (名前空間 internal) にコンフリクトが存在します。
を怒られる。。
まぁそりゃそうだわな~と思いながら10分ほど悩む。
共有ライブラリFlashのパブリッシュ設定で「ActionScript設定」→「ステージのインスタンスを自動宣言」のチェックをはずすことで解決しました。
もしくはSheardMovieClip クラスをdynamicクラスにして、インスタンスを取得するときはgetChildByNameで参照する方法もあり。
- Newer: ProcessEvent イベントフローについて(1)
- Older: PreloaderとListenコマンド(2)
Comments:0
Trackbacks:1
- Trackback URL for this entry
- http://blog.cuegraphix.com/wp-trackback.php?p=30
- Listed below are links to weblogs that reference
- 共有オブジェクトのリンケージクラスを生成するときの対策 from blog.cuegraphix.com
- pingback from 090210の嘔吐 « Kuu2’s Blog 09-02-10 (火) 15:02
-
[...] 共有オブジェクトのリンケージクラスを生成するときの対策 [...]