![]() |
как вызвать уже имеющийся метод, но хитрым способом?
var funName=["a","b","trace"]
function a() { trace("a") } function b() { trace("b") } function a_b() { _root[funname[0]](); _root[funname[1]](); _root[funname[2]](); } 0 и 1 работает, а вот 2 никак :( запутался я чей-то |
Дык а трейсить то чего? Ты ж флашу сказал _root.trace :)
|
сорри
просто скопировал строки funname[2](); но все-рно не работает хоть как мучаюсь |
все,
просто непонятно чъим методом является трэйс зато плэй и стоп работает. а мне тока это и надо всем пасибо. ЗЫ: кто до трэйса докопается, тому отдельное спасибо =) |
Нужно вызывать так - eval(funName[2])(), тогда должно работатать.
н.р. следующий фрагмент - работает: foo="trace"; eval(foo)(foo); :) |
а по-моему дело в том, что трейс требует наличия параметра. Если сделать просто trace() флеш ругнется на тему того, что ф-ция requires exactly one parameter. Здесь параметров не передается.
Однако если сделать _root[funname[2]]('param') то тоже ничего не происходит. Вывод: глюк реализации. Очередная недоработка объектной модели. хехе.. однако нет. Если сделать function a(par){trace(par)} a потом funname[0]('qwer'), выдаст qwer Темный лес это ООП во флеше. Ну его в баню до выхода шестого :) |
........ Да, кстати......
Чтобы вызвать функции более хитрым способом нужно сделать немного не так - а следующим образом: ......... function a() { ...... }; function b() { ...... }; .... var funNum=[]; funNum[0]=eval("a"); funNum[1]=eval("b"); funNum[2]=eval("trace"); или, например : funNum[3]=eval("Math.sin"); // или другие функции тогда можно вызывать фунции так - funNum[0](); funNum[1](); funNum[2](.......); или н.р. funNum[2](funNum[3](1)); !!!!! и всё должно работать!! :) |
Пасиб =)
foo="trace"; eval(foo)("YO"); работает, вот, блин гадство. ненавижу евалом пользоваться :) |
:)
Если ненавидишь пользоваться eval-ом, то можно обойтись и без него.. Пишешь - foo=trace; foo("YO"); - тоже работает!! :) Удачи! |
может, кто-то мне объяснит, почему евал() всем так не нравится? Ответ "не модно" не катит...
Мне лично нравится, всегда им пользуюсь. |
| Часовой пояс GMT +4, время: 10:28. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.