メイン 迷える子羊の部屋【初心者専用】
サウンドのフェードアウト | 投稿するにはまず登録を |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
| 投稿者 | スレッド |
|---|---|
| TOMIYASU | Åê¹ÆNo.39479 投稿日時: 2008-7-9 14:32 |
常連 ![]() ![]() 居住地: 投稿: 93
使用環境:
Windows7Pro, CS5Pro |
サウンドのフェードアウト WindowsXP SP2 MX Pro v.7.0.1
メインのタイムラインのあるフレームで以下のようにロードしたサウンドを 一定のフレームに来たときにフェードアウトさせようと以下のようにしました。 実際フェードアウトはするのですが、消音後も一定間隔でこのフレームアクションの処理は呼び続けられるわけで 今回のような軽い処理ならまだ良いですが重い処理になったら 全体への影響も相当でるのではと思いました。 根本的な理解として、その心配は正しいでしょうか? またもしもっと効率の良いスクリプト等をお教え願いたいのですが・・・ ロードするフレームアクション: var mySound:Sound = new Sound(this); mySound.loadSound("hogehoge.mp3", true); mySound.setVolume(61); フェードアウトするフレームアクション: this.onEnterFrame = function() { V = mySound.getVolume(); if (V > 0) { V = V - 0.1; mySound.setVolume(V); }else{ mySound.stop(); } }; |
| ひろゆき | Åê¹ÆNo.39480 投稿日時: 2008-7-9 14:35 |
ちょんまげら ![]() ![]() 居住地: 東京砂漠 投稿: 4403
使用環境:
10.8.5 Flash Professional CS4/CS6/CCSafari 6.1 |
Re: サウンドのフェードアウト 引用:
TOMIYASUさんは書きました: 必要がなくなったのであれば、止めれば良いのでは? 「F-site | イベントハンドラメソッドはdeleteで消せ!」
|
| TOMIYASU | Åê¹ÆNo.39482 投稿日時: 2008-7-9 15:15 |
常連 ![]() ![]() 居住地: 投稿: 93
使用環境:
Windows7Pro, CS5Pro |
Re: サウンドのフェードアウト ひろゆきさん、ありがとうございます。
このスクリプトを加えて検証しようとこのフレームアクション内に trace();を入れて実行するとボリュームがゼロになった後もずっと呼ばれ続けていることが分かります。 そもそも、この"delete this.onEnterFrame;をここで(自関数で) 呼ぶこと自体にシンタックスや実行時のエラーが発生しないことが 私にとってActionScriptを難しく感じさせます。どうかよろしくお願います・・・・ this.onEnterFrame = function() { V = mySound.getVolume(); trace(V); if (V > 0) { V = V - 0.1; mySound.setVolume(V); }else{ mySound.stop(); delete this.onEnterFrame; } }; |
| あにぃ | Åê¹ÆNo.39483 投稿日時: 2008-7-9 15:34 |
職人 ![]() ![]() 居住地: 北海道 投稿: 250
使用環境:
Flash8 FlashCS3 WinXP FlashLite1.1 / 2.0 |
Re: サウンドのフェードアウト Volumeの値に設定できるのは整数値のみだった気がします。
なので、 にしたほうがいいかと思います。 引用: このスクリプトを加えて検証しようとこのフレームアクション内に そんなわけないと思い、検証しましたがなりません。 なったのであれば、他の部分に問題があるように思われます。
|
| TOMIYASU | Åê¹ÆNo.39486 投稿日時: 2008-7-9 21:53 |
常連 ![]() ![]() 居住地: 投稿: 93
使用環境:
Windows7Pro, CS5Pro |
Re: サウンドのフェードアウト towardさん、ありがとうござあます。
引用: Volumeの値に設定できるのは整数値 修正しました。ありがとうございます。 引用: 検証しましたがなりません。 デクリメントを整数単位で設定すると出力ウィンドウへの 音量数値の出力がゼロの時点で止まりました。 少数にすると延々と呼ばれて、ゼロの出力が止まりませんでした。 そこが問題でした。解決しました。ありがとうございます。 参考のためお教えください。 イベントハンドラのonEnterFrame = function()を消すことですが それを自分自身の関数内で消すことが驚きなのですが、 このようなことは一般的なユーザ定義関数では無理ですね? タイムラインというオブジェクトにおいてフレームから そのイベントハンドラを取り除くケースだけできるようになっているのでしょうか? ほかにもこのような例はあるのでしょうか? 不勉強で申し訳ありませんが教えてください。 |
| 野中文雄 | Åê¹ÆNo.39487 投稿日時: 2008-7-9 23:07 |
ちょんまげら ![]() ![]() 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: サウンドのフェードアウト
|
| TOMIYASU | Åê¹ÆNo.39488 投稿日時: 2008-7-9 23:21 |
常連 ![]() ![]() 居住地: 投稿: 93
使用環境:
Windows7Pro, CS5Pro |
Re: サウンドのフェードアウト 野中様ありがとうございます。
一定の条件で自分を消して大丈夫で、その後たとえ 呼ばれたとしてもエラーが発生しないということですね。 (なければ無いで済んでいくという・・・) このことを今の初心の時点で知ることができ良かったと思います。 |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
| 投稿するにはまず登録を | |



ログイン


Windows7Pro,
CS5Pro

10.8.5


Flash8
FlashLite1.1 / 2.0



