Просмотр полной версии : Есть ли во флеше полноценный eval?
Никак не могу найти функцию, которая могла бы реализовать подобную конструкцию:
var str = "_root.attachMovie('a', 'b', _root.getNextHighestDepth())";
eval(str);
Ознакомьтесь с правилами, и отредактируйте свой пост
какая скорость реагирования..
бешенная правда=)?
насколько я знаю нет, покрайней мере у меня не получалось запускать так функции, в JS можно, но там язык интерпретируемый.
как обходной маневр можно так
var params:Array=new Array("a","b");
var method:Function = _root.attachMovie;
method.apply(_root,params.concat(new Array(_root.getNextHighestDepth()));
Ну.. это для конкретного случая.
я задумал реализовать такую конструкцию:
поскольку в проекте, который я сейчас делаю, есть огромное количество взаимноинтегрированных программно-анимированных объектов, я решил не париться больше с выведением из объектов классов хвостов от intervalID, а сделать некий внешний конвеер.
Конвеер - программный таймлайн, в каждый кадр которого каждый объект каждого класса может встроить указатель на функцию (то есть параметр для eval), которую он хочет выполнить в определенный момент.
Тогда setInterval в проекте будет только один - этот.
ну вобщем то всегда ведь можно передавать вместо 1 параметра(строки) два параметра, метод, и массив параметров? если это критично, то не знаю.
где то был подобный топик, только боюсь найти его будет сложно
это да, но ведь var method:Function = _root.attachMovie; не всегда _root.attachMovie. Может это myclass_obj.myfunc();..
как тогда?
ну а кто запрещает в каждом кадре писать
method = mySound.attachSound
params = new Array(some stuff here);
//слейдующий кадр
method = someClassInstance.someMethod;
params = new Array(some stuff here);
//потом
method = _root.attachMovie;
params = new Array(some stuff here);
Хотя я бы переделал всю архетиктуру как нибудь без кадров вообще, но если работа с дизайнером наверное проблематично
Да. всё понял
Кадров действительно нет
Но есть программный таймлайн (setInerval).
Thx. попробую )
Чтот я не могу разобратьсяvar param = 'aaa';
var method:Function = trace;
method.apply(param);
где ошибка?
Это имеет отношение к теме топика?:)
самое прямое..
Если угодно, могу конкретизировать..
смысл всего топика - как получить указатель на функцию и выполнить её с любыми параметрами.
ЗЫ. разобрался.trace.apply(null, ['aaaa']);
первый параметр apply - объект, чья функция вызывается. Если объекта нет, то null
А что ты хочешь сделать?
upd: Скоростные. И спросить не успеваешь...
Хочешь класс дам посмотреть? я написал уже :-)
Тема такая. Мне нужно сделать асинхронную анимацию. У моего начальника большая любовь к анимации с ускорением и инерцией :-) Поэтому, чтобы не морочиться каждый раз я решил сделать класс, который двигает указанный объект по контрольным точкам. В любые моменты времени между одной и другой контрольной точками может вызываться любой метод (начало анимации другого объекта или любой другой обработчик). Вот, вроде написал.
trace глобальная функция, зачем ты ее таким извращенным способом вызываешь?
Хочешь класс дам посмотреть? я написал уже :-)
Спасибо, не надо. Я ещё жить хочу.
trace глобальная функция, зачем ты ее таким извращенным способом вызываешь?да чисто для теста. самая простая функция, на чем ж еще тестить.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.