メイン コーダーズルーム【スクリプト系】 関数をメインタイムライン上に集結させたいの | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
加藤達雄 | Åê¹ÆNo.3334 投稿日時: 2004-1-30 17:47 |
新米 居住地: 東京 投稿: 24
使用環境:
Win XP Pro MX Pro 2004 |
Re: 関数をメインタイムライン上に集結させたいの 皆さんからの指摘が反映されたようでよかったです。
引用: 何か有りましたら、バンバン指摘してください。 ということですので、ミクロの話になりますが気がついたことを少し・・・。 フェードを実行する対象のmcが「万一」RATEというプロパティを別に持っていたら破綻します。原則としてできるだけ外からのプロパティ設定は避けたほうが無難ということは言えると思います。 あと、if判定ですが、 if (this._alpha>=0 && this._alpha<=100) ですと常にフェードアウト用、フェードイン用両方のチェックをすることになりますから、極ミクロな話になりますが、無駄があるのかもしれません。 ifによる分岐をできるだけ少なくしたいというのは皆さん結構考えられることだと思いますが、そういった場合はこんな方法もあります。
今回の例のようなシンプルな例では、何もここまでしなくてもという感もありますが(^^;、条件判定が複雑で且つ何度も判定する必要が出てくる場合は、こういったやり方も有効だと思います。 |
野中文雄 | Åê¹ÆNo.3351 投稿日時: 2004-1-31 6:24 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: 関数をメインタイムライン上に集結させたいの 私は、元のスクリプトがある場合には、できるだけそれを出発点に書替えの案を示しています。ですから、私自身が書く場合のスクリプトとは違っています。自分で書くスクリプトは、Katoさんの最初のサンプルに近いと思います。
引用: kombinatさんは書きました: RATEというプロパティの重複より、MovieClip.onEnterFrameメソッドの重複の方が、可能性としては高いように思います。それを避けるためにはイベント取得専用のMovieClipをつくって、しかも複数のインスタンスから利用可能にするにはリスナーを作成して、とかなりややこしい話になります。(^^; ですから、注意事項として意識したうえであれば、現行でもよいような気がします。 引用: TatsuoKatoさんは書きました: スクリプトの記述量は増えますが、フェードインとフェードアウトのコールバック関数を別途に定義してもよいでしょう(実行されるのはどちらか一方なので、処理効率は上がります。先の私のサンプルは、そのような構成です)。 引用: あと、if判定ですが、 |
youich | Åê¹ÆNo.3363 投稿日時: 2004-1-31 15:47 |
職人 居住地: kobe 投稿: 349
使用環境:
Tiger |
Re: 関数をメインタイムライン上に集結させたいの 引用:
えらいactivation objectが気に入ってますねぇ ぜひkatoさんにも「AO友の会」に入っていただきたいところです。。(^^; まぁ、なんです、、後気になるのはswf7から実行速度が早くなった理由が いわゆる「ActionDefineFunction2」内でローカル変数がレジスターで処理されるようになったことですが、 activationObjectを使う場合これを、レジスターで処理してくれません。。。。 気にしなくてもこういうことが影響するようなコードにはあまりならないと思いますが、念のため。。
|
加藤達雄 | Åê¹ÆNo.3368 投稿日時: 2004-1-31 16:59 |
新米 居住地: 東京 投稿: 24
使用環境:
Win XP Pro MX Pro 2004 |
Re: 関数をメインタイムライン上に集結させたいの 引用:
youichさんが会長さんですか?入会希望(^^) 特にActivation Object云々を気にしなくても、とりあえず、 「ネストされた関数がある場合、内側の関数内で外側の関数のローカル変数を参照できる」というのは便利な仕様なので使わない手はないと思うんですよね。ちなみに最新(?)OOP言語,C#の次期バージョンでもその仕様が取り入れられるそうです。 引用: activationObjectを使う場合これを、レジスターで処理してくれません。。。。 あ、そうなんですか。ただ、Activation Objectを使わずに行う場合は、何らかのオブジェクトにプロパティとしてある値を置いておくことになり、当然レジスターでの処理ではなくなるわけですから、それと同じことですよね? その件に関しては、イーブンじゃないでしょうか(^^; |
youich | Åê¹ÆNo.3370 投稿日時: 2004-1-31 19:15 |
職人 居住地: kobe 投稿: 349
使用環境:
Tiger |
Re: 関数をメインタイムライン上に集結させたいの 引用:
すいません、説明が不十分ですた。 fは普通にレジスタを使ってOK f1がレジスタを使えないでX f2はループの所はレジスタが使えてOK というようなのことでした?
|
加藤達雄 | Åê¹ÆNo.3372 投稿日時: 2004-1-31 19:53 |
新米 居住地: 東京 投稿: 24
使用環境:
Win XP Pro MX Pro 2004 |
Re: 関数をメインタイムライン上に集結させたいの youichさん、了解です。これは面白いテストですね。
とちょっと極端な例で試してみたんですが、確かにf2()でのみ、ループ内でレジスタが使われているようです。 外側の関数のローカル変数が内側の関数で参照されたが最後、もうそれはレジスタでは扱われなくなるということですね。 |
youich | Åê¹ÆNo.3428 投稿日時: 2004-2-2 3:30 |
職人 居住地: kobe 投稿: 349
使用環境:
Tiger |
Re: 関数をメインタイムライン上に集結させたいの 引用:
そ、それは、katoさんが面白くさせてますねんやん。
てっきりバイオのキーボードがおなくなりになったのかと、 ふ?む?、しかしkatoさんのPC速いですね、、ぼくのMacより3倍ぐらい速い。。。 もしかして、さばよんだりしてません
|
加藤達雄 | Åê¹ÆNo.3446 投稿日時: 2004-2-2 14:37 |
新米 居住地: 東京 投稿: 24
使用環境:
Win XP Pro MX Pro 2004 |
Re: 関数をメインタイムライン上に集結させたいの 引用:
youichさんは書きました: はい、ちょっとだけ見栄はりました。数回テストして一番速いのを書きました。(笑) でも値の範囲はどちらも3?4msほどでしたよ。 |
kombinat | Åê¹ÆNo.3449 投稿日時: 2004-2-2 15:16 |
新米 居住地: 目黒区 投稿: 13
使用環境:
on 10.3 |
Re: 関数をメインタイムライン上に集結させたいの Katoさんのスクリプトをじっくり眺めて、何となくオブジェクト指向でプログラミングするときの考え方が、ぼやーっと解ってきたような気がします。
ここで、もう少しクリアにするために質問しても良いでしょうか。 以前、参考にいただいたスクリプトについてです。
という感じなのですが、変な解釈をしていないでしょうか? あと、上記の解釈で間違っていないとした場合に気になる部分が有ります。 「どこかに生まれた FadeIn オブジェクトの行方」です。 FadeInオブジェクトはどこかに存在したままになっているのでしょうか?
で、生まれたオブジェクトの行方が気になってます。 もしかしたら、すごくトンチンカンなことを言っているのかもしれないのですが、よろしくお願いします。 |
加藤達雄 | Åê¹ÆNo.3452 投稿日時: 2004-2-2 15:54 |
新米 居住地: 東京 投稿: 24
使用環境:
Win XP Pro MX Pro 2004 |
Re: 関数をメインタイムライン上に集結させたいの 引用:
kombinatさんは書きました: はい、その通りです。やってることは単純ですよね。 引用:
そのFadeInオブジェクトは、execute()実行後、消えてなくなります。 fi = new FadeIn(my_mc, 3); fi.execute(); delete fi; を一行で書くなら、上の書き方になります。どちらでも全く問題ないと思います。 |
« 1 (2) 3 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |