| 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さん、ありがとうございました。
こうやってやれば、できるんですね。
本当にいろんなやり方があるのだと、驚きです。
本当にありがとうございました。
|
|