Home > action script > 画像をロードしたMC 上に attachMovie できない

画像をロードしたMC 上に attachMovie できない

なんだかんだで3時間ぐらいハマってるので。。FlashPlayer7 コンテンツ(AS2)にて:

  1. 背景上に
    slash.png
  2. 空ムービークリップ "holder" を生成。
  3. holder 上に外部 JPEG 画像(風景写真)をロード
    external.jpg
  4. 画像がロード完了したら、holder 上に リンケージ登録された MC(窓枠的なもの)を attachMovie する。
    waku.jpg
  5. 下のようになるはずだったのに、窓枠が表示されない!!!
    finish.jpg

上記のように該当部分だけをシンプルに作り直したソースはこんな感じです。画像のロード管理は CASA 使ってます。何も難しい事はしてないです。

import org.casaframework.load.media.MediaLoad; 
//配置先となる空MCを生成し、分かりやすいようにずらしておく。
this.createEmptyMovieClip("holder",this.getNextHighestDepth());
holder._x = holder._y = 5;

//CASAを使ってholder上に画像をロード
var mediaLoad:MediaLoad = new MediaLoad(holder, "external.jpg"false);
//画像のロードが完了したら、onImageLoadComplete を実行しろという指定
mediaLoad.addEventObserver(this, MediaLoad.EVENT_LOAD_COMPLETE, "onImageLoadComplete");
//ロード開始
mediaLoad.start();

function onImageLoadComplete(sender:MediaLoad){
    //画像ロードが完了したら、上にリンケージ登録してあるMCをかぶせる
    holder.attachMovie("attachMC""attachMC1",100); //とりあえず深度100に置く
}

FLASH-JP.COM : loadClipしたMCにattachMovieをしても表示されない」とか「F-site | SWFファイルの外部読込みとMovieClip.attachMovie()メソッド」は拝見したのだけど、僕の場合は SWF をロードしているわけではないし、外部 JPEG はロードしているものの、attach する場所は フレームスクリプト上で生成した "holder" なので、attachMovie できるものだと思っていたのですが。

他のケアレスミスかもしれないのですが3時間もつまづいてるし、そんな仕様があるのは聞いた事ないし。うむむ・・・

おまけ:
ちなみに斜線背景はサクッとここで作りました。
ブログに色付き AS コードを貼っているのは「as2html」を使わせていただきました。←枠線だけちょっといじらせていただきました。

昼食後に追記:
まぁ一応どうにかした。そういう仕様だったかなぁ?今後AS3に移行すればどんどん忘れていくんだろうなぁ。

import org.casaframework.load.media.MediaLoad; 

//配置先となる空MCを生成し、分かりやすいようにずらしておく。
this.createEmptyMovieClip("holder",this.getNextHighestDepth());
holder._x = holder._y = 5;
holder.attachMovie("attachMC""attachMC1",100); //とりあえず深度100に置く //対応策:holderの中にさらに空MCを作って、そこに画像をロードするようにした holder.createEmptyMovieClip("inner","innerMC",10); //CASAを使ってholder上に画像をロード var mediaLoad:MediaLoad = new MediaLoad(holder.inner"external.jpg"false); //画像のロードが完了したら、onImageLoadComplete を実行しろという指定 mediaLoad.addEventObserver(this, MediaLoad.EVENT_LOAD_COMPLETE, "onImageLoadComplete"); //ロード開始 mediaLoad.start(); function onImageLoadComplete(sender:MediaLoad){     //ロード完了後の処理 }

Comment:4

どうけ 2008-01-23 (水) 15:19

onLoadInitでやったらできませんかね?

ハンドラのタイミングが、
onLoadCompleteはロード直後で、
onLoadInitは1フレーム目に入ってから呼ばれるため
onLoadInitで初期化されてattachMovieしたのが消えてるような気がする。

または、あらかじめ、階層化してload用とattach用を分けておくと安全かも。
MC
└ attachmc
└ loadmc

tera 2008-01-23 (水) 15:31

どうけ様
ご教授ありがとうございますー!
CASA の EVENT_LOAD_INIT の方でやってみましたが、同様に表示されなかったです。これって結構使う手段だと思うのに今までこういう状況に遭遇してなかったのが不思議ですw

結局2個目の方法でさらに入れ子にして今作っています。
今後ともよろしくお願いいたします。

おまけ:
CASA で MediaLoad には EVENT_LOAD_INIT があるのに、loadGroup にはないんですね。グループだから初期化しなくていいってことですよね。
という小さな収穫がありました。

taka:nium 2008-01-23 (水) 19:21

こんにちわー。

holder.attachMovie("attachMC", "attachMC1",100); の戻り値をトレースすると undefined になるので、実行自体が失敗していますね。
ヘルプを見ると、MovieClipLoader.loadClip メソッドの target パラメータの説明に「ターゲットムービークリップは、ロードした SWF ファイルまたはイメージに置き換えられます。」とあるようです。

ここからは推測でテストしてないんですが、attachMovie() の使用条件には対象となる MovieClip が含まれている SWF 内でリンケージされている識別子のみ呼び出し可能という制約があるので、外部画像を呼び出した場合には、内部的には空 SWF に画像が貼り付けられていると同様の処理がなされている為に、対象リンケージ識別子が存在しない状態となり、attachMovie に失敗するのかなと思います・・・。

