Home > action script > 別ドメインのSWFに外部SWFをロードする時(AS3コンテンツ)

別ドメインのSWFに外部SWFをロードする時(AS3コンテンツ)

要するに、AS3 製のブログパーツを配布する場合のクロスドメイン問題・処理です。その swf ファイルを main.swf とし、その swf に、child1.swf ~ child10.swf をロードするような構成の場合どうしたらいいかを実験しながら探り探り書いていきます。

このエントリは検証しながらの書きかけエントリです。しかも予想してた挙動と全然違うので、おそらく僕が何か間違えてます。公開するのも迷惑な話でしょうが、メモ的用途で追記していく予定で、あわよくば同じ現象・間違いの指摘を戴ければなとか思って公開させていただきます。

まずはネットで調べます。関連リンクをdel.icio.us にブクマしておきますのでそちらへ。


目的

ユーザ(外部ドメインから swf を呼び出す html の持ち主)のブログにきちんとブログパーツを表示させようとする場合を考えます。

上の関連リンクをもとに出した確認項目リスト

  1. 親 swf 内の子 swf の読み込み URL は絶対パス指定しておく。
  2. 他ブロガーのブログが、ブログパーツ設置ドメインから swf を読み込む<際は、swf 設置ドメインのサーバルートに crossdomain.xml が置いてある必要がある。crossdomain.xml をサーバルートに置く場合は swf 側にcrossdomain用コードを書く必要はない。
  3. crossdomain.xml をサーバルート以外に置きたい場合は、置いてから swf 内に Security.loadPolicyFile('http://www.hoge.com/hoge/crossdomain.xml'); と書く。ドキュメントクラスの as ファイルに書く場合は、flash.system.Security をimport 記述し、import 文と同じ階層に書く。(←こないだはここ以外(例:クラス宣言内とかコンストラクタ内)に書いたらエラー出たのに、今やると出ない。なぜ?)
  4. と、ここで朗報。Loader を使って子 swf をロードする場合は、実は上の方法以外にも import flash.system.LoaderContext; して var loaderContext:LoaderContext = new LoaderContext(true) で LoaderContext インスタンス作っておいて、loader.load(urlRequest, loaderContext); と第2引数で渡してやると、外部ドメインの crossdomain.xml を自動的に読み込んでくれる。(ドキュメントルートのなのか、任意の場所の xml を読んでくれるのかが確認できていない。)「全てが、」様がまとめられています。
  5. で、今回は親 swf から子 swf をロードしようとしている。外部ドメインの swf に swf を読み込む場合はSWF ファイルへのアクセスを許可が必要になるので、さらに ApplicationDomain や System.allowDomain() 等を記述することになる。参考:にとよんさんのエントリの下の方、リファレンスのセキュリティ項目の下の方に記載されてる。

以上、AS3だと上記1,3,4,5に気をつければOKっぽいなと考えました。ありがとうございます。

ところが、



あれ?crossdomain.xml置かなくても別ドメインから親子の両 swf ロードできてる。表示されないはずじゃなかったの?

ということで上記リスト項目1をする前に外部ドメインから読み込み&表示できてしまってる。意味がわからん。上記1,3,4をオンオフいろいろ切り換えたりして、キャッシュ云々かと思って別 PC で確認したりしても、全部表示されてしまってる。player は 9.0.124.0 (最新版)

追記1:
はてブでコメントいただきました。

親swf読み込み→表示だけならOK(ダメなのはデータアクセス)、親swfの子swf読み込み→同じサンドボックスだからOK、ってことじゃね?

たしかに「親swf読み込み→表示だけならOK」←これは今までブログパーツを作った時にも crossdomain.xml とかやってないけどユーザに貼ってもらえてたのでOK。よって、親 swf は crossdomain を意識しなくてもくユーザブログで表示される。

で、親子 swf についてはコメントいただいた通り、たとえユーザブログからでも、swf 親子は同じドメイン内にあるので Sandbox の対象にならず、問題なく表示される。
何も気にしなくてよかったのかな?今のところそういう感触。

追記2(7/7):
今日改めてやってみたら、やはり同じ結果。
外部から貼り付け用 js を読んだ時(つまりブロガーの立場)、親ムービーからロードする子ムービーは絶対パスで指定しておく(上記チェックリスト1)ことは必要。それだけでこの構造のブログパーツはちゃんと動く。

追記3(7/8)
ローカル開発時の挙動など:
・子swfのURLをWeb上のURLで絶対パス指定、ローカルの親swfをテストパブリッシュ時→ネット上の子swfをきちんとロードする。
・ただ、ネット上の子swfが存在するディレクトリに.htaccessでパスワードをかけておくと「URL 'http://www.hoge.com/hoge/hoge.swf' を開く処理のエラー Error #2044: ハンドルされていない IOErrorEvent : text=Error #2035: URL が見つかりません。」となり、子swfは表示されない。まぁこれは当然と言えば当然で、この状態で親swfをアップロードすれば(パスワード聞いてくるので入力後)見れるようになる。

Comment:0

Comment Form

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

Remember personal info

Trackback:0

TrackBack URL for this entry
http://www.trick7.com/blog/mt-tb.cgi/756
Listed below are links to weblogs that reference
別ドメインのSWFに外部SWFをロードする時(AS3コンテンツ) from trick7.com blog

Home > action script > 別ドメインのSWFに外部SWFをロードする時(AS3コンテンツ)

持っている 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の面白さに気付きました。
  • Adobe Flash CS3 詳細! ActionScript3.0入門ノート2 (CD-ROM付)
    Adobe Flash CS3 詳細! ActionScript3.0入門ノート2 (CD-ROM付)
    この次の辞典のような洋書を読む前の事前知識としてこの本の内容を理解しておくといいかも。
  • 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