電子書籍の厳選無料作品が豊富!

こんにちは。
FLASHアクションスクリプト初心者です。

XMLを使ってスライドショーを作成した外部SWFを
メインのSWFに読み込ませたいのですが、うまくいかなくて困っています。


構成としては、メインとなるSWFファイルがあり、
そこに外部にある各ページのSWFファイルを読み込んでいます。
現在、メインのSWFファイルに読み込ませるページAのSWFファイルを作成ました。
その外部SWFファイルには、こちらのサイト
http://www.oman3d.com/tutorials/flash/slideshow/ …
を参考にして、XMLを使って読み込んだ画像で
スライドショーを作成しました。
この外部SWFファイルをメインのSWFファイルに読み込ませたのですが、
メインSWFをパブリッシュして確認したところ、
画像スライドショーの部分が表示されませんでした。
(テキストやMCなどは表示されます。)
外部SWFのパブリッシュプレビューでは表示されています。


actionscriptは、外部SWFの一フレーム目に記述されています。

****actionscript****
import mx.transitions.Tween;
import mx.transitions.easing.*;
var myShowXML = new XML();
myShowXML.ignoreWhite = true;
myShowXML.load("slideshow.xml");
myShowXML.onLoad = function() {
_root.myWidth = myShowXML.firstChild.attributes.width;
_root.myHeight = myShowXML.firstChild.attributes.height;
_root.mySpeed = myShowXML.firstChild.attributes.speed;
_root.myImages = myShowXML.firstChild.childNodes;
_root.myImagesNo = myImages.length;
createContainer();
callImages();
};
function createContainer() {
_root.createEmptyMovieClip("myContainer_mc", 1);
myContainer_mc.lineStyle(5, 0x000000, 100);
myContainer_mc.lineTo(_root.myWidth, 0);
myContainer_mc.lineTo(_root.myWidth, _root.myHeight);
myContainer_mc.lineTo(0, _root.myHeight);
myContainer_mc.lineTo(0, 0);
myContainer_mc._x = (Stage.width - myContainer_mc._width) / 2;
myContainer_mc._y = (Stage.height - myContainer_mc._height) / 2;
}
function callImages() {
_root.myMCL = new MovieClipLoader();
_root.myPreloader = new Object();
_root.myMCL.addListener(_root.myPreloader);
_root.myClips_array = [];


_root.myPreloader.onLoadComplete = function(target) {
_root.myClips_array.push(target);
target._alpha = 0;
if (_root.myClips_array.length == _root.myImagesNo)
{

_root.target_mc = -1;
moveSlide();
myShowInt = setInterval(moveSlide, (_root.mySpeed * 1000) + 1000);
}
};
for (i = 0; i < _root.myImagesNo; i++)
{
temp_url = _root.myImages[i].attributes.url;
temp_mc = myContainer_mc.createEmptyMovieClip(i, myContainer_mc.getNextHighestDepth());
_root.myMCL.loadClip(temp_url, temp_mc);
}
}
function moveSlide() {
current_mc = _root.myClips_array[_root.target_mc];
new Tween(current_mc, "_alpha", Strong.easeOut, 100, 0, 1, true);
_root.target_mc++;
if (_root.target_mc >= _root.myImagesNo)
{
_root.target_mc = 0;
}

next_mc = _root.myClips_array[_root.target_mc];
new Tween(next_mc, "_alpha", Strong.easeOut, 0, 100, 1, true);
}

宜しくお願いいたします!

A 回答 (2件)

#1です。



最初のご質問,

> XMLを使ってスライドショーを作成した外部SWFを
> メインのSWFに読み込ませたいのですが、うまくいかなくて困っています。

と,

> このスライドショーを親SWFの中にあるムービークリップの中に入れる
> (作成する)必要がでてきてしまいました。

は同じ事のように思えますが...(同じ対処法でできる)。

某mixiなど("など" は悪い意味ではありません)と,
マルチポスト("マルチポスト" は悪い意味です)などしているのでだんだん混乱しているだけではありませんか?
聖徳太子ではないのですから。
    • good
    • 0

****actionscript****


のすぐ後(すぐ下)に,

this._lockroot = true;

と書けばうまく行きませんか?

ロードさせると,親SWF の _root に 子SWFの _root がズレますよ。
なぜなら 親SWF の中では 子SWF は1ムービークリップですから。

あとファイルの構造も関係しますが,
それは書かれていないのでわかりません。

この回答への補足

BlurFiltanさん
アドバイスありがとうございます!

this.lockroot = true;

と書いてみましたが、やはり表示されませんでした。

子SWFファイルの構造としては、asレイヤーの一フレーム目に上記のasが書いてあり、asレイヤーの最後のフレーム(15フレーム目)にstop();が書かれています。
その他のレイヤーで文字や画像(スライドショーではない動かない画像)にTWEENでアルファをかけてあります。

親SWFファイルでは、ボタンAを押したときに空ムービークリップload_mcに子SWFを読み込ませるアクションスクリプトが書いてあります。
→ load_mc.loadMovie("xxx.swf");

環境を記述するのを忘れてしまいましたが、
WindowsXP/FlashMX/AS2.0
です。

宜しく御願い致します。

補足日時:2008/06/17 17:10
    • good
    • 0
この回答へのお礼

BlurFiltanさん
アドバイスありがとうございました!

子SWFの一番最後のフレームに上記のアクションスクリプトを書きなおしたら、親SWFで表示することが出来ました!
最後のフレームにきちんとかかないとダメなんですね・・・。

ちょっと考えれば分かることなのに、気付きませんでした。
すみません。

本当にありがとうございました!!!!

そして、ここにきてもう一つ問題が起きてしまいました。
このスライドショーを親SWFの中にあるムービークリップの中に入れる(作成する)必要がでてきてしまいました。
親SWFのasレイヤーに上のスクリプトを書き、
スクリプトの_rootのところを_root.mcの名前 に変更してみたのですが、
表示されませんでした。
たびたびの質問で申し訳ございませんが、知恵をかして下さい!

お礼日時:2008/06/17 17:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!