![]() |
|
||||||||||
|
|||||
|
[+] за варез
|
В переменной obj путь и имя мувика
В переменной method имя функции внутри мувика Как вызвать obj.method() ? |
|
|||||
|
Регистрация: Jul 2003
Адрес: Винница (или область)
Сообщений: 118
|
При помощи квадратных скобок НЕЛЬЗЯ обратится к мувикам «через один», например:
Следовательно, придётся реализовать свою функцию, которая возвратит Вам ссылку на мувик, путь к которому задан строчкой: 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) Если функция назначена самому клипу, то просто сделайте так: 2) Если функция определена в timeline глубоко вложенного клипа, то, конечно, же когда исполняется скрипт данного кадра, эта функция еще не доступна. Следует дождаться не просто загрузки вложенного клипа, а момента, когда выполнение дойдёт до создания данной функции. В этом случае Вам следует поступить так: Для чистоты эксперимента следует отметить, что ежели у Вас timeline, в которой Вы ожидаете создания функции во вложенном клипе содержит несколько кадров, то в следующий раз не нужно дожидаться создания функции Test(). Можете внедрить в скрипт некоторые флажки, которые будут показывать Вам, что однажды уже Вы переждали и больше не надо(или просто проверить, определена ли функция Movie(path2MC).Test), ну а с другой стороны, можно и обойтись без ожидания вовсе, но только следует понимать и помнить, что метод Test() будет вызван лишь во время второго(и следующих) проходов по timeline. Ну а если же у Вас лишь один кадр, то ждать необходимо обязательно, иначе Test()не будет вызван даже единожды.
__________________
все там будем... |
|
|||||
|
Если я правильно понял:
a.b.x = function(){ trace("!"); } path1 = "a.b"; func = "x"; path01 = path1.split(".")[0]; path02 = path1.split(".")[1]; _root[path01][path02][func](); В примере path1 = obj, func = method. Дед Анвирыч это имел ввиду?
__________________
За двумя зайцами погонишься - от егеря по морде получишь |
|
|||||
|
[+] за варез
|
Цитата:
|
|
|||||
|
4AM Games
|
имеем переменные типа -
statSTR,statDEX,statCON,statWIS,statINT,statCHA имеем массив stats (таполнение- STR,DEX,CON и тд) . есть функция. собственно как я понял eval тут не работает. но и пример с массивом тоже на прокатит. Последний раз редактировалось Nirth; 09.08.2004 в 19:57. |
|
|||||
|
2 Nirth : а чего не работает ?
function getStat(stat) {
for (i=0; i<stats.length; i++) {
if (stat == stats[i]) {
return eval("stat"+stats[i]);
//return this["stat"+stats[i]]//тож работает
break;
}
//var path = eval("stat"+stats[i]);
var path = this["stat"+stats[i]];
trace(typeof (path));
}
}
statSTR=0;statDEX=1;statCON=2;
stats = ["STR","DEX","CON"]
trace(getStat("DEX"));
|
|
|||||
|
странно
зы: если ты про свою функцию, то она вообще ничего не возвращает (т.е. undefined), а trace определяет тип несуществующего объекта (посмотри чему равна i) - опять undefined: все как написал Последний раз редактировалось silin; 10.08.2004 в 17:34. |
|
|||||
|
4AM Games
|
private var stat:String;
private var stat2return:Number;
private var modifier:String;
public var mod:Number;
private var stats:Array =["STR", "DEX", "CON", "WIS", "INT", "CHA"];
private var i:Number;
//getStat function
function getStat(stat) {
for (i=0; i<stats.length; i++) {
if (stat == stats[i]) {
trace(this["stat"+stats[i]]);
var path = eval("stat"+stats[i]);
trace(typeof (path));
}
}
}
|
![]() |
Часовой пояс GMT +4, время: 13:27. |
|
|
« Предыдущая тема | Следующая тема » |
|
|