Flash и _root и уровни — загрузка SWF в другой SWF

#flash #root #levels

#flash #root #уровни

Вопрос:

Я загружаю старый калькулятор формул в новый проект, над которым я работаю; довольно просто…

 this.createEmptyMovieClip("calc_mc", 0);
loadMovie("calc.swf", calc_mc);
  

Все в порядке…Но эти команды очищают «подсказки» в полях формы в исходном calc.swf

 if (my_txt != null) {
    var mc = my_txt._name   "Hint";
    if (my_txt.length > 0) {
        _root[mc]._visible = false;
    } else {
        _root[mc]._visible = true;
    }
}
_root[this._name   "Hint"]._visible = false;
  

SWF отлично работает сам по себе, но как только он загружается в новый проект, подсказки не проясняются. Я знаю, что _root где-то искажает его, но я не могу понять. Очень признателен.

Ответ №1:

После загрузки в новый _root фильм ссылается на основную корневую временную шкалу фильма, поэтому ваши команды _root завершаются ошибкой при загрузке фильма.

Вы должны изменить их в _parent ….. обозначении. Например, если ваша команда _root имеет 2 уровня, вложенных в загруженный фильм, вы можете ссылаться на root как _parent._parent

или вы можете использовать это уродливое решение:

 _root.calc_mc..............
  

с этим автономный swf больше не будет работать.

Комментарии:

1. Ах, это имеет смысл — так что, если я использую _root в SWF B и загружаю его в SWF уровня 1 («calc_mc», 1); , я должен изменить корневую нотацию на _parent правильно? — _parent[this._name «Подсказка»]._visible = false;

2. Нет, это зависит от того, где находится инструкция _root ….: если она находится на кадре основной временной шкалы SWF B, тогда вы можете использовать одного _parent . Если он находится на временной шкале фильма в формате SWF B, тогда вы должны использовать _parent._parent и так далее.

3. Чувак, это сводит меня с ума — инструкция _root находится на уровне actions на основной временной шкале swf … загрузка ее на уровень 1 другого swf и изменение на _parent, похоже, вообще не влияет на нее. Действительно ли загрузка его в level0 помогает?

4. если он находится на основной временной шкале swf, вы можете просто удалить префикс _root: используйте этот [this._name «Подсказка»]………, потому что на корневой временной шкале _root и this эквивалентны, но это работает, даже если загружено в другойфильм.

5. работает уродливый вариант; намного красивее, чем мой список событий onSetFocus, onKillFocus. все еще не повезло только с «этим» though…so трудно устранить неполадки без каких-либо ошибок.