Home > ActionScript | Flash > 共有オブジェクトのリンケージクラスを生成するときの対策

共有オブジェクトのリンケージクラスを生成するときの対策

共有オブジェクトとして書き出したリンケージクラスを、読み込み側SWFでインスタンス生成するときにはまったのでメモ。

起こったこと。

  1. MovieClipクラスを継承したSheardMovieClipクラスを作成します
  2. Flash上でムービークリップを作成し、いくつかのムービークリップを配置します。
    そしてそれらにインスタンス名をつけます。(ここではmc1,mc2とします。)

    SheardMovieClip (クラス名:SheardMovieClip、ランタイム共有用に書き出し)
    ├mc1 (インスタンス名:mc1)
    └mc2 (インスタンス名:mc2)
  3. 共有ライブラリSWFを書き出し
  4. このSheardMovieClipを読み込み側Flashにコピーして、プロパティでランタイム共有用に読み込みとなるよう設定します。
  5. そして読み込み側でインスタンス生成します。
    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で参照する方法もあり。

Comments:0

Comment Form
Remember personal info

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

[...] 共有オブジェクトのリンケージクラスを生成するときの対策 [...]

Home > ActionScript | Flash > 共有オブジェクトのリンケージクラスを生成するときの対策

Search
Feeds
Meta

Return to page top