Я предполагаю, что ваш код находится на первом кадре вашей временной шкалы.
Я не буду углубляться в вопросы, касающиеся этой практики в as3, но вам лучше использовать класс документа. Таким образом, код инициализируется только один раз. Я предполагаю, что когда вы переключаетесь между сценами, вы продолжаете реинициализацию, поэтому вы в конечном итоге сбрасываете mute в false.
Чтобы проверить, происходит ли это, просто добавьте trace("init")
к этому сценарию и посмотрите, как часто вы вызываете его. Вы также можете добавить трассировку в вашу функцию toggleMuteBtn, чтобы увидеть, что такое переменная mute, прежде чем вы ее измените. .
на заметку, мне любопытно, почему вы типизируете родительский MovieClip(parent)
, хотя это не вызовет никаких проблем, в этом нет необходимости, так как вы можете просто использовать parent