アプリ版:「スタンプのみでお礼する」機能のリリースについて

今、FLASHの勉強をしているのですが、
こんな記述に出会いました。

on (release) {
_root.mypage = 5;
_root.play();
}

この中でmypageというのが、あります。
探してみましたが、インスタンス名にmypageを持つものは無いようです。
mypageとは何でしょうか?

これは特殊な処理なのでしょうか?
5は配列から取り出しているようです。

なにぶん初心者なものでわかりやすく御回答いただけますでしょうか。
よろしくお願い致します。

A 回答 (3件)

#2で回答した者です。



#2の補足に関してなのですが,

on (release) {
_root.mypage = 7;
_root.play();
}

と書かれたボタンをクリックしたために,

mypage に 7 という値が代入されて
_root のムービーがしばらく進み,

textarea_mc.gotoAndStop(mypage);
pic_mc.play();

と書いてあるフレームにたどり着いたために
mypage = 7 が有効になって

textarea_mc.gotoAndStop(7);
pic_mc.play();

になったというのではないのですか。これが普通の流れです。


そうではなくて,何もクリックしないのに,

textarea_mc.gotoAndStop(mypage);
pic_mc.play();

と書かれたフレームまで _root のムービーが進んで,
自動的に textarea_mc が7フレームでストップするということですか?
どうも,どんな状態のファイルなのか頭を抱えてしまいますが。

別に変数で指定しなくても,textarea_mc を7フレームにすることは可能です。
textarea_mc というムービークリップに

onClipEvent (load) {
this.gotoAndStop(7);
}

と書いてあれば,変数の指示がなくても,textarea_mc が表示されたときに自動的にフレーム7が表示されますし,
textarea_mc というムービークリップ内のタイムラインのフレーム1のスクリプトに

gotoAndStop(7);

と書いてあってもtextarea_mc が表示されたときに自動的にフレーム7が表示されますし,
_root のタイムラインに,

textarea_mc.gotoAndStop(7);

と書いてあっても同じです。
また他のムービークリップにデフォルトで textarea_mc をフレーム7に行かせるスクリプトが書いてあるのかもしれません。

これも様々な方法があるので特定はできませんが,
mypage = 7; が定義されなくても色々な方法で textarea_mc をフレーム7に行かせる方法はあります。

あと,mypage = 7; と書かなくても
_root のムービーの何処かに,
「7」とすでに入力されている mypage という変数名のダイナミックテキスト,またはテキスト入力のテキストフィールドが置いてあっても, mypage = 7; と同様の意味になります。

う~ん…
せっかく補足をしてもらっても,やはりいろいろな可能性がありすぎて,何とも言えません。
すみません。
    • good
    • 0

#1で回答した者です。



on (release) {
_root.mypage = 5;
_root.play();
}

mypage がインスタンス名だとすると, 5 と言うのは何に当たるのでしょうか。
人間も理解できませんし,PCも理解できません。

_root.mypage._alpha = 5;

これであれば,理解できます。
mypage のアルファ(透明度)というプロパティを 5 にするということです。

_root.mypage._x = 5;

これでも理解できます。
mypage のx座標というプロパティを 5 にするということです。

「あなたは 5 です。」
と言われても何が 5 なのか理解できませんよね。
「あなたの学年は 5 です。」「あなたの部屋は 5 です。」というのならまだ理解できます。
ですから,mypage はインスタンス名ではなくて単なる 値の入れ物,つまり変数ということになります。

「mypageとは何でしょうか?
これは特殊な処理なのでしょうか?」

と書かれていますが,変数名は特殊な処理を実行する名称であったり,スクリプトと同じ名前は使用できません。
変数名は独自で作ったプログラム上意味不明な文字列にしなければなりません。
そのために,myDate というように前に my を付けてみたり,
スクリプトとかぶりそうであれば, goto_frame のようにスクリプトにありそうな言葉をアンダーバーでつないで,わざとプログラム上意味不明,でも人間が見たら意味がわかる変数名にします。

#1の補足に
「確かに動作は代入される値によって変わります。」

と書かれていますが,
この変わる動作の部分がわからないので,回答する側としても#1のように漠然とした回答しかできません。
変数はどこでも使うので,限定はできません。


書かれているスクリプトは
on (release)  で始まっています。
質問では説明されていませんが,
『これは明らかにボタンクリックで動作するスクリプト。
つまり,ムービークリップ,もしくはボタンシンボルに書かれたボタンとして機能するスクリプトである。』

そのくらいしかわかりません。
現物をみればすぐわかるのでしょうがそれもできないので,あとは推理するしかないです。

~~~以下は推測になります~~~

このボタンをクリックすることによって,
_root.play(); する。
つまり,このボタンがクリックされるまでは,メインのアニメーションは停止していて,
このボタンをクリックされることで,凄く大切なメインのタイムラインを動かす重要なボタンである。
その前に
_root.mypage = 5;
でと限定された値が変数に入る。
ということは

on (release) {
_root.mypage = 1;
_root.play();
}



on (release) {
_root.mypage = 2;
_root.play();
}

というボタンも存在するのではないだろうか。
mypage といういかにも,サイト内のページを示すような変数名。
次に行くページを
_root.mypage = 5; で決めてしまった上で,
_root.play(); でメインのアニメーションを動かしている。

getURL する前の共通で見せたいアニメーションを動かす為のボタン,もしくは
loadMovie で mypage というSWFの時間稼ぎではないか。

~~~ここまでが推測です~~~


例ですが。
_rootのタイムラインの最後のフレームに

getURL(mypage + ".html");

と書いてあれば,このムービーが終了次第,
「mypage + ".html"」つまり「5 + ".html"」つまり, 「5.html」 にジャンプします。

_root のタイムラインの何処かに

_root.mymc.loadMovie(mypage + ".swf")

と書いてあれば,そのメインのアニメーションが動いている途中か,メインのアニメーションが動き終わったころに,
「mypage + ".swf"」 つまり,「5 + ".swf"」つまり,「5.swf」がmymc というインスタンス名のムービークリップに読み込まれます。


持たれているFLAファイルは上で推測したり,説明したように単純なものではないかもしれません。
しかし変数はこういう具合につかうものです。

どういう場合かわかりますか。
この場合,何が何でも
_root.play(); 
でメインのアニメーションが動作させたいのです。
その後に,クリックされたボタンによって結果が変わるのです。
どのボタンをクリックしても共通のアニメーションを表示させたくて,
そのアニメーションが動き出した後に,ボタンによって結果を変えたいのです。

もし,変数を作らないで,同じムービーの後に違う結果を表示させるのであれば,
同じムービーを違うフレームに何度も作らないとならなくなります。

もし getURL であったとすると,

2~51フレームは
getURL("1.html"); 用のアニメーション
52~101フレームは
getURL("2.html"); 用のアニメーション
    …
202~252フレームは
getURL("5.html"); 用のアニメーション


1.htmlページに行きたいボタンには
on (release) {
_root.gotoAndPlay(2);
}

2.htmlページに行きたいボタンには
on (release) {
_root.gotoAndPlay(52);
}

5.htmlページに行きたいボタンには
on (release) {
_root.gotoAndPlay(202);
}

アニメーションは共通で,最後の結果だけを変えたい場合このに大変なことになります。
それは,労力においても,ファイル容量においても全てにおいて無駄です。
だから変数を使うのです。

 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

長くなりましたが,
_root.mypage = 5;
を見てそれが何なのかはこちらでは判断できません。
色々な場所で,色々な用途で変数は使います。

またFlashは変数の宣言をしなくても,勝手に作った変な文字列であれば,勝手に変数であると判断しますから,

var mypage

のようなものがどこかにあるとは限りません。
変数は,宣言しなくても良いので楽ですが,他の人が見たときに何の変数であるか判断しにくい面があります。

この回答への補足

> #1の補足に
> 「確かに動作は代入される値によって変わります。」
> と書かれていますが,
> この変わる動作の部分がわからないので,回答する側> としても#1のように漠然とした回答しかできません。

テキストエリアのフレームに対応しているようです。
別にボタンの定義があり、そこではそれぞれのボタンに
1~7が割り振られています。
on (release) {
_root.mypage = 1~7;
_root.play();
}
例えば7のボタンを押すと、それを割り振られたTEXT AREAのフレーム7が呼び出され、文章が表示されます。

質問ついでになりますが、mypageと書かれた変数を見つけ出すことができません。
変数を探すのに良い方法はないでしょうか?

また、actionと名づけられたタイムラインには、

textarea_mc.gotoAndStop(mypage);
pic_mc.play();

という指定があり、mypage = 7 という指定はないにもかかわらず、TEXT AREAの7フレーム目が呼び出されているようです。

これはどういうことでしょうか?

御回答よろしくお願いします。

補足日時:2005/10/22 22:57
    • good
    • 0

おそらく変数名です。


その変数 mypage に 5 が代入されることによって,
その後のインスタンスの動きが変わる。
もしくは,getURL するURLが変わる。
もしくは getURL でGETかPOSTによって渡される変数の値が変わる。
もしくは loadMovie で渡される変数の値が変わる。
のうちどれかの可能性が高いです。
    • good
    • 0
この回答へのお礼

なるほど。
確かに動作は代入される値によって変わります。

変数にmypageという値を見つけることはできなかったのですが、勉強不足なんでしょうね...。

ありがとうございます。

お礼日時:2005/10/22 00:39

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