D0805011 シーンにあるレイヤーをムービークリップにして階層を下げたい
Name yuu
Date 2008年05月01日 (木) 00時38分
Message 過去記事「NEXT,PREVで写真が入れ替わるしくみ」
http://hfm-kenchan.com/Lesson/log_qa/D0507101.htm)を参考にしながら製作中です。

photo01.flaのシーン1においてあるレイヤー内容(アクション、ボタンセット、photoMC、ファイル名表示)を
シンボルのムービークリップに変換させ、
それを、シーンのタイムラインにキーフレームとして置き、

シーン1に独自で作った「写真が表示されるボタン」を作成し、それをクリックすると、
「NEXT,PREVで写真が入れ替わるしくみ」が表示されるようにしたいのです。

ムービークリップをシーン1においてみたのですが、外部の写真とファイル名が表示されませんでした。
階層がずれるから写真が表示されないのでしょうか。

ぜひ教えてください。よろしくお願いいたします。
Response 01
2008年05月02日 (金) 23時28分> joy 
yuuさん、
今晩は。
該当サンプルを見てみましたが、
タイムラインを第一フレームまで、減らすと、
1)第一フレームにある、レイヤー名 photoMCに配置してある、インスタンス名 picのalpha値が0になっているので、見えなくなります。
2)第一フレームのみにした場合は、このpicに対して、クリップアクション(フレームアクションで、Tweenクラスを使う方法もありますが、なじみのある方法で、記載しました)で、以下のように記載すると、オリジナルと同じ効果が得られます。

onClipEvent (load) {
this._alpha=0;
}
onClipEvent (enterFrame) {
this._alpha+=(100-this._alpha)/10;//目標接近スクリプトです。分母の10の値で、alpha値の変化を調整します。

尚、ボタンセットNEXTボタン、PREVボタンの
on (release) {
//_root.gotoAndPlay("start");
と削除しても同じです。既に、第一フレームしかないので、このフレーム名 "start"は意味をなしませんので。
}


>シーン1に独自で作った「写真が表示されるボタン」を作成し、それをクリックすると、
「NEXT,PREVで写真が入れ替わるしくみ」が表示されるようにしたいのです。

ここの意味が良く、分かりませんが、「写真が表示されるボタン」で、非表示になっていた、「NEXT、PREV・・・」を表示にするという意味でしょうか?もし、そうなら、
1)mcに対するクリップアクションで、以下を追記し、

onClipEvent (load) {
this._visible=false;//追記分
this.loadVariables("photoName.txt");
}

2)シーンのステージに、適当なボタンを配置し、インスタンス名を、_btn として、第一フレームのscriptレイヤーに以下を追記します。

ロード時は、非表示で、ボタンを押すと、表示になりますが、もう一度、押すと、非表示になるようにしてます。これを、繰り返すようにしてますが、お好みで、変更下さい。

stop();

/*〜 以下追記分〜*/

var display:Boolean = false;//変数displayの初期値は、falseとする

_btn.onRelease = function():Void { //_btnが押されたら、
display = !display;//falseなら、trueになり、trueなら、falseになる
if (display) {//trueなら、mcを表示
mc._visible = true;
} else {//falseなら、非表示
mc._visible = false;
}
};

但し、最初の1枚目のjpgは、表示されます。そこは、触ってません。
Response 02
2008年05月03日 (土) 00時45分> joy 
追記です。

オリジナルは、AS1.0で記載されてましたので、このままですと、エラーが出ます。AS2.0に変更して下さい。Player6.0でもよさそうですが、お持ちのFlashの最大バージョンを使った方がいいでしょう。
尚、ロード時に、「写真が表示されるボタン」のみを表示し、外部photo1.jpgもロードしたくない場合は、

1)シーンのscriptレイヤーに、

/*〜 以下追記分〜*/

var theFile="";//今回追記分:ダイナミックテキストの変数 theFileを最初は、blankとしておくと、ロード時、文字が表示されません。

var display:Boolean = false;//変数displayの初期値は、falseとする

_btn.onRelease = function():Void { //_btnが押されたら、
display = !display;//falseなら、trueになり、trueなら、falseになる
if (display) {//trueなら、mcを表示
mc._visible = true;
} else {//falseなら、非表示
mc._visible = false;
}
};


2)mcに対するクリップアクションを、以下のように、変更すると、そうなります。

onClipEvent (load) {
this._visible=false;//前の追記分
this.loadVariables("photoName.txt");
}
onClipEvent (data) {
theName = fileName.split(",");
Max = theName.length;
Num = -1;//NEXTボタンを押した際に、Num=0;にするために、初期値を-1とします。
/*以下の3つは、ロード時に、作動させない*/
//_root.pic.loadMovie( theName[Num]+".jpg");
//_root.theFile = theName[Num];
//_root.play();→第一フレームしかないので、不要
this.play();
}

となります。
Response 03
2008年05月03日 (土) 11時49分> yuu   
joyさん、ありがとうございました。
こうやってやれば、できるんですね。
本当にいろんなやり方があるのだと、驚きです。
本当にありがとうございました。

このページの先頭へ