Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 23.03.2009, 14:50
flibustier вне форума Посмотреть профиль Отправить личное сообщение для flibustier Найти все сообщения от flibustier
  № 1  
Ответить с цитированием
flibustier

Регистрация: Mar 2009
Сообщений: 3
По умолчанию Присваивание переменной в функции

Добрый день, столкнулся с проблемой в AS3. Уже третий день пытаюсь найти решение, или статью на эту тему, но всё безрезультатно.

Вот отрывок из кода
Код AS3:
private function loadMarks (): void {
 
var loadMarks : Array = new Array ();
var Marks : String;
var mrOpts : String;
var loadMarksOpts : Array = new Array ();
 
user.loadVariable(666,
function (xml:XML):void
{
if (xml.name() =="response")
{
  	mrOpts = xml.toString();
   	loadMarksOpts = mrOpts.split(",");
   	//Тут значения есть!
 
  	Alert.show(loadMarksOpts.toString());
  	Alert.show(loadMarksOpts.length.toString());
}
	else {
		Alert.show("Ошибка: " + xml.toString());
	}
}
)
//А тут уже нет
Alert.show(loadMarksOpts.toString());
Alert.show(loadMarksOpts.length.toString());
}
Проблема заключается в том, что внутри функции удаётся присвоить массиву loadMarksOpts значение и прочитать.
Но за пределами функции он снова пуст.
Пожалуйста, подскажите в чём дело, а так же что и где нужно про это прочитать, дабы не вставать снова на эти грабли.


Последний раз редактировалось flibustier; 23.03.2009 в 15:30.
Старый 23.03.2009, 14:56
Hidest вне форума Посмотреть профиль Отправить личное сообщение для Hidest Найти все сообщения от Hidest
  № 2  
Ответить с цитированием
Hidest
 
Аватар для Hidest

Регистрация: Jun 2006
Адрес: Москва
Сообщений: 461
loadMarksOpts - локальная переменная, существующая во время выполнения функции... объявите ее вне тела функции и все будет читаться.

Старый 23.03.2009, 15:03
SashaBorandi вне форума Посмотреть профиль Отправить личное сообщение для SashaBorandi Найти все сообщения от SashaBorandi
  № 3  
Ответить с цитированием
SashaBorandi
[+1.3 20.03.09]

Регистрация: Oct 2007
Сообщений: 35
Глупый вопрос... так ты создай переменую масива за пределами фунцкий.. тоесть private var loadMarks : Array = new Array ();

Старый 23.03.2009, 15:31
flibustier вне форума Посмотреть профиль Отправить личное сообщение для flibustier Найти все сообщения от flibustier
  № 4  
Ответить с цитированием
flibustier

Регистрация: Mar 2009
Сообщений: 3
Моя ошибка - не отметил, что пытаюсь прочитать loadMarksOpts внутри функции, где она и объявлена

С объявлением
Код AS3:
private var loadMarksOpts : Array = new Array ()
значения существуют так же только внутри функции
Код AS3:
function (xml:XML):void
.

Добавлено через 1 час 30 минут
Есть во Flex понятия присваивания по ссылке и присваивания по значению?


Последний раз редактировалось flibustier; 23.03.2009 в 16:26.
Старый 23.03.2009, 17:46
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 5  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
А вы еще больше анонимных функций наделайте, и выбросьте дебагер - а зачем он вам, только место поди занимает! вы им все равно не пользуетесь, а даже если захотите - он вам уже не поможет

ЗЫ. тут кроме области видимости еще проблема в том, что никто из нас не знает когда вы вызываете функцию модифицирующую loadMarksOpts. Но судя по вашей реакции вызываете вы ее поздно
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 23.03.2009 в 17:49.
Старый 23.03.2009, 18:12
flibustier вне форума Посмотреть профиль Отправить личное сообщение для flibustier Найти все сообщения от flibustier
  № 6  
Ответить с цитированием
flibustier

Регистрация: Mar 2009
Сообщений: 3
Видимо, вы знаете ответ на мой вопрос.

Тогда задаем ещё один:

Подскажите, как дебагить приложения вконтакте?
Эта тема как раз от этого вопроса растёт.

Создать новую тему Ответ Часовой пояс GMT +4, время: 03:06.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
lifetime , видимость переменных , переменные , функция
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 03:06.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.