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

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

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

Регистрация: Mar 2011
Сообщений: 16
По умолчанию Вытащить переменную из функции

Добрый день! Передо мной встала такая проблема. Нужно вытащить переменную из функции, которая выполняется по наступлению события. Вот код функции:
Код AS3:
public function dataReceived(event:DatagramSocketDataEvent):void
{
	for (var i:int = 0; i < event.data.length; i++)
	{
		var newData:int = event.data.readByte();
	}
}
В двух словах, эта функция выполняется по наступлению события DatagramSocketDataEvent, которое происходит, когда на сокет приходят данные по UDP. readByte() считывает поток байтов и конвертирует эти байты в некоторое число.
Подскажите, пожалуйста, что нужно сделать, чтобы переменная newData была видима за пределами этой функции.

Старый 21.04.2011, 16:12
bav вне форума Посмотреть профиль Отправить личное сообщение для bav Найти все сообщения от bav
  № 2  
Ответить с цитированием
bav
 
Аватар для bav

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Объявить ее за пределами функции.
Код AS3:
var someInt:int;
function changeSomeInt():void
{
    // Изменяем объявленную ранее переменную.
    someInt = 8;
}


Последний раз редактировалось bav; 21.04.2011 в 16:14.
Старый 21.04.2011, 17:32
jester88 вне форума Посмотреть профиль Отправить личное сообщение для jester88 Найти все сообщения от jester88
  № 3  
Ответить с цитированием
jester88

Регистрация: Mar 2011
Сообщений: 16
Так получится только если писать функцию в кадре, а потом вызвать ее в этом же кадре... У меня же функция находится внутри класса и вызывается по наступлению события, если прописать таким образом как написали Вы, то trace() выводит null, то есть:
Код AS3:
var newData:int;
public function dataReceived(event:DatagramSocketDataEvent):void
{
	newData = 8;
}
trace (newData)

Старый 21.04.2011, 17:36
carrotoff вне форума Посмотреть профиль Отправить личное сообщение для carrotoff Найти все сообщения от carrotoff
  № 4  
Ответить с цитированием
carrotoff
 
Аватар для carrotoff

Регистрация: May 2010
Сообщений: 543
Цитата:
Так получится только если писать функцию в кадре
Что-то странное вы пишете. Вам только что объяснили как это делается.
Ваша функция внутри класса есть метод этого класса, а переменная объявленная за пределами функции внутри этого класса есть свойство этого класса.

Старый 21.04.2011, 17:38
Bacrilio вне форума Посмотреть профиль Отправить личное сообщение для Bacrilio Найти все сообщения от Bacrilio
  № 5  
Ответить с цитированием
Bacrilio

Регистрация: May 2007
Сообщений: 33
Конечно null вы же её ни разу не исполнили
Код AS3:
var newData:int;
public function dataReceived(event:DatagramSocketDataEvent):void
{
	newData = 8;
}
dataReceived(null)
trace (newData) // выдаст 8

Старый 21.04.2011, 17:41
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 6  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Цитата:
Так получится только если писать функцию в кадре
С чего бы это? Из-за отсутствия модификатора доступа перед var чтоли?
С этим кодом точно все нормально, просто похоже трейс вызывается еще до назначения переменной
Код AS3:
var newData:int;
public function dataReceived(event:DatagramSocketDataEvent):void
{
	newData = 8;
     traceVar();
}
private function traceVar():void {
    trace (newData);
}
Вот этот код точно сработает нормально

Старый 22.04.2011, 16:14
jester88 вне форума Посмотреть профиль Отправить личное сообщение для jester88 Найти все сообщения от jester88
  № 7  
Ответить с цитированием
jester88

Регистрация: Mar 2011
Сообщений: 16
Спасибо огромное))

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

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

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


 


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


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