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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     サブドメイン移行時におきた問題
投稿するにはまず登録を

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
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(Fact of Life: そういう風にできている)かもしれません。

この「FOL」という言葉は初めて知りました(「仕様です。」みたいな感じでしょうか)。とても強力ですね

----

mayor さん、Fumio さん。

今回、「問題の答え」よりも「問題の解き方」的なことを教えていただいてありがとうございました。
今まで行き当たりばったりだった自分としては、そっちのほうが大きな収穫でした。

なぜ同じドメイン(サブドメイン含む)だと大丈夫なのか、なぜ画像だけ問題がおきるのか、filtersプロパティ以外も効かない、と不可解なことはまだありますが、
分解できる要素はまだあると思うので、いろいろやってみます。

野中文雄
Åê¹Æ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
// the images into the nested clip. The nested clip
// is necessary because once the image is loaded into
// the clip, you cannot apply filters to it. You can,
// however, apply filters to the parent clip.

引用:
961832pさんは書きました:
 ・子MCに画像を読み込み、親MCにグレースケールをかけると大丈夫

といった以前と同じ結果になりました。


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

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を使っても変わりませんでした。

(Application.as)

import flash.filters.ColorMatrixFilter;
//====================================================================//
class Application extends MovieClip{
    var _mclListener : Object;
    var _mcLoader : MovieClipLoader;
    //----------------------------------------------------------------//
    function Application() {
        var self : MovieClip = this;
        trace("i Application");
    }
    //----------------------------------------------------------------//
    function onLoad() {
        var self : MovieClip = this;
        trace("i onLoad S");
        //
        self.createEmptyMovieClip("view_mc", self.getDepth() + 1);
        //
        _mclListener = new Object();
        _mclListener.onLoadInit = function (a_mc) {
            trace("i _mclListener.onLoadInit");
            self.finish();
        }
        _mclListener.onLoadError = function (a_mc) {
            trace("e _mclListener.onLoadError");
        }
        _mcLoader = new MovieClipLoader();
        _mcLoader.addListener(_mclListener);
        //
        _mcLoader.loadClip("http://hoge.foo.bar/image/piyo.jpg", self.view_mc);
        //self.view_mc.createEmptyMovieClip("dummy_mc", self.view_mc.getDepth() + 1);
        //_mcLoader.loadClip("http://hoge.foo.bar/image/piyo.jpg", self.view_mc.dummy_mc);
        //
        trace("i onLoad E");
    }
    //----------------------------------------------------------------//
    function finish() {
        var self : MovieClip = this;
        trace("i finish");
        //
        var cmFilter : 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 = [cmFilter];
    }
}
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 さん返信ありがとうございました

引用:
「クロスドメインポリシーファイル」は、読込む側と読込まれる側の両方のドメインに置いてありますか?

はい。置いてあります。

読込む側:
(http://foo.bar/crossdomain.xml)

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <site-control permitted-cross-domain-policies="master-only" />
  <allow-access-from domain="*.foo.bar" to-ports="80" />
</cross-domain-policy>

読込まれる側:
(http://hoge.foo.bar/crossdomain.xml)

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <site-control permitted-cross-domain-policies="master-only" />
  <allow-access-from domain="foo.bar" to-ports="80" />
</cross-domain-policy>





引用:
また、「動画」というのは、SWFですか?それとも、ビデオ(FLV)ですか。

FLV形式のファイルです。画像か動画かは、拡張子を見てif文で分岐させています。




引用:
問題の原因をつきとめたいのであれば、スクリプトは最小限のステートメントにまとめるべきです。

リンク先の情報ありがとうございました。もっとコードを絞り込んで出直してきます!

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 さん返信ありがとうございました

引用:
外部ドメインからの読み込みに問題があるとすれば、
外部ドメインの画像を Bitmap 操作する際に|_level0.CUPPY
あたりが参考になるでしょうか。

参考となる情報ありがとうございます。実際にonLoadの頭で
System.security.loadPolicyFile("http://hoge.foo.bar/crossdomain.xml");
と明示的に指定してみましたが、特に変化はありませんでした。




引用:
ざっと見た感じでは、1つ引っかかる場所として、
self.finish();
が、mclListener.onLoadInit 外にあることですね。

う……実際はonLoadInit内にあるのですが、コードを整形もせず単に垂れ流しただけの、見るだけで拒絶したくなるような記述なのである意味、外にあるようなものです(苦笑)。




引用:
単に「画像を読み込んで、ColorMatrixFilterでグレースケールにしている」だけではありませんね。
もっとシンプルなもので試すべきだとは思いますが。

自分の勝手な思い込みで、知りたい部分だけのことを伝えてしまい、ややこしくしてすみませんでした。
もっとコードを絞って今度は本当に「画像を読み込んで、ColorMatrixFilterでグレースケールにしている」だけのプログラムでもう一度確かめてみます。

野中文雄
Åê¹ÆNo.39846
投稿日時: 2008-8-8 4:57
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 問題のプログラムです
問題の原因をつきとめたいのであれば、スクリプトは最小限のステートメントにまとめるべきです。胃の検査をするとき、食事を抜いて空腹にしなければならないのと同じです。

また、「動画」というのは、SWFですか?それとも、ビデオ(FLV)ですか。
引用:
961832pさんは書きました:
応答ありがとうございます!以下がプログラムの全部になります(記述が汚くて本当に申し訳ないです;;;;)。
現在はdummy_mcに読み込んで対処していますが、これをview_mcに読み込むと先の問題がおきます。
補足ですが、動画の場合は問題なくグレースケールになり、画像の場合だけに問題がおきます。

「クロスドメインポリシーファイル」は、読込む側と読込まれる側の両方のドメインに置いてありますか?
引用:
961832pさんは書きました:
読み込む画像がサブドメインにあるので、クロスドメインポリシーファイルを使って、
以前と同じように読み込めるようにはなったのですが、なぜかグレースケールが効かなくなりました。


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

ひろゆき
Åê¹ÆNo.39845
投稿日時: 2008-8-8 4:50
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: 問題のプログラムです
引用:
createEmptyMovieClipでMCをつくり、そこにMovieClipLoaderで画像を読み込んで、
ColorMatrixFilterでグレースケールにしているプログラムがあります。

単に「画像を読み込んで、ColorMatrixFilterでグレースケールにしている」だけではありませんね。
もっとシンプルなもので試すべきだとは思いますが。

特に、TweenやXMLは、外さないと、
どこに問題があるのか、特定するには、複雑すぎるように思います。

ざっと見た感じでは、1つ引っかかる場所として、
self.finish();
が、mclListener.onLoadInit 外にあることですね。
これだと、画像の読み込みが完了する前に、finish() が実行されるので、
画像の読み込み完了前に、グレースケールにしていることになりませんか?


外部ドメインからの読み込みに問題があるとすれば、
外部ドメインの画像を Bitmap 操作する際に|_level0.CUPPY
あたりが参考になるでしょうか。


----------------
質問する際は、回答者に具体的な情報を与えてください。

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.39833
投稿日時: 2008-8-7 6:26
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: サブドメイン移行時におきた問題
引用:
961832pさんは書きました:
createEmptyMovieClipでMCをつくり、そこにMovieClipLoaderで画像を読み込んで、
ColorMatrixFilterでグレースケールにしているプログラムがあります。

中途半端に言葉だけで説明せずに、スクリプト自体を記載された方が良いのでは?

でないと、スクリプト側に問題がある可能性を否定しきれないと思いますが。


----------------
質問する際は、回答者に具体的な情報を与えてください。

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にグレースケールをかけることで対処していますが少し気になっています。
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ

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