メイン コーダーズルーム【スクリプト系】 関数をメインタイムライン上に集結させたいの | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
kombinat | Åê¹ÆNo.3293 投稿日時: 2004-1-30 0:27 |
新米 居住地: 目黒区 投稿: 13
使用環境:
on 10.3 |
関数をメインタイムライン上に集結させたいの 各ムービークリップにメソッドを記述するのではなく、メインタイムラインに記述しておいて、必要なときにメインタイムラインから実行するような事は出来ないかと思いスクリプトを書いているのですが。壁に当たってしまいました。アドバイスをいただきたいです。
簡単な例で説明します。 ステージ上に「ball_mc」と言うmcがある状態を考えてください。
こんなかんじで、左から右にball_mcが動く事を期待していたのですが、動きません。 ball_mcのonEnterFrameで実行されるcfMoveはメインタイムラインのメソッドとして働いている、と言う事だと思うのですが、このcfMoveをball_mcに記述することなくball_mcのメソッドとして動かすようにするためにはどうしたらよいのでしょうか。 よろしくおねがいします。 |
youich | Åê¹ÆNo.3297 投稿日時: 2004-1-30 1:06 |
職人 居住地: kobe 投稿: 349
使用環境:
Tiger |
Re: 関数をメインタイムライン上に集結させたいの
と言うかんじでしょうか、、、 もし引数を渡したいのでしたらtargetのMovieClipのプロパティにしてしまうか
すこし特殊なですがactivationObjectを使ってでしょうか。。。
|
野中文雄 | Åê¹ÆNo.3298 投稿日時: 2004-1-30 1:08 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: 関数をメインタイムライン上に集結させたいの イベントハンドラメソッドを定義する場合、コールバック関数には括弧()をつけません。
参考: [メソッドもプロパティ] 引用: kombinatさんは書きました: |
kombinat | Åê¹ÆNo.3316 投稿日時: 2004-1-30 12:44 |
新米 居住地: 目黒区 投稿: 13
使用環境:
on 10.3 |
Re: 関数をメインタイムライン上に集結させたいの Fumioさん、Youichiさん、ありがとうございました。
自分のスクリプトに関する知識の根本的な部分があやふやだったみたいで、とっても勉強になりました。 (いろいろとクリアになりました) いただいたアドバイスを参考に、mcオブジェクトのフェードイン/フェードアウト用の関数を書いてみました。(今回の目的はこれだったんです。)
※activationObjectを使うのは特殊なんですか?僕的には、数行を使ってプロパティを設定するよりも使いやすいかなと思ったんですが、どうでしょうか。 もしデメリットなどが有れば教えて下さい。 ありがとうございました |
youich | Åê¹ÆNo.3318 投稿日時: 2004-1-30 13:22 |
職人 居住地: kobe 投稿: 349
使用環境:
Tiger |
Re: 関数をメインタイムライン上に集結させたいの これでは、もし2つのMovieClipにfadeIn,fadeOutをかけようと思ったらうまくいきませんですよ、
例えば、mc1,mc2とステージにおいて mc1._alpha = 100; mc2._alpha = 0; fadeOut(mc1); fadeOut(mc2); としてみれば、うまく動かないはずです。。 これは
一方がfadeInでMODEが0にしても、もう一方がMODEを1に上書きしてしまうからです。 だから
↑のようにRATE,MODEにvarをつければローカル変数になり functionの中で生成されたfunction(onEterFrame)からは activationObjectの中の変数RATE,MODEとして個別にアクセスできます。 引用: ※activationObjectを使うのは特殊なんですか?僕的には、数行を使ってプロパティを設定するよりも使いやすいかなと思ったんですが、どうでしょうか。 ぼくは、好きなんですが(^^; 例えば、XMLonLoadのcallback先を指定する場合なんか重宝すると思います。 デメリットとして、activationObjectを利用するということは、余分にメモリーを消費することになるから、よくないという意見があります。 今回のfunction fadeInではactivationObjectを使うメリットがそう感じられませんから、
のほうがよいんじゃないかなぁと思います。
|
野中文雄 | Åê¹ÆNo.3321 投稿日時: 2004-1-30 14:30 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: 関数をメインタイムライン上に集結させたいの 変数がタイムラインに設定されてしまっていることの問題点は、youichさんのいわれたとおりです。それから、変数theModeの値判定を、MovieClip.onEnterFrameメソッドの関数内で毎フレーム行うのは、無駄な感じがします。また、theModeの値が1と0の場合を分岐処理するなら、elseアクションでそのどちらにも当てはまらない(theMode != 0 && theMode != 1)場合が残るはずです。
引用: kombinatさんは書きました: Activationオブジェクトは、実際に参照しているローカル変数だけでなく、関数ブロック内のローカルスコープのすべてのプロパティを保持します。ですから、不要なローカル変数がメモリを占有している場合には、あまり望ましくないといわれます。また、ローカル変数への参照は、不要になったら確実に破棄しておかないと、ずっと残ってしまう危険性もあります。ですから、使用には注意が必要だということです。 私は、1回使ったらすぐ捨ててしまうような処理に利用しています。setInterval()関数で、処理のタイミング待ちをして、処理し終えたら即clearInterval()でクリアするような場合です(setInterval()の戻り値をローカル変数に保持)。 引用: ※activationObjectを使うのは特殊なんですか?僕的には、数行を使ってプロパティを設定するよりも使いやすいかなと思ったんですが、どうでしょうか。 |
加藤達雄 | Åê¹ÆNo.3323 投稿日時: 2004-1-30 15:11 |
新米 居住地: 東京 投稿: 24
使用環境:
Win XP Pro MX Pro 2004 |
Re: 関数をメインタイムライン上に集結させたいの イベントハンドラを設定する際は、Activation Objectが大変重宝すると私も思います。例えばフェードイン、フェードアウトの例ですと、こんなふうにも書けますね。
delete this.onEnterFrame と同時にActivation Objectは参照されなくなり、自動的にガベージコレクトされます。 |
youich | Åê¹ÆNo.3324 投稿日時: 2004-1-30 15:25 |
職人 居住地: kobe 投稿: 349
使用環境:
Tiger |
Re: 関数をメインタイムライン上に集結させたいの あ、、katoさん、コードの部分は<code>を[...]ではざむと等幅になりますよ、
後、タブ->スペースの置換をしてからコードをペーストするときれいにインデントされるようです。 引用:
|
加藤達雄 | Åê¹ÆNo.3325 投稿日時: 2004-1-30 15:35 |
新米 居住地: 東京 投稿: 24
使用環境:
Win XP Pro MX Pro 2004 |
Re: 関数をメインタイムライン上に集結させたいの 引用:
はい、何せ新米なもので・・・(^^; 今までタグをミスったことはなかったんですけど、久しぶりのポストでボケてました。修正しました。m(_._)m タブのインデント幅の設定は確かに少し長すぎるのかもしれないですね。。 |
kombinat | Åê¹ÆNo.3333 投稿日時: 2004-1-30 16:39 |
新米 居住地: 目黒区 投稿: 13
使用環境:
on 10.3 |
Re: 関数をメインタイムライン上に集結させたいの 1つの事を実現しようとした場合でも、Fumioさん的表現とKatoさん的表現の様にすごく大きな作り方の違いが出てくるのがおもしろいですね。僕はその辺ですごく困っていて(迷ってしまう)、自分のスクリプトのスタイルを確立しきれないのですが・・・。
人生相談みたいで、すいません。 自分なりにかみ砕いて、こんなコードになりました。
何か有りましたら、バンバン指摘してください。 お願いします。 |
(1) 2 3 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |