Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Присваивание переменной в функции (http://www.flasher.ru/forum/showthread.php?t=123027)

flibustier 23.03.2009 14:50

Присваивание переменной в функции
 
Добрый день, столкнулся с проблемой в 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 значение и прочитать.
Но за пределами функции он снова пуст.
Пожалуйста, подскажите в чём дело, а так же что и где нужно про это прочитать, дабы не вставать снова на эти грабли.

Hidest 23.03.2009 14:56

loadMarksOpts - локальная переменная, существующая во время выполнения функции... объявите ее вне тела функции и все будет читаться.

SashaBorandi 23.03.2009 15:03

Глупый вопрос... так ты создай переменую масива за пределами фунцкий.. тоесть private var loadMarks : Array = new Array ();

flibustier 23.03.2009 15:31

Моя ошибка - не отметил, что пытаюсь прочитать loadMarksOpts внутри функции, где она и объявлена

С объявлением
Код AS3:

private var loadMarksOpts : Array = new Array ()

значения существуют так же только внутри функции
Код AS3:

function (xml:XML):void

.

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

wvxvw 23.03.2009 17:46

А вы еще больше анонимных функций наделайте, и выбросьте дебагер - а зачем он вам, только место поди занимает! вы им все равно не пользуетесь, а даже если захотите - он вам уже не поможет ;)

ЗЫ. тут кроме области видимости еще проблема в том, что никто из нас не знает когда вы вызываете функцию модифицирующую loadMarksOpts. Но судя по вашей реакции вызываете вы ее поздно :)

flibustier 23.03.2009 18:12

Видимо, вы знаете ответ на мой вопрос.

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

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


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

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