![]() |
Получение переменной из функции
Добрый день уважаемые форумчане. Имеется следующий код:
Код AS3:
Мне нужно любым из способов извлечь значение функции (а именно получить значение infoObject.duration, он же totalTimer). Заранее прошу прощения, если данный вопрос уже поднимался или очевиден. Но я перерыл большую часть faq по flash и перепробовал разные методы подстановки аргументов в последнюю строку, ничего не получается. Помогите пожалуйста, или, возможно, есть какой-то другой способ получения метаданных, а именно общую продолжительность видео? Видео вставляется через NetStream. |
Код AS3:
|
Заменил тип функции на Number - не помогло. Еще пробовал объявлять переменную до функции, вот так
Код AS3:
|
Вы пытаетесь отобразить данные до того как они будут получены.
Код AS3:
|
Цитата:
|
mayakwd, в том то и дело, что нужно вывести переменную (totalTimer) за пределы этой функции, чтобы потом использовать в другой функции.
Возможно есть способ объявить переменную, затем внести в нее значение (в функции), а затем вывести (в другой функции). Добавлено через 6 минут Wolsh, Код AS3:
Убирая тип параметра из самой функции получаем то же самое. |
1. Как вам ранее сказали, при вызове функции нельзя добавлять определение тип ее параметра (:Object)
2. Вы передаете несуществующий объект, сначала вам надо создать его, а потом использовать Код AS3:
|
Выводится
Код AS3:
Код AS3:
Код AS3:
|
Путешествия в будущее еще не придумали.
Вы реально думаете, что можно вызвать функцию и узнать, каким будет некое значение через полчаса? Вы еще не получили infoObject. Его НЕТ. Как Вы можете узнать infoObject.duration? |
Итак, вы передали объект в функцию, но ничего с ним не сделали и не обновили его значение. Поэтому выводится именно то значение, которым он был инициализирован, в ваших случаях 0 и 1. Это верно. Если вы хотите чтобы там было другое значение, вам стоит его обновить внутри функции, например так
Код AS3:
|
Какие путешествия в будущее? Я просто хочу узнать длительность ролика в секундах. И всего лишь использовать это значение в простом математическом выражении.
|
Какого ролика? Какой формат, как вы его загружаете?
|
dimensb, загружаю так:
Код AS3:
|
Да, вы действительно путешествуете в будущее ;)
Дело в том что ns вызовет обработчик onMetaData объекта customClient только когда получит метаданные. Когда вы пытаетесь вызвать его самостоятельно, таких данных у вас нет, поэтому вы и получали сообщение об ошибке. Ниже приведен рабочий пример (нарезан из разных примеров из интернет) Код AS3:
|
Спасибо за код, но я все равно не могу использовать metadata.duration. Понимаете, мне нужно использовать это число в другой функции.
Добавлено через 2 минуты кстати, еще в пакете добавил Код AS3:
Код AS3:
|
Вы можете:
1. Вызвать функцию непосредственно в обработчике onMetaData Код AS3:
Код AS3:
|
А как понять когда метаданные пришли и обработчик уже выполнился? Пробовал:
Код AS3:
Однако первый способ, с вызовом функции в обработчике работает, но очень, очень хотелось бы второй, с выводом в переменную. |
Это асинхронный вызов и с этим ничего не поделать. Ваша процедура должна реагировать на изменение этого значения. То есть общая логика, используя словесное описание, должна быть такой:
Основная часть 1. Создать компоненты для загрузки flv, подключить обработчики. 2. Запросить flv. Все, дальше надо ждать. Обработчик 1. Получить длительность 2. Выполнить необходимый код Если вам по какой-то причине не подходит вызов внутри onMetaData, то вы можете послать свое сообщение, например так (впрочем это масло масляное) Код AS3:
|
Большое спасибо всем, кто отписался в этом топике за помощь, отдельная благодарность dimensb.
|
| Часовой пояс GMT +4, время: 00:53. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.