書いていてややこしくなってきましたが・・・仕様なんじゃないかと思います(笑

tera 2008-01-23 (水) 19:41

これはこれは!リブート中のtakaさんw
コメントありがとうございますー。

>空 SWF に画像が貼り付けられていると同様の処理がなされている為に、対象リンケージ識別子が存在しない状態

なるほど〜。そう考えると腑に落ちました。納得です。
「外部アセットをロードした場所は不可侵」ってことでおぼえておくことにします。ありがとうございましたー。

Comment Form

コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。

Remember personal info

Trackback:0

TrackBack URL for this entry
http://www.trick7.com/blog/mt-tb.cgi/672
Listed below are links to weblogs that reference
画像をロードしたMC 上に attachMovie できない from trick7.com blog

Home > action script > 画像をロードしたMC 上に attachMovie できない

持っている Flash & ActionScript 関連本の中から、自分的おすすめの読む順番をご紹介。各書籍のレビューは books カテゴリからご覧頂けます。
この順番でどう?(AS3.0)
  • Adobe Flash CS3 詳細! ActionScript 3.0 入門ノート (DVD付)
    Adobe Flash CS3 詳細! ActionScript 3.0 入門ノート (DVD付)

    デザイン方面からFlashデビューして、そのままAS2.0を使うようになった人が、難しいと評判のAS3デビューする時の最初の1冊として、とにかく目を通しておくと良いかと思います。プログラミング経験の少ない方でも、サンプルをじっくり読めば、ゼロからのAS3デビュー可。
  • ActionScript 3.0 アニメーション
    ActionScript 3.0 アニメーション
    洋書「Making Things Move!」の日本語訳本。ActionScript3.0で数学的アニメーションを作ることがメインテーマなのですが、前半部分でAS3.0の基礎を分かり易く解説されています。後半の重力, IK, 3D表現等のアニメーション解説も楽しい。僕はこれのAS2.0洋書版を読んでFlashの面白さに気付きました。
  • Essential ActionScript 3.0 (Essential)
    Essential ActionScript 3.0 (Essential)

    900ページ以上ある相当分厚い本。基礎からOOPまでを解説。ほぼ網羅しているので、これを抑えておけばAS3博士になれそう。
  • Actionscript 3.0 Cookbook
    Actionscript 3.0 Cookbook

    ActionScript3.0のリファレンス本。問題とその解決法が1ページぐらいで細分化されているので空いた時間にちょっとずつ読み進められる。WebでAS3のソースを見て勉強する時の字引としても使う。ただ、時期的に初期の本なので、AS3自体が仕様変更してたりするので正誤表は必読。
  • Object-Oriented Actionscript 3.0
    Object-Oriented Actionscript 3.0

    7/23に発売されたFlash&OOP本。AS2.0版は持っているのだけど、オブジェクト指向の初歩的な解説から入って、後半は僕の理解を超える難度になっていきました。今度こそ理解できるか?
この順番でどう?(AS2.0)
  • Foundation Actionscript Animation: Making Things Move (Foundation)
    Foundation Actionscript Animation: Making Things Move (Foundation)

    スクリプトでアニメーションさせる方法を学べる。プログラムの知識というよりも数学や物理の知識が必要。バネの表現や3D表現など、汎用性の高いテクニックを身に付けられ、個人の表現力をレベルアップするのに最適。参考までに、僕が調べた英単語リスト。2007年4月に、AS3対応版も発売されました。
  • ゲーム開発のための数学・物理学入門 Beginning Math and Physics for Game Programmers
    ゲーム開発のための数学・物理学入門  Beginning Math and Physics for Game Programmers

    「Making Things Move!」の世界を突き詰めたい人用のステップアップのための本。行列や物理運動、2D/3D表現。Flashの本ではなく、じっくり読むタイプの本なので、あとまわしにしてもいいかも。
  • Flash 8 Essentials
    Flash 8 Essentials

    Flash8の新機能を紹介。全10章が独立した構成で、興味のある部分から読めます。フィルタやビットマップ、ビデオの使い方とかを、基礎から順を追って理解していけるので、ゼロからスクリプティングできるようになる。僕はビットマップ関連の作業の際のリファレンスとして常用しています。
  • .fla―Idea of Flash Creation
    .fla―Idea of Flash Creation

    上の本でFlash8の基本を身に付けて、それをどう面白い表現に落とし込むかを学べます。深津さんの、試行錯誤・実験しやすいスクリプティング、クラス設計に凄さを感じました。YouTubeやFlickrのAPI、PHPとの連携記事も。
  • FLASH ActionScript 2.0入門完全ガイド+実践サンプル集 [CD-ROM付]
    FLASH ActionScript 2.0入門完全ガイド+実践サンプル集 [CD-ROM付]

    ここまでで表現力が付き、テンションが上がるので、その勢いで難解なオブジェクト指向に挑戦。プログラム経験のない人がいきなり英語のOOP本を読むのは厳しい。この本で継承とかインターフェースとかポリモーフィズムとかの用語を理解しておくといいかも。
  • オブジェクト指向でなぜつくるのか―知っておきたいプログラミング、UML、設計の基礎知識―
    オブジェクト指向でなぜつくるのか―知っておきたいプログラミング、UML、設計の基礎知識―

    Flashの本ではありませんが、OOPの概念を気軽に読めるボリュームで解説してくれます。英語と日本語のOOP用語の対応を図るためにも「Object-oriented Actionscript for Flash 8」と併読するのがおすすめ。なんとなく読んでおくだけでも結構違うのでは。
  • Object-oriented Actionscript for Flash 8
    Object-oriented Actionscript for Flash 8

    前半はOOPの利便性や基本の紹介。デザインパターンやMVCの理解。13章からグッと難しくなって大変。Flash8対応。
  • Essential Actionscript 2.0
    Essential Actionscript 2.0

    上の本よりもさらにOOPプログラマ向け。同じOOP本ということでやや重複しており、こちらはMX2004時代の本なので見送ってもいいかも。分かりやすい英語で良著。この本のAS3版が出たら間違いなく買い。

Page Top