Показать сообщение отдельно
Старый 07.08.2004, 15:31
начинающий вне форума Посмотреть профиль Найти все сообщения от начинающий
  № 2  
начинающий

Регистрация: Jul 2003
Адрес: Винница (или область)
Сообщений: 118
При помощи квадратных скобок НЕЛЬЗЯ обратится к мувикам «через один», например:
Код:
var path2MC = 'element.mc'
trace(this[path2MC])  // undefined
Следовательно, придётся реализовать свою функцию, которая возвратит Вам ссылку на мувик, путь к которому задан строчкой:
Код:
function Movie(path)
{
  var pathArray = path.split('.');
  var mc=this;
  for(var i=0; i<pathArray.length; i++)
    mc = mc[pathArray[i]]
  return mc
}
А как теперь пользоваться этой функцией? Тут есть два нюанса:
1) Если функция назначена самому клипу, то просто сделайте так:
Код:
Movie(path2MC).Yo = function(){	trace('Yo') }
...
Movie(path2MC).Yo();
2) Если функция определена в timeline глубоко вложенного клипа, то, конечно, же когда исполняется скрипт данного кадра, эта функция еще не доступна. Следует дождаться не просто загрузки вложенного клипа, а момента, когда выполнение дойдёт до создания данной функции. В этом случае Вам следует поступить так:
Код:
Movie(path2MC).onEnterFrame = function()
{
	this.Test()
	delete this.onEnterFrame
}
Для чистоты эксперимента следует отметить, что ежели у Вас timeline, в которой Вы ожидаете создания функции во вложенном клипе содержит несколько кадров, то в следующий раз не нужно дожидаться создания функции Test(). Можете внедрить в скрипт некоторые флажки, которые будут показывать Вам, что однажды уже Вы переждали и больше не надо(или просто проверить, определена ли функция Movie(path2MC).Test), ну а с другой стороны, можно и обойтись без ожидания вовсе, но только следует понимать и помнить, что метод Test() будет вызван лишь во время второго(и следующих) проходов по timeline. Ну а если же у Вас лишь один кадр, то ждать необходимо обязательно, иначе Test()не будет вызван даже единожды.
__________________
все там будем...