AcrionScriptのSoundとSimpleButtonのメモ
Sound()について
一時停止と再開を繰り返す場合、Sound.play()とするたびにSoundChannelを控えなおさなければいけない。sc = Sound.play()
つまり再開のためのSound.play()の直前には、SoundChannelにイベントリスナーの解除とかも必要。
一度だけsc = Sound.play()とすれば、あとはずっとscが有効と思い込んでいたので、sc.positionがずっと0のままではまってしまった、、、当然sc.stop()もきかねぇ~し、、、
SimpleButtonについて
画面のリサイズなどがかかるたびにボタンが利かなくなる症状があったけど、これはボタンイメージの差し替えのたびにオブジェクトの参照を切ってしまっていたためだった、、、それだけではなかった。こっちも読まれたし。
SimpleButtonを拡張してイメージが変化していくようなクラスでは、upState、overState、downState、hitTestStateのイメージとなるSprite(など)については、(例えば)グローバルにconstで宣言してきっちりキープしていく。
自分のことを棚にあげてどうしようもなくバグッたクラスだと思っていました。ごめんなさい、、、
日記
mp3に加えてm4aに対応すべくサウンド周りを書き直している。半年前のコードを見たら、あんまりにも酷すぎて、、、今のコードも半年後にはそう思うのだろうな、、、
その上、今回みたいなバグも他にもあるかも。SimpleButtonの挙動に苦しんで、結局removeして再生成して回避した。そんな部分を全てスマートに書き直せます。よかったよかった。
それにしても、今日の朝なんかは、SimpleButtonの異常についてまったく違う解法を考えていたので、(removeして再生成しまくるクラスでラップとか考えてた。エンストしたバイク押しながら)今回冷静になれて思い違いを根治できてよかった。
一時停止と再開を繰り返す場合、Sound.play()とするたびにSoundChannelを控えなおさなければいけない。sc = Sound.play()
つまり再開のためのSound.play()の直前には、SoundChannelにイベントリスナーの解除とかも必要。
一度だけsc = Sound.play()とすれば、あとはずっとscが有効と思い込んでいたので、sc.positionがずっと0のままではまってしまった、、、当然sc.stop()もきかねぇ~し、、、
SimpleButtonについて
SimpleButtonを拡張してイメージが変化していくようなクラスでは、upState、overState、downState、hitTestStateのイメージとなるSprite(など)については、(例えば)グローバルにconstで宣言してきっちりキープしていく。
自分のことを棚にあげてどうしようもなくバグッたクラスだと思っていました。ごめんなさい、、、
日記
mp3に加えてm4aに対応すべくサウンド周りを書き直している。半年前のコードを見たら、あんまりにも酷すぎて、、、今のコードも半年後にはそう思うのだろうな、、、
その上、今回みたいなバグも他にもあるかも。SimpleButtonの挙動に苦しんで、結局removeして再生成して回避した。そんな部分を全てスマートに書き直せます。よかったよかった。
それにしても、今日の朝なんかは、SimpleButtonの異常についてまったく違う解法を考えていたので、(removeして再生成しまくるクラスでラップとか考えてた。エンストしたバイク押しながら)今回冷静になれて思い違いを根治できてよかった。