トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     別ドメインswf 相互書き込み
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
せいぞう
Åê¹ÆNo.33387
投稿日時: 2007-5-18 15:11
常連
居住地: 江戸川区の某所
投稿: 125
使用環境:
Flash CS5.5
Windows8 (64Bit)
Pentium Core i7
Memory 8GB
別ドメインswf 相互書き込み
いつも、お世話になっております。

「別ドメインのswf読込」については、本サイトでいくつも書き込みがあり、それに倣って設定したつもりなのですが、どうも期待通りに動作してくれない状況になり投稿させて頂きました。

以下、状況説明です。

-------------------------------------
【構成】
(親)SWF の場所 http://pc1/oya.swf
(子)SWF の場所 http://pc2/ko.swf

(親)(子)共に、STR というテキストボックスと、ボタンがあります。
(親)には、(子)を読み込むための myMC というムービークリップがあります。
-------------------------------------
【やろうとしていること】
(親)から、別ドメインにある(子)のテキストボックスに書き込み
(子)から、別ドメインにある(親)のテキストボックスに書き込み

-------------------------------------
【(親)のスクリプト】
//第1フレーム
System.security.allowDomain("pc2");

//第2フレーム
myMC.loadMovie("http://pc2/ko.swf";//読込

//ボタンのアクション
on(release){
myMC.STR.text = "(親)から(子)に書き込みます!";
}
-------------------------------------
【(子)のスクリプト】
//第1フレーム
System.security.allowDomain("pc1");

//ボタンのアクション
on(release){
_root.STR.text = "(子)から(親)に書き込みます!";
}
-------------------------------------
【結果】
書き込めていません。(期待通りにあらず)

【補足】
(1)両サーバのルートに、crossdomain.xml を置いています。
(2)書き込みが煩雑になるので、上記スクリプトには書きませんでしたが
(親)(子)共swf内に設定している変数を、他方が読み込むことはできています。
-------------------------------------
ご助言頂けましたら、幸いです。
よろしくお願いします。



-------------------------------------
【補足】
下記のように、両者を同じドメイン内に置くと、期待通りに相互に書き込みできています。

(親)SWF の場所 http://pc1/AAA/oya.swf
(子)SWF の場所 http://pc1/BBB/ko.swf

【Player 等】
パブリッシュは Ver8の形式です。
閲覧の際のPlayer は Ver9を使っています。
-------------------------------------


----------------
□NAME : せいぞう
□URL : http://www.5th-trend.com/

ネコジャラ
Åê¹ÆNo.33389
投稿日時: 2007-5-18 18:48
新米
居住地: 東京
投稿: 22
使用環境:
WindowsXP Pro SP2
Flash8 Pro
mProjector V3
Re: 別ドメインswf 相互書き込み
crossdomain.xmlを使う時は
System.security.loadPolicyFile()と組み合わせだったかと。
(LoadVasでswf→別ドメインcgiで使用)

System.security.allowDomainとloadMovieではまた別かも知れないので参考になれば。


せいぞう
Åê¹ÆNo.33390
投稿日時: 2007-5-18 18:55
常連
居住地: 江戸川区の某所
投稿: 125
使用環境:
Flash CS5.5
Windows8 (64Bit)
Pentium Core i7
Memory 8GB
Re: 別ドメインswf 相互書き込み
ネコジャラさん、ご助言ありがとうございます。

ご記入の「allowDomain」と「crossdomain.xml」の2者の違いがいまひとつ理解できていないのも問題なんです。
従って、現在は両者をセットしています。

下のサイトを参考にしているのですが、まだ充分理解できていないところです。
http://www.adobe.com/jp/devnet/flash/articles/fplayer_security_03.html(3/6頁)
もうすこしがんばってみます。


----------------
□NAME : せいぞう
□URL : http://www.5th-trend.com/

ネコジャラ
Åê¹ÆNo.33391
投稿日時: 2007-5-18 19:35
新米
居住地: 東京
投稿: 22
使用環境:
WindowsXP Pro SP2
Flash8 Pro
mProjector V3
Re: 別ドメインswf 相互書き込み
私も実は最近必要になって、四苦八苦してやったばかりでした。(^^;
下記書籍等を参考にしました。

■「FLASH Action Script2.0入門完全ガイド+実践サンプル集」(ソーテック社、大重美幸著)
P288にポリシーファイルの書き方・置き方の説明(要:UTF-8)
P291に別ドメインのxmlファイルを読む方法の説明やアクセス出来る階層の説明等

■「ActionScriptポケットリファレンス」(技術評論社、馬場ぎんが著)
P158-159に別ドメイン間のloadMovieでのデータやり取りの方法
(↑FlashPlayer6でのですが丁寧に書いてあります)
P339にポリシーファイルについて説明(こちらは7以降対応)

■Flash8のヘルプ
「LoadVars」で検索
「loadPolicyFile」で検索

最終的にAドメインのswfからLoadVarsのload命令を使ってBドメインのcgiファイルにアクセス、
CやDドメインからのアクセスは制限、と出来ました。
せいぞうさんの方でも上手くいく事を願ってます、頑張って下さい!。

あと別件ですが同時期
■5746.HTMLページに埋め込まれたSWFからのリンクが機能しない場合がある
http://www.flash-jp.com/modules/newbb/viewtopic.php?viewmode=flat&topic_id=5746&forum=6
制限にも見事引っ掛かり、AllowScriptAccessをalwaysにして解決出来ました。
Flashも最近セキュリティ厳しくて制作大変です…

せいぞう
Åê¹ÆNo.33392
投稿日時: 2007-5-18 20:02
常連
居住地: 江戸川区の某所
投稿: 125
使用環境:
Flash CS5.5
Windows8 (64Bit)
Pentium Core i7
Memory 8GB
Re: 別ドメインswf 相互書き込み
ネコジャラさん、ありがとうございます。

頂いた参考情報を幾つか見てみようと思います。
(しかし今のところ、闇から出られそうにないっす(^^;))
ではでは。


----------------
□NAME : せいぞう
□URL : http://www.5th-trend.com/

野中文雄
Åê¹ÆNo.33394
投稿日時: 2007-5-18 22:21
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 別ドメインswf 相互書き込み
Flash Player 7でパブリッシュすると、クロスドメインポリシーファイルなしに、System.security.allowDomain()の設定だけで動作しませんか?
引用:
せいぞうさんは書きました:
【補足】
(1)両サーバのルートに、crossdomain.xml を置いています。
(2)書き込みが煩雑になるので、上記スクリプトには書きませんでしたが
(親)(子)共swf内に設定している変数を、他方が読み込むことはできています。
...[中略]...
【Player 等】
パブリッシュは Ver8の形式です。
閲覧の際のPlayer は Ver9を使っています。

Flash Player 8のパブリッシュでは、どうもTextFieldのプロパティにアクセスできないようです(MovieClipやButtonインスタンスは、問題なく制御できます)。

ですから、無理矢理Flash Player 8対応にするには、SWFの外部からは変数で設定して、その変数値を内部的にTextFieldインスタンスに移すというような手法になりそうです。
// 親: oya.swf
// Buttonアクション
on (release) {
	// myMC.STR.text = "(親)から(子)に書き込みます!";
	myMC.test = "(親)から(子)に書き込みます!";
}

// 子: ko.swf
// フレームアクション
// 追加
this.watch("test", xCallback);
function xCallback (prop, oldValue, newValue) {
	STR.text = newValue;
	return newValue;
}


----------------
 

せいぞう
Åê¹ÆNo.33395
投稿日時: 2007-5-18 23:47
常連
居住地: 江戸川区の某所
投稿: 125
使用環境:
Flash CS5.5
Windows8 (64Bit)
Pentium Core i7
Memory 8GB
Re: 別ドメインswf 相互書き込み
野中様、いつもご助言ありがとうございます。

早速試してみました。
以下、結果を記載致します。

引用:
Flash Player 7でパブリッシュすると、クロスドメインポリシーファイルなしに、System.security.allowDomain()の設定だけで動作しませんか?

【結果】
はい、期待したとおりの動作をしました。
【やったこと】
(1)両サーバからcrossdomain.xmlを削除
(2)(親)(子)をVer7でパブリッシュ
(3)再生は、FlashPlayerのバージョンによって結果が異なりました。
× Flash Player V7 → テキストボックスに「undefined」と表示
◎ Flash Player V8 → (親)(子)双方に書き込みOK
× Flash Player V9 → 書き込みはできなかった(空欄のまま)


引用:
無理矢理Flash Player 8対応にするには、SWFの外部からは変数で設定して、その変数値を内部的にTextFieldインスタンスに移すというような手法になりそうです。

【結果】
アドバイス頂いたスクリプトで実験し、期待したとおりの動作をしました。
【やったこと】
(1)(親)(子)をVer8でパブリッシュ
(2)Playerを変えて実験
◎ Flash Player V8 → (親)(子)双方に書き込みOK
◎ Flash Player V9 → (親)(子)双方に書き込みOK


引用:
TextFieldのプロパティにアクセスできないようです

このようなご助言はとても有難く思っております。
私など素人には、とてもこういう判断ができず、ただ悶々と「ああでもない、こうでもない」と時を費やすだけになってしまいます。
今回、上記のご助言を頂き「お墨付きを頂いた」ような気持ちですっきり致しました。
本当にありがとうございました。
m(_ _)m


----------------
□NAME : せいぞう
□URL : http://www.5th-trend.com/

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops