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

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

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

Регистрация: Aug 2012
Сообщений: 297
По умолчанию При обращение к статической переменной определённого класса создаётся его экземпляр

Здравствуйте.

Положение:
Есть один swf файл (A) к которому присоединяется несколько библиотек. Одна библиотека сделана во Flash, она имеет класс, который находится в той же папке, где находится класс (swf файла A, пусть будет называться классом A). В этом классе идёт обращение к статической переменной класса A.

Проблема:
Когда я компилирую эту библиотеку, то Flash извергает несметное количество ошибок, которые связаны напрямую с классом A. В этом классе есть обращение и создание нескольких MovieClip объектов. Я получаю ошибки из рода: "не найден тот MovieClip объект и этот". Получается, что Flash странным образом создаёт экземпляр класса A, хотя я всего лишь обращаюсь к статической переменной класса A.

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

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Покажите ваши классы

Старый 29.08.2013, 23:59
Dip52 вне форума Посмотреть профиль Отправить личное сообщение для Dip52 Найти все сообщения от Dip52
  № 3  
Ответить с цитированием
Dip52

Регистрация: Aug 2012
Сообщений: 297
Цитата:
Сообщение от illuzor Посмотреть сообщение
Покажите ваши классы
Класс A:
Код AS3:
package fox
{
	import flash.display.MovieClip;
 
 
	public class FoxWay extends MovieClip
	{
		public static var r:MovieClip;
		public function FoxWay()
		{
			//Добавление мусора в приложение:
			var rubbish:Rubbish = new Rubbish();
			r = rubbish;
			this.containerForRubbish.addChild(rubbish);
			//Добавление неба в приложение:
			var sky:Sky = new Sky();
			sky.generalPlay();
			containerForSky.addChild(sky);
			//Добавление уровня с гопниками в приложение:
			var levelForGopniks:LevelForGopniks = new LevelForGopniks(stage);
			this.containerForGopniks.addChild(levelForGopniks);
			//Добавление заводов в приложение:
			var plants:Plants = new Plants();
			containerForPlants.addChild(plants);
			//Добавление облаков в приложение:
			var clouds:Clouds = new Clouds();
			containtsForClouds.addChild(clouds);
		}
	}
}
Класс библиотеки:
Код AS3:
package fox
{
	import flash.display.MovieClip;
	import flash.events.KeyboardEvent;
	import flash.ui.Keyboard;
 
	public class LevelForGopniks extends MovieClip
	{
		private var speed:int = 10;
 
		public function LevelForGopniks(s):void
		{
			s.addEventListener(KeyboardEvent.KEY_DOWN,kd);
		}
		private function kd(event:KeyboardEvent):void
		{
			var kc = event.keyCode;
			if(kc == Keyboard.LEFT)
			{
				x += speed;
			}
			if(kc == Keyboard.RIGHT)
			{
				x -= speed;
			}
			FoxWay.r.x -= x;
		}
	}
}

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

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Вы обращаетесь к переменной FoxWay.r, при том, что не создан её экземпляр. Отсюда и ошибка.

Старый 30.08.2013, 01:06
Dip52 вне форума Посмотреть профиль Отправить личное сообщение для Dip52 Найти все сообщения от Dip52
  № 5  
Ответить с цитированием
Dip52

Регистрация: Aug 2012
Сообщений: 297
Цитата:
Сообщение от illuzor Посмотреть сообщение
Вы обращаетесь к переменной FoxWay.r, при том, что не создан её экземпляр. Отсюда и ошибка.
Я обращаюсь к статической переменной класса A.

Старый 30.08.2013, 01:23
tsarapkabel вне форума Посмотреть профиль Отправить личное сообщение для tsarapkabel Найти все сообщения от tsarapkabel
  № 6  
Ответить с цитированием
tsarapkabel
 
Аватар для tsarapkabel

Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
Код AS3:
public static var r:MovieClip;
Мувиклип не инициализирован (== null).
__________________
Нормально делай — нормально будет!

Старый 30.08.2013, 01:45
Dip52 вне форума Посмотреть профиль Отправить личное сообщение для Dip52 Найти все сообщения от Dip52
  № 7  
Ответить с цитированием
Dip52

Регистрация: Aug 2012
Сообщений: 297
Цитата:
Сообщение от tsarapkabel Посмотреть сообщение
Код AS3:
public static var r:MovieClip;
Мувиклип не инициализирован (== null).
Инициализировал. Тоже самое.

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Инициализировал.
Каким образом?

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

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Код AS3:
public static var r:MovieClip = new FoxWay();
И всех делов-то.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 30.08.2013, 12:13
Dip52 вне форума Посмотреть профиль Отправить личное сообщение для Dip52 Найти все сообщения от Dip52
  № 10  
Ответить с цитированием
Dip52

Регистрация: Aug 2012
Сообщений: 297
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Каким образом?
Код AS3:
public static var r:MovieClip = new MovieClip();
Добавлено через 2 минуты
Цитата:
Сообщение от dimarik Посмотреть сообщение
Код AS3:
public static var r:MovieClip = new FoxWay();
И всех делов-то.
Всё тоже самое, никаких изменений:

Код:
FoxWay.as, строка 13	1180: Вызов предположительно неопределенного метода Rubbish.
И так по порядку с каждой строкой кода.

Хотя я совсем не понимаю зачем мне инициализировать класс, инициализация, которого мне не нужна.

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

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

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


 


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


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