|
|
|||||
Регистрация: Mar 2013
Сообщений: 10
|
Получение переменной из функции
Добрый день уважаемые форумчане. Имеется следующий код:
var customClient:Object = new Object(); customClient.onMetaData = metaDataHandler; function metaDataHandler(infoObject:Object) { var totalTimer:Number = infoObject.duration; trace("Общее время "+totalTimer); return(totalTimer); } trace(metaDataHandler(infoObject:Object)); Мне нужно любым из способов извлечь значение функции (а именно получить значение infoObject.duration, он же totalTimer). Заранее прошу прощения, если данный вопрос уже поднимался или очевиден. Но я перерыл большую часть faq по flash и перепробовал разные методы подстановки аргументов в последнюю строку, ничего не получается. Помогите пожалуйста, или, возможно, есть какой-то другой способ получения метаданных, а именно общую продолжительность видео? Видео вставляется через NetStream. |
|
|||||
Lorem ipsum
|
__________________
Поймай яблоко 2! |
|
|||||
Регистрация: Mar 2013
Сообщений: 10
|
Заменил тип функции на Number - не помогло. Еще пробовал объявлять переменную до функции, вот так
Выводится NaN. |
|
|||||
Вы пытаетесь отобразить данные до того как они будут получены.
вы получаете данные только в момент когда вызывается metaDataHandler, и только после этого можете отобразить эти данные. |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Mar 2013
Сообщений: 10
|
mayakwd, в том то и дело, что нужно вывести переменную (totalTimer) за пределы этой функции, чтобы потом использовать в другой функции.
Возможно есть способ объявить переменную, затем внести в нее значение (в функции), а затем вывести (в другой функции). Добавлено через 6 минут Wolsh, Обращение не существующего свойства infoObject. Убирая тип параметра из самой функции получаем то же самое. |
|
|||||
Регистрация: Jun 2012
Сообщений: 16
|
1. Как вам ранее сказали, при вызове функции нельзя добавлять определение тип ее параметра (:Object)
2. Вы передаете несуществующий объект, сначала вам надо создать его, а потом использовать var customClient:Object = new Object(); customClient.onMetaData = metaDataHandler; var infoObject:Object = {duration: 0}; function metaDataHandler(infoObject:Object) { var totalTimer:Number = infoObject.duration; trace("Общее время "+totalTimer); return(totalTimer); } trace(metaDataHandler(infoObject)); |
|
|||||
Регистрация: Mar 2013
Сообщений: 10
|
Выводится
Изменив 0 на любое другое число при создании объекта infoObject, получаю это число. Т.е. дает |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Путешествия в будущее еще не придумали.
Вы реально думаете, что можно вызвать функцию и узнать, каким будет некое значение через полчаса? Вы еще не получили infoObject. Его НЕТ. Как Вы можете узнать infoObject.duration?
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Jun 2012
Сообщений: 16
|
Итак, вы передали объект в функцию, но ничего с ним не сделали и не обновили его значение. Поэтому выводится именно то значение, которым он был инициализирован, в ваших случаях 0 и 1. Это верно. Если вы хотите чтобы там было другое значение, вам стоит его обновить внутри функции, например так
или заменить число 10 на любой другое значение или источник. |
Часовой пояс GMT +4, время: 02:15. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|