メイン コーダーズルーム【スクリプト系】 サブドメイン移行時におきた問題 | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
961832p | Åê¹ÆNo.39832 投稿日時: 2008-8-7 5:59 |
常連 居住地: Akiruno-shi 投稿: 155
使用環境:
:AS3: - Adobe Flex SDK, Eclipse, AIR GEAR - LB.Log AS3, Alcon2 :AS2: - AMES(ASDT, MTASC, Eclipse, swfmill) - Natural Entry Point Method - LB.Log, Zeroi Pro, Firefox, Chromium(Iron), IE ---------------- Pro, |
サブドメイン移行時におきた問題 WinXP Pro SP2、MTASC1.13+swfmill0.2.12、FlashPlayer9.0.124.0(Firefox3とIE7)で開発しているのですが、
サイトをサブドメインへ移行した時に気づいた問題です。 createEmptyMovieClipでMCをつくり、そこにMovieClipLoaderで画像を読み込んで、 ColorMatrixFilterでグレースケールにしているプログラムがあります。 読み込む画像がサブドメインにあるので、クロスドメインポリシーファイルを使って、 以前と同じように読み込めるようにはなったのですが、なぜかグレースケールが効かなくなりました。 ちなみにプログラムはまったく変えていません。 サイト構成は、サイト1(http://foo.bar)に、ファイルを読み込んでグレースケールで表示するSWFファイルがあり、 サイト2(http://hoge.foo.bar)には読み込まれる画像が置いてあります。 コード自体は次のようになっています。 mcLoader.loadClip("http://hoge.foo.bar/image/piyo.jpg", mc); また、以前は次のようになっていました。 mcLoader.loadClip("http://foo.bar/hoge/image/piyo.jpg", mc); 他に重要そうな点としては、_visibleなどの他のプロパティも効いていませんでしたので、 別のMCに読み込まれているような感じなのです。 現在、子MCをつくって画像を読み込み、親MCにグレースケールをかけることで対処していますが少し気になっています。 |
ひろゆき | Åê¹ÆNo.39833 投稿日時: 2008-8-7 6:26 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境:
10.8.5 Flash Professional CS4/CS6/CC Safari 6.1 |
Re: サブドメイン移行時におきた問題 引用:
961832pさんは書きました: 中途半端に言葉だけで説明せずに、スクリプト自体を記載された方が良いのでは? でないと、スクリプト側に問題がある可能性を否定しきれないと思いますが。
|
961832p | Åê¹ÆNo.39844 投稿日時: 2008-8-8 4:20 |
常連 居住地: Akiruno-shi 投稿: 155
使用環境:
:AS3: - Adobe Flex SDK, Eclipse, AIR GEAR - LB.Log AS3, Alcon2 :AS2: - AMES(ASDT, MTASC, Eclipse, swfmill) - Natural Entry Point Method - LB.Log, Zeroi Pro, Firefox, Chromium(Iron), IE ---------------- Pro, |
問題のプログラムです 応答ありがとうございます!以下がプログラムの全部になります(記述が汚くて本当に申し訳ないです;;;;)。
現在はdummy_mcに読み込んで対処していますが、これをview_mcに読み込むと先の問題がおきます。 補足ですが、動画の場合は問題なくグレースケールになり、画像の場合だけに問題がおきます。 import com.xfactorstudio.xml.xpath. * ; import mx.transitions.Tween; import mx.transitions.easing. * ; import flash.filters.ColorMatrixFilter; class Application2 extends MovieClip{ var _config_xml : XML; var _nConnection : NetConnection; var _nStream : NetStream; var _arg : Object; var mclListener : Object; var mcLoader : MovieClipLoader; function Application2() { var self : MovieClip = this; } function onLoad() { var self : MovieClip = this; self.attachMovie("logo_base", "logo_base_mc", self._getNextDepth(self), { _x : 48, _y : 62 } ); var mc = self.logo_base_mc.createEmptyMovieClip("logo_core_mc", self._getNextDepth(self)); mc.attachMovie("logo_core", "lc_mc", self._getNextDepth(mc)); mc.lc_mc._x = - mc.lc_mc._width / 2; mc.lc_mc._y = - mc.lc_mc._height / 2; mc._x = 27 + mc.lc_mc._width / 2; mc._y = 15 + mc.lc_mc._height / 2; mc.t = new Tween(mc, "_rotation", None.easeNone, 0, - 360, 1.38, true); mc.t.onMotionStarted = function () { } mc.t.onMotionStopped = function () { } mc.t.onMotionFinished = function () { this.start(); }; self.createEmptyMovieClip("view_mc", self._getNextDepth(self)); self.view_mc.createEmptyMovieClip("dummy_mc", self._getNextDepth(self.view_mc)); self.view_mc._visible = false; self.attachMovie("frame", "frame_mc", self._getNextDepth(self)); _config_xml = new XML(); _config_xml.ignoreWhite = true; _config_xml.onLoad = function (a_is_success : Boolean) { if (a_is_success) { self.main(); } else { trace("e _config_xml.onLoad"); } } _config_xml.load('/' + 'config.xml'); } function main() { var self : MovieClip = this; _arg = new Object(); var argt = (self._url.split('?'))[1]; var args = argt.split('&'); for (var i = 0; i < args.length; i++) { trace("N " + (args[i].split('='))[0]); trace("V " + (args[i].split('='))[1]); _arg[(args[i].split('='))[0]] = (args[i].split('='))[1]; } var url = XPath.selectSingleNode( _config_xml, "/root/resource[@id='" + _arg['name'] + "']/@value").toString(); var type = url.substr(-4, 4); var textFormat = new TextFormat(); with (textFormat) { color = 0x2309B9; size = 12; bold = true; font = "_sans"; align = "center"; } var txt = self.createTextField("title_txt", self._getNextDepth(self.frame_mc), 11, 12, 160, 19); txt.selectable = false; txt.setNewTextFormat(textFormat); var text_title = unescape(_arg['title']); if (text_title == '') { var ititle = XPath.selectSingleNode( _config_xml, "/root/group/item[@name='" + _arg['name'] + "']/@title").toString(); if (ititle != undefined) { text_title = ititle; } } txt.text = text_title; if (type != '.flv') { mclListener = new Object(); mclListener.onLoadInit = function (a_mc) { var ash = a_mc._height / a_mc._width; var h = Math.round(160 * ash); h = (h > 120) ? 120 : h; var y = 148 - h - 4; y = (h == 120) ? y : y - (120 - h) / 2; self.view_mc._x = 294; self.view_mc._y = y; a_mc._width = 160; a_mc._height = h; self.attachMovie("icon_image", "icon_mc", self._getNextDepth(self.frame_mc), { _x : 13, _y : 41 } ); self.finish(); } mclListener.onLoadError = function (a_mc) { self.logo_base_mc.logo_core_mc.t.stop(); self.title_txt.text = "ERROR"; } mcLoader = new MovieClipLoader(); mcLoader.addListener(mclListener); mcLoader.loadClip(url, self.view_mc.dummy_mc); } else { _nConnection = new NetConnection(); _nConnection.connect(null); self.view_mc.attachMovie("videoContainer", "videoContainer_mc", self._getNextDepth(self.view_mc)); _nStream = new NetStream(_nConnection); _nStream.onStatus = function (a_info) { switch (a_info.code) { case'NetStream.Buffer.Empty' : break; case'NetStream.Buffer.Full' : self._nStream.pause(true); var ash = self.view_mc._height / self.view_mc._width; var h = Math.round(160 * ash); h = h > 120 ? 120 : h; var y = 148 - h - 4; y = h == 120 ? y : y - (120 - h) / 2; with (self.view_mc) { _x = 294; _y = y; _width = 160; _height = h; } self.attachMovie("icon_video", "icon_mc", self._getNextDepth(self.frame_mc), { _x : 13, _y : 41 } ); self.finish(); break; case'NetStream.Play.Start' : break; case'NetStream.Buffer.Flush' : break; case'NetStream.Play.Stop' : break; case'NetStream.Play.StreamNotFound' : self.logo_base_mc.logo_core_mc.t.stop(); self.title_txt.text = "ERROR"; break; case'NetStream.Seek.InvalidTime' : break; case'NetStream.Seek.Notify' : break; } }; self.view_mc.videoContainer_mc.video_mc.attachVideo(_nStream); self.view_mc.videoContainer_mc.video_mc.attachAudio(_nStream); var sound = new Sound(self.view_mc.videoContainer_mc.video_mc); sound.setVolume(0); self._nStream.close(); self._nStream.play(url, self._arg['seek'] != undefined ? Number(self._arg['seek']) : 2, 0, 1); } } function finish() { var self : MovieClip = this; var myColorMatrix : ColorMatrixFilter = new ColorMatrixFilter([ 0.222015, 0.706655, 0.071330, 0, 0, 0.222015, 0.706655, 0.071330, 0, 0, 0.222015, 0.706655, 0.071330, 0, 0, 0, 0, 0, 1, 0]); self.view_mc.filters = [myColorMatrix]; self.view_mc._visible = true; var t = new Tween(self.view_mc, "_x", Elastic.easeInOut, self.view_mc._x, 10, 1.47, true); t.onMotionStarted = function () { } t.onMotionStopped = function () { } t.onMotionFinished = function () { self.logo_base_mc._visible = false; self.logo_base_mc.logo_core_mc.t.stop(); }; } function _getNextDepth(a_mc : MovieClip) : Number{ var depth_base = a_mc.getDepth() + 1; for (var i = 0; i < 1000; i++) { if (getInstanceAtDepth(depth_base + i) == undefined) { return depth_base + i; } } return -1; } } |
ひろゆき | Åê¹ÆNo.39845 投稿日時: 2008-8-8 4:50 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境:
10.8.5 Flash Professional CS4/CS6/CC Safari 6.1 |
Re: 問題のプログラムです 引用:
createEmptyMovieClipでMCをつくり、そこにMovieClipLoaderで画像を読み込んで、 単に「画像を読み込んで、ColorMatrixFilterでグレースケールにしている」だけではありませんね。 もっとシンプルなもので試すべきだとは思いますが。 特に、TweenやXMLは、外さないと、 どこに問題があるのか、特定するには、複雑すぎるように思います。 ざっと見た感じでは、1つ引っかかる場所として、
これだと、画像の読み込みが完了する前に、finish() が実行されるので、 画像の読み込み完了前に、グレースケールにしていることになりませんか? 外部ドメインからの読み込みに問題があるとすれば、 「外部ドメインの画像を Bitmap 操作する際に|_level0.CUPPY」 あたりが参考になるでしょうか。
|
野中文雄 | Åê¹ÆNo.39846 投稿日時: 2008-8-8 4:57 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: 問題のプログラムです 問題の原因をつきとめたいのであれば、スクリプトは最小限のステートメントにまとめるべきです。胃の検査をするとき、食事を抜いて空腹にしなければならないのと同じです。
また、「動画」というのは、SWFですか?それとも、ビデオ(FLV)ですか。 引用: 961832pさんは書きました: 「クロスドメインポリシーファイル」は、読込む側と読込まれる側の両方のドメインに置いてありますか? 引用: 961832pさんは書きました: |
961832p | Åê¹ÆNo.39850 投稿日時: 2008-8-9 5:43 |
常連 居住地: Akiruno-shi 投稿: 155
使用環境:
:AS3: - Adobe Flex SDK, Eclipse, AIR GEAR - LB.Log AS3, Alcon2 :AS2: - AMES(ASDT, MTASC, Eclipse, swfmill) - Natural Entry Point Method - LB.Log, Zeroi Pro, Firefox, Chromium(Iron), IE ---------------- Pro, |
Re^2: 問題のプログラムです mayor さん返信ありがとうございました
引用: 外部ドメインからの読み込みに問題があるとすれば、 参考となる情報ありがとうございます。実際にonLoadの頭で
引用: ざっと見た感じでは、1つ引っかかる場所として、 う……実際はonLoadInit内にあるのですが、コードを整形もせず単に垂れ流しただけの、見るだけで拒絶したくなるような記述なのである意味、外にあるようなものです(苦笑)。 引用: 単に「画像を読み込んで、ColorMatrixFilterでグレースケールにしている」だけではありませんね。 自分の勝手な思い込みで、知りたい部分だけのことを伝えてしまい、ややこしくしてすみませんでした。 もっとコードを絞って今度は本当に「画像を読み込んで、ColorMatrixFilterでグレースケールにしている」だけのプログラムでもう一度確かめてみます。 |
961832p | Åê¹ÆNo.39851 投稿日時: 2008-8-9 5:48 |
常連 居住地: Akiruno-shi 投稿: 155
使用環境:
:AS3: - Adobe Flex SDK, Eclipse, AIR GEAR - LB.Log AS3, Alcon2 :AS2: - AMES(ASDT, MTASC, Eclipse, swfmill) - Natural Entry Point Method - LB.Log, Zeroi Pro, Firefox, Chromium(Iron), IE ---------------- Pro, |
Re^2: 問題のプログラムです Fumio さん返信ありがとうございました
引用: 「クロスドメインポリシーファイル」は、読込む側と読込まれる側の両方のドメインに置いてありますか? はい。置いてあります。 読込む側:
読込まれる側:
引用: また、「動画」というのは、SWFですか?それとも、ビデオ(FLV)ですか。 FLV形式のファイルです。画像か動画かは、拡張子を見てif文で分岐させています。 引用: 問題の原因をつきとめたいのであれば、スクリプトは最小限のステートメントにまとめるべきです。 リンク先の情報ありがとうございました。もっとコードを絞り込んで出直してきます! |
961832p | Åê¹ÆNo.39852 投稿日時: 2008-8-9 5:53 |
常連 居住地: Akiruno-shi 投稿: 155
使用環境:
:AS3: - Adobe Flex SDK, Eclipse, AIR GEAR - LB.Log AS3, Alcon2 :AS2: - AMES(ASDT, MTASC, Eclipse, swfmill) - Natural Entry Point Method - LB.Log, Zeroi Pro, Firefox, Chromium(Iron), IE ---------------- Pro, |
問題のプログラムを絞りました 実際に使用しているプログラムからコードを絞って、問題が再現されるかやってみたところ、
・画像は表示されるもグレースケールはかからない ・子MCに画像を読み込み、親MCにグレースケールをかけると大丈夫 といった以前と同じ結果になりました。 また、loadMovie関数でやってみたり、onLoadInit内でColorMatrixFilterを使っても変わりませんでした。
|
野中文雄 | Åê¹ÆNo.39853 投稿日時: 2008-8-9 10:27 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: 問題のプログラムを絞りました フィルタについては、FOL(Fact of Life: そういう風にできている)かもしれません。Flash 8のSamples/ActionScript/Filtersのサンプルムービーには、つぎのようなコメントが記載されています。
引用: // Nest a movie clip within that in order to load 引用: 961832pさんは書きました: |
961832p | Åê¹ÆNo.39932 投稿日時: 2008-8-16 5:23 |
常連 居住地: Akiruno-shi 投稿: 155
使用環境:
:AS3: - Adobe Flex SDK, Eclipse, AIR GEAR - LB.Log AS3, Alcon2 :AS2: - AMES(ASDT, MTASC, Eclipse, swfmill) - Natural Entry Point Method - LB.Log, Zeroi Pro, Firefox, Chromium(Iron), IE ---------------- Pro, |
Re: サブドメイン移行時におきた問題 Fumio さん、情報ありがとうございます。
引用: Fumioさんは書きました: この「FOL」という言葉は初めて知りました(「仕様です。」みたいな感じでしょうか)。とても強力ですね ---- mayor さん、Fumio さん。 今回、「問題の答え」よりも「問題の解き方」的なことを教えていただいてありがとうございました。 今まで行き当たりばったりだった自分としては、そっちのほうが大きな収穫でした。 なぜ同じドメイン(サブドメイン含む)だと大丈夫なのか、なぜ画像だけ問題がおきるのか、filtersプロパティ以外も効かない、と不可解なことはまだありますが、 分解できる要素はまだあると思うので、いろいろやってみます。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |