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

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

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

Регистрация: May 2006
Сообщений: 21
Question Доступ к локальной переменной "извне"

Салют! В AS3 начинающий. Поэтому стлокнулся с такой вот трудностью. Есть код:
Код AS3:
var tfCount:int;
function xmlLoadComplete(event:Event):void
		{
			var newsPaper:XML = new XML(event.target.data);
			var newsCount:int =  newsPaper.@count;
		}
Глобальная перменная tfCount - это кол-во элементов массива, которое зависит от кол-ва новостей в XML файле. Локальная переменная newsCount - это и есть кол-во новостей. Мне нужно глоб. переменной tfCount присвоить значение newsCount.

Как это сделать? Только без технарских замашек, а так, чтобы понятно было. Ну или предложите альтернативную реализацию. Просто не хочется весь остальной код писать в функции xmlLoadComplete. Спасибо.

Возможно уже и была такая, тема. Даже я ее нашел вроде-бы, но там так написано все, что находясь на моем уровне знаний AS3 сложно понять.

Старый 15.10.2009, 01:29
Lecosson вне форума Посмотреть профиль Отправить личное сообщение для Lecosson Найти все сообщения от Lecosson
  № 2  
Ответить с цитированием
Lecosson

Регистрация: Apr 2008
Сообщений: 80
Записей в блоге: 3
Код AS3:
var tfCount:int;
function xmlLoadComplete(event:Event):void
		{
			var newsPaper:XML = new XML(event.target.data);
			var newsCount:int =  newsPaper.@count;
			tfCount=parseInt(newsCount);
		}

Старый 15.10.2009, 10:05
Ynks вне форума Посмотреть профиль Отправить личное сообщение для Ynks Найти все сообщения от Ynks
  № 3  
Ответить с цитированием
Ynks
 
Аватар для Ynks

Регистрация: May 2006
Сообщений: 21
Насколько я знаю parseInt преобразовывает String в Int. Но это не делает доступной мою переменную newsCount вне функции.

Задача у меня такая, чтобы обработать весь XML, вытянуть с него все и позаливать в переменные. Все. А потом уже у других функциях удобно с ними рабтать, а не в xmlLoadComplete все делать. Кото, что подскажет?


Последний раз редактировалось Ynks; 15.10.2009 в 10:22.
Старый 15.10.2009, 10:15
kackbip вне форума Посмотреть профиль Отправить личное сообщение для kackbip Найти все сообщения от kackbip
  № 4  
Ответить с цитированием
kackbip
 
Аватар для kackbip

Регистрация: Sep 2007
Адрес: Tomsk
Сообщений: 943
Отправить сообщение для kackbip с помощью ICQ Отправить сообщение для kackbip с помощью Skype™
Нука внимательнее приглядитесь к варианту предложенному Lecosson. он не обращается к newsCount вне функции и притом выполняет поставленную вами задачу - "вытянуть в сего все и позаливать в переменные".

Старый 15.10.2009, 10:27
Ynks вне форума Посмотреть профиль Отправить личное сообщение для Ynks Найти все сообщения от Ynks
  № 5  
Ответить с цитированием
Ynks
 
Аватар для Ynks

Регистрация: May 2006
Сообщений: 21
Хм, либо я чего-то не пойму либо вы. newsCount - это уже int. Зачем его снова в int преобразовывать? Это раз, а два — это то, что при таком коде:
Код AS3:
var tfCount:int;
function xmlLoadComplete(event:Event):void
		{
			var newsPaper:XML = new XML(event.target.data);
			var newsCount:int =  newsPaper.@count; //newsCount = 8;
			tfCount=newsCount; //либо parseInt(newsCount) — этот код не работает, только что попробовал;
trace(tfCount);//Выведет 8 
		}
trace(tfCount);//Выведет 0
Истинное значение tfCount не будет доступно вне функции. А нужно, чтобы вне функции tfCount тоже был равен 8. Вот.


Последний раз редактировалось Ynks; 15.10.2009 в 10:32.
Старый 15.10.2009, 10:33
alecsisk вне форума Посмотреть профиль Отправить личное сообщение для alecsisk Найти все сообщения от alecsisk
  № 6  
Ответить с цитированием
alecsisk

Регистрация: Feb 2008
Адрес: N.Novgorod
Сообщений: 80
Отправить сообщение для alecsisk с помощью ICQ
tfCount'у присваивается 8 только после выполнения xmlLoadComplete. После tfCount=newsCount вызывайте нужную вам функцию в которой будет дальнейшее выполнение программы.

Старый 15.10.2009, 10:35
incoob вне форума Посмотреть профиль Отправить личное сообщение для incoob Найти все сообщения от incoob
  № 7  
Ответить с цитированием
incoob

Регистрация: Mar 2008
Сообщений: 215
напишите просто
Код AS3:
tfCount=newsCount
скорее всего Lecosson просто не обратил внимания на тип
Код AS3:
newsCount
и подумал, что это строка

PS локальные переменные не видны вне области метода

Старый 15.10.2009, 10:41
Ynks вне форума Посмотреть профиль Отправить личное сообщение для Ynks Найти все сообщения от Ynks
  № 8  
Ответить с цитированием
Ynks
 
Аватар для Ynks

Регистрация: May 2006
Сообщений: 21
Цитата:
После tfCount=newsCount вызывайте нужную вам функцию в которой будет дальнейшее выполнение программы.
Но при вызове этой функции tfCount будет равен все-равно 0, а не 8.

Если пишу просто tfCount=newsCount — то см. мой код выше. Результат есть, но не тот, что нужно.

Цитата:
PS локальные переменные не видны вне области метода
Вот в этом-то и дело... А как мне тогда быть?
Не хочу остальной код новостоного модуля своего (я его делаю) писать в функции xmlLoadComplete...

Старый 15.10.2009, 10:53
alecsisk вне форума Посмотреть профиль Отправить личное сообщение для alecsisk Найти все сообщения от alecsisk
  № 9  
Ответить с цитированием
alecsisk

Регистрация: Feb 2008
Адрес: N.Novgorod
Сообщений: 80
Отправить сообщение для alecsisk с помощью ICQ
А вы проверяли ?
Код AS3:
var tfCount:int;
xmlLoadComplete(null);
 
function xmlLoadComplete(event:Event):void {
	tfCount=8;
	someMethod();
}
 
 
function someMethod():void {
	trace(tfCount); // 8
}
Цитата:
Если пишу просто tfCount=newsCount — то см. мой код выше. Результат есть, но не тот, что нужно.
Код AS3:
var tfCount:int;
function xmlLoadComplete(event:Event):void
		{
			var newsPaper:XML = new XML(event.target.data);
			var newsCount:int =  newsPaper.@count; //newsCount = 8;
			tfCount=newsCount; //либо parseInt(newsCount) — этот код не работает, только что попробовал;
trace(tfCount);//Выведет 8 
		}
trace(tfCount);//Выведет 0
естественно. Вы думаете что сначала компилятор выполнит xmlLoadComplete, а затем trace(tfCount). Но сначала выполняется trace(tfCount) //0, а затем приходит событие xmlLoadComplete, где уже tfCount == 8.


Последний раз редактировалось alecsisk; 15.10.2009 в 11:18.
Старый 15.10.2009, 11:00
incoob вне форума Посмотреть профиль Отправить личное сообщение для incoob Найти все сообщения от incoob
  № 10  
Ответить с цитированием
incoob

Регистрация: Mar 2008
Сообщений: 215
Цитата:
Сообщение от Ynks Посмотреть сообщение
Не хочу остальной код новостоного модуля своего (я его делаю) писать в функции xmlLoadComplete...
вы свой код вызывайте из xmlLoadComplete

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

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

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


 


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


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