dポイントプレゼントキャンペーン実施中!

flash初心者ではありますが、とりためた写真をwebでflashを使ったスライドショーで見せたいと思って勉強しています。

実は、このサイトの過去の質問「動的にファイルを読み込むようなスライドショーを作りたい。」http://okwave.jp/qa1690465.html を参考にさせていただいてうまいこと出来ました。

●が、表題の件のとおり、表示される写真の軸点(?)というのでしょうか、それが左上となっているものを真ん中にしたいのですが、どのようにしたら直るのでしょうか…?

●あともう1点、全ての写真が表示されたら止まるように設定したいのですが、これもどのようにしたらよいでしょうか。

ご存知の方がいらっしゃいましたらどうかお教え願えないでしょうか。

A 回答 (1件)

まず,


外部 JPEG 読み込むために用意した2つのムービークリップ
「MCa」 と 「MCb」 に次のように書いてください。

---------------------------------
onClipEvent (load) {
// この MC を「ステージ中央 - MCの幅の半分」の座標に移動
this._x = Stage.width/2-(this._width/2);
// この MC を「ステージ中央 - MCの高さの半分」の座標に移動
this._y = Stage.height/2-(this._height/2);
}
---------------------------------

これで,
どんなサイズの JPEG がロードされた場合でも,
ステージ中央に読み込まれます。

JPEG(SWFも) がロードされる場合,
ムービークリップの基準点を基準に写真の左上のコーナーが表示されます。
これは,仕様ですから変えるわけには行きません。

ですから,
もし上のように ステージ中央 に表示させたいのでしたら,
一応ステージ中央を指示しておいて
(Stage.width/2,Stage.height/2)
その座標から,自分自身の幅の半分と,高さの半分を引くようにします。



次に本体のスクリプトですが,
どのスクリプトに関して修正したいのかがわからなかったため,
SharedObject を使わない方を修正することにしました。
最後の JPEG が読み込まれたときに止まるということは,
すごい枚数の JPEG が用意されているわけではないと思ったからです。

-----------------------------------
onClipEvent (load) {
//アルファの変化の速さの設定(※1↑)
spd_alp = 5;
//静止時間の設定(※3↓)
stop_time = 12;
//写真の枚数を記入(※4↓)
photo_all = 5;
//変数 phot_no を初期化
phot_no = 1;
//変数 count1・2の初期化
count1 = 0;
count2 = 0;
// ● 変数 i ・ j の初期化
i = 0;
j = 0;
// ★ 変数 flag の初期化
flag = 0;
_root.MCa._alpha = 101;
_root.MCb._alpha = -1;
//MCaに 1.jpg を読み込む
_root.MCa.loadMovie(phot_no+".jpg");
}
onClipEvent (enterFrame) {
// ★ flag が 0 のときだけ以下全てを実行
if (flag == 0) {
//MCa のアルファが 0 より小さくなったとき
if (_root.MCa._alpha<0) {
_root.MCa._alpha = 0;
_root.MCb._alpha = 100;
MCa_alp = MCb_alp=0;
//変数 i の初期化
i = 1;
//phot_noを 1 増やす
phot_no++;
//もしphot_noが全枚数に達したら
if (phot_no>photo_all) {
// ★ flag を 1 にする
flag = 1;
}
//MCa に phot_no.jpg を読み込む
_root.MCa.loadMovie(phot_no+".jpg");
//MCa のアルファが 100 より大きくなったとき
} else if (_root.MCa._alpha>100) {
_root.MCa._alpha = 100;
_root.MCb._alpha = 0;
MCa_alp = MCb_alp=0;
//変数 j の初期化
j = 1;
phot_no++;
if (phot_no>photo_all) {
// ★ flag を 1 にする
flag = 1;
}
//MCb に phot_no.jpg を読み込む
_root.MCb.loadMovie(phot_no+".jpg");
}
//count1 が stop_time(12)以上になれば
if (count1>=stop_time) {
i = 0;
count1 = 0;
//アルファの変化の入れ替え
MCa_alp = spd_alp;
MCb_alp = -spd_alp;
//count2 が stop_time(12)以上になれば
} else if (count2>=stop_time) {
j = 0;
count2 = 0;
//アルファの変化の入れ替え
MCa_alp = -spd_alp;
MCb_alp = spd_alp;
}
//以下は常に実行
_root.MCa._alpha += MCa_alp;
_root.MCb._alpha += MCb_alp;
count1 += i;
count2 += j;
}
}
-----------------------------------


★印を付けた部分が修正した箇所です。

●印を付けた部分は訂正です。
i と j を初期化しておかなければ,
1回目の時のみ,2.jpg のロードを飛ばしてしまいますね。
スクリプトの書き忘れミスでした。訂正いたします。
 
    • good
    • 0
この回答へのお礼

ご回答大変ありがとうございました!!できました~!
自分なりに調べて、読み込んだ画像は左上が基準点になってしまうことまではわかったのですが、具体的な対処法がわかって勉強になりました。ありがとうございます。

実は…加えて実現したいことがありましてあわせて質問させて頂きたいのですが、もしよろしければ教えてください;

読み込む画像は10枚~15枚程度で、基本的にスライドショーで見せるのですが、
「next」ボタン、「prev」ボタンを追加して、それらのボタンが押されたときにはオートプレイ(スライドショー)を止めて、ボタンを押すことでの前後送りをしたいのですが、どのように設計すれば実現可能なのでしょうか…。

あと…
トップページ(これはhtml)からのリンクでそのスライドショーが始まるのですが、そのリンクの他に、トップページ(html)に各サムネイルも配置しこれもおのおのボタンとし、件のflashで任意の写真を表示させたいのです。(このときはオートプレイではなくボタンで送る)

もし、もしよろしければ教えてください!どうかよろしくお願い致します。

お礼日時:2007/04/05 20:35

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