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

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

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

Регистрация: Nov 2010
Сообщений: 52
По умолчанию глобальная переменная для всех функций класса

пишу в главной функции
VK.api("sendMessage",{"message":"test"},emp,fail);
все нормально работает, добавляет сообщение

переношу строчку в функцию обработки собития "нажатия ентер" для текстинпут
public function sendmsg(e:ComponentEvent) {
if (imes.htmlText != "") {
VK.api("sendMessage",{"message":"test"},emp,fail);
}
}

получаю ошибку
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at main/sendmsg()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at fl.controls::TextInput/handleKeyDown()


по всей видимости она не видит переменной VK, потому что любые манипуляции с ней приводят к одной и той же ошибке
выполняется это условие
if(VK == null)

как мне объявить VK чтоб использовать ее во всех функциях класса??

public class main extends MovieClip {
public var VK:APIConnection;

разьве этого не достаточно?

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

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Цитата:
разьве этого не достаточно?
Конечно нет.

Где VK = new APIConnection()?

Вы пытаетесь сослаться на объект для которого не создано ни одного экземпляря

Старый 21.11.2010, 21:25
heartless вне форума Посмотреть профиль Отправить личное сообщение для heartless Найти все сообщения от heartless
  № 3  
Ответить с цитированием
heartless

Регистрация: Nov 2010
Сообщений: 52
это в функции main(), конструкторе в класса

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

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
можно посмотреть на весь класс?

Старый 21.11.2010, 21:32
heartless вне форума Посмотреть профиль Отправить личное сообщение для heartless Найти все сообщения от heartless
  № 5  
Ответить с цитированием
heartless

Регистрация: Nov 2010
Сообщений: 52
public class main extends MovieClip {

public var VK:APIConnection;
...
public function main() {
var flashVars: Object = stage.loaderInfo.parameters as Object;
if (!flashVars.api_id) {
...
}
var VK = new APIConnection(flashVars);
VK.api("sendMessage",{"message":"ololo"},emp,fail);
}

public function success(ob:Object){
trace(ob.toString());
}

public function fail(ob:Object){
trace('fail');
}

public function emp(ob:Object){
trace('1');
}

public function sendmsg(e:ComponentEvent) {
if (imes.htmlText != "") {
VK.api("sendMessage",{"message":" dsf "},emp,fail);
}
}

}

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

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Вот это:
Код AS3:
var VK = new APIConnection(flashVars);
Создает внутреннюю переменную для метода main, которая соответственно перестает существовать как только метод выполнен.

Для того, чтобы все работало, слово var нужно убрать. Так как переменная VK уже объявлена вне метода.

Старый 21.11.2010, 21:38
heartless вне форума Посмотреть профиль Отправить личное сообщение для heartless Найти все сообщения от heartless
  № 7  
Ответить с цитированием
heartless

Регистрация: Nov 2010
Сообщений: 52
спасибо, туплю) тема исчерпана

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

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

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


 


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


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