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

モジュールタイプ(どんなタイムラインに置いてもそのタイムラインを制御できる)のビデオコントロールボタンを作成したのですが、どうしても停止ボタンのスクリプトにエラーがでます。

私は停止ボタンを押すと、制御したいタイムラインの1フレーム目にムービーが戻って停止するようにしようと、スクリプトを組みました。その際、停止ボタンに当てたスクリプトは、

on(release)
_parent.gotoAndStop{_parent.1};

です。{}の中のドットのあとの1というのは、
制御したいライムラインの1フレーム目を意味しようとしたのですが、間違っている気もします。。。
1つ上のタイムラインの1フレーム目を指定するには、どのようにスクリプトを書けばいいのでしょう?

また、どうしてもわからないので、
ルートタイムラインの1フレーム目に、ラベルで「start」とつけて、先ほどの{}の中を
{_parent."start"};
としても、駄目でした。

ちょっと意味が通じにくかったかもしれませんが、
アドバイスいただけたら嬉しいです。

再生、一時停止、巻き戻し、早送り
のボタンについてはうまくできました。

A 回答 (2件)

あ、なるほど、モジュールってつまり、MCのなかに入れてパックにしたという意味だったのですね;失礼しました。


目からウロコだったのでためしてみましたが、_parent._currentframeというのはたしかにアクセス可能なプロパティですね。「_parent._currentframe」がプロパティだというのは、考えてみればたしかに道理でした。
私としては「_parent」に「_currentFrame+1」の命令を出す、とはじめは思ったのですが、「_parent._currentFrame」というプロパティに「+1」の命令を出す、というのが正確な考え方のようです;(いや、ほんとに目からウロコ‥「プロパティにアクセス」→「命令を出す」は、たしかに動くはず!前回の回答は私の勘違いでした、すみません)
なので_parent.1という「プロパティでないもの」にはアクセスできないのでしょう(相手がいないから)。
_parent.gotoAndStop(_currentFrame+1)でも、_parentのフレーム移動が起きますが、どうも、なぜか一度作動したきりボタンがうごかなくなる?ようです(私のテスト環境のミスかもしれませんが‥)うーん‥‥常になんかいクリックしても1フレームずつとばしたいとき、とかは_parent.currentframeとかを使ったほうがいいということかもしれませんね。

>プロパティ表記を使う場合は、flash自体が現在のムービークリップのプロパティだと判断してしまう
そうですね。というか、基本的に、プロパティ表記の_xとかは、this._xとかの「this」が省略された状態で、フラッシュのルールとして「this._xならthis.は省略していい」ということになってるので、this.以外のプロパティにアクセスしたいときは_parent.などのパスが必要になるということですね。

あと、前の回答と重複するラベル指定の話ですが、
on(release){
_parent.gotoAndStop("ラベル");
}
でとぶと思います。

いい勉強になりました(^^;
では。
    • good
    • 0
この回答へのお礼

ありがとうございました。
私も今回は非常にべんきょうになりました。

モジュール式はけっこう使いまわしがききそうですね。

また、宜しく御願いします。

奥が深い深い、アクションスクリプト!
ありがとうございました。

お礼日時:2002/06/19 00:28

えーと、結論からいくと、


ボタンがその「制御したいタイムライン」に置いてある場合(_rootなら_root上、別のムービークリップならその中に)、命令は
on(release){
this.gotoAndStop(1);
}
だけでいいです。ボタンは「自分自身」(this)として、「自分のいるタイムライン」を参照するからです。_parentを入れてしまうと、そのボタンをムービークリップに入れ子にした場合、「そのムービークリップ」ではなく「そのムービークリップの親」を呼びにいってしまいますよ。

で、余談ですが、もし相対パスで_parent.に命令を出したい場合、
on(release){
_parent.gotoAndStop(1);
}
ですね。ラベルがあるなら
on(release){
_parent.gotoAndStop("ラベル名");
}
です。で、うしろの引数に{_parent.1}みたいに相対座標を入れることは出来ません。相対座標はすでに_parent.goto..の時点で指定されていて、命令はその座標めがけてとんでいってくれています。
ところで「再生、一時停止、巻き戻し、早送り」のボタンについて気になるんですが‥‥;_parent.を使ってた場合、前述したような問題が出ると思われます。一度、そのボタンを別のMCのタイムラインに配置し、そのボタンの作動を確認してみたらどうでしょう?そのMCのタイムラインではなく_rootのタイムラインを動かしてしまうと思います。

この回答への補足

回答有難うございます。

結論からいきますと、

on(release){
_parent.gotoAndStop(1)1};

でうまくいきました。


ところで、
私の書き方がまずかったのですが、このボタン群は、
ムービークリップ上に存在するものなのです。
そのボタンセットを含むムービークリップを一つのタイムライン上に置くという方法です。

ですので、他の「再生、一時停止、巻き戻し、早送り」のボタンについては、問題なく_parentで指定できて、動作も問題ないんです。
(書籍ラーニングactionscriptのP327を参考にしています)

その際、たとえば、巻き戻しの場合は、

_parent.gotoAndPlay(_parent.currentframe-5)

として_parentに4フレームずつ戻るように指定しました。

このときは、()のなかに_parentをしっかり入れても、
_parentのcurrentframeを指定できているんですよね・・

私の憶測ですが、currentframeというのは、プロパティであり、()の中に_parentのプロパティを表記する場合は、_parent.をプロパティ(currentframe)の前につけなくてはならなくて、
(1)というように、1フレーム目だけを指定する場合は、
指定場所が_parentであっても、()の中に_parentの表記は必要がないという解釈でいいのでしょうか??

少し、伝わりにくい文章かもしれませんが、
プロパティ表記を使う場合は、flash自体が現在のムービークリップのプロパティだと判断してしまうから、_parentを前につける必要がある・・・との憶測です。


伝わっていないですかね・・・・
できれば、もう一度アドバイス御願いします。

補足日時:2002/06/18 17:15
    • good
    • 0

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