- changed status to open
バグ:メッセージの選択肢を高速送りしていると内部エラーになることがある
Xでのやり取りで「5.1以降5.2で多発するようになったから5.0に戻して使っているが5.0でもたまに起こる」「特に店シナリオ「星暦堂」の「次へ」を高速連打していると起こる」ということだったんですが、その間に入った修正で影響しそうなのはissue #1081と#1083しかないように思われます。
参考までに、こちらのフォークで頂いた別の方の報告で、シナリオの最後の方でエラーが出た(メッセージ送りで?)というものがあり、その方のエラーログでは、
File "cw\sprite\message.pyo", line 901, in update
File "cw\sprite\message.pyo", line 924, in update_click
File "pygame\sprite.pyo", line 1215, in change_layer
File "pygame\sprite.pyo", line 834, in change_layer
ValueError: list.remove(x): x not in list
渡したレイヤーがPygameのリストにないっていうエラーだったので、試しにcw/sprite/message.pyのdef update
のcw.cwpy.index = cw.cwpy.list.index(self)
とdef update_click
のself.group.change_layer
2箇所をtry文で実行するようにしたバージョンを試してもらったところ、再現しなくなったということでした。自分の方の環境では再現しないのでよくわからないのですが、多分、特定の環境下では「pygameに投げられるレイヤのリストがどこかのタイミングで壊れる場合がある」ということだと思われたので、こちらにも報告しておきます。
Comments (1)
-
repo owner - Log in to comment
ご報告ありがとうございます。
選択肢を押下する事で若干下に移動する、その際他の選択肢に被らないよう一番手前のレイヤに持ってくる、という処理で手前にするか背後に戻すかのどちらかのレイヤ変更処理で不具合が起きているようです。押下アニメーション中に何か起きているとしか思えないのですが、しかしアニメーションの表示中はそもそも他の操作ができないはずです。
押下表示は6フレームあるのですが、手許でこれをもっと長時間にし、色々操作を試してみても実際なにも起こりませんでした。そうなるとパフォーマンスの問題ではなさそうです。
どういう操作をしているかにもよると思います。高速連打といってもマウスでするかキーボードでするか、マウスポインタを特定の位置におきながら
Enter
を押すか、と色々な操作が考えられます。あるいは何か設定が影響しているのでしょうか。挙げていただいた二つのIssueは症状からするとあまり関係が無さそうに思えます(もちろん断言はできないのですが)。