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

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

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

Регистрация: Feb 2012
Сообщений: 47
Question Глобальное свойство

Допустим у меня есть класс в котором хранятся ссылки на экземпляры других классов. Чтобы пользоваться этими ссылками надо в каждый класс в котором они хранятся написать
Код AS3:
var ref = new Ref();
.

А вопрос вот в чем можно ли как-то объявить эту переменную(ref) на уровне пакета чтоб не загромождать код этими строками(т.к. классов(небольших правда) будет около 50)????

Старый 29.02.2012, 14:17
Inet_PC вне форума Посмотреть профиль Отправить личное сообщение для Inet_PC Посетить домашнюю страницу Inet_PC Найти все сообщения от Inet_PC
  № 2  
Ответить с цитированием
Inet_PC
 
Аватар для Inet_PC

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
Код AS3:
public static var ref: Ref = new Ref();
И в любом месте можно обратиться, как имя_класс.ref. Если я вас правильно понял.
__________________
http://www.chessmax.ru


Последний раз редактировалось Inet_PC; 29.02.2012 в 14:34.
Старый 29.02.2012, 14:17
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 3  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Можно в классе Ref пометить все ссылки как static и пользоваться ими из любого места:

Код AS3:
Ref.someReference
Добавлено через 28 секунд
А еще есть синглтон.
__________________
Поймай яблоко 2!

Старый 29.02.2012, 14:22
Михаил Свинцов вне форума Посмотреть профиль Отправить личное сообщение для Михаил Свинцов Найти все сообщения от Михаил Свинцов
  № 4  
Ответить с цитированием
Михаил Свинцов

Регистрация: Feb 2012
Сообщений: 47
у меня итак в Ref все экземпляры объявлены статическими(точнее переменные в которых они храняться), но не известно по какой причине я не могу обратиться к этим переменным из других классов(а я обращаюсь - Ref.primer) без приведенной в первом сообщении строки

Добавлено через 1 минуту
Цитата:
А еще есть синглтон
А это что такое??? можно поподробнее

Старый 29.02.2012, 14:29
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 5  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Цитата:
Сообщение от Михаил Свинцов Посмотреть сообщение
у меня итак в Ref все экземпляры объявлены статическими..., но не известно по какой причине я не могу обратиться к этим переменным из других классов
Может ты просто забыл import?

Цитата:
Сообщение от Михаил Свинцов Посмотреть сообщение
А это что такое??? можно поподробнее
Птщь
__________________
Поймай яблоко 2!

Старый 29.02.2012, 14:33
Михаил Свинцов вне форума Посмотреть профиль Отправить личное сообщение для Михаил Свинцов Найти все сообщения от Михаил Свинцов
  № 6  
Ответить с цитированием
Михаил Свинцов

Регистрация: Feb 2012
Сообщений: 47
а нужно делать импорт если все в одном пакете??

Старый 29.02.2012, 14:35
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 7  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Нет. Но тогда остается загадкой, почему не получается обратиться к статическому полю класса указанным ранее образом. Код бы посмотреть. Твоего Ref, твоего обращения.
__________________
Поймай яблоко 2!

Старый 29.02.2012, 14:40
Михаил Свинцов вне форума Посмотреть профиль Отправить личное сообщение для Михаил Свинцов Найти все сообщения от Михаил Свинцов
  № 8  
Ответить с цитированием
Михаил Свинцов

Регистрация: Feb 2012
Сообщений: 47
Вот Основной класс
Код AS3:
package p {
	import flash.display.*;
	import flash.net.*;
	import flash.events.*;
	import flash.text.*;
	import flash.display.Sprite;
 
    public class Application extends MovieClip {
	    public function Application() {
			trace("Конструктор основного класса Application");
			trace(Ref._panel);
 // Часть кода я выпустил т.к. он тут вообще не при чем.
            }
    }
}
Добавлено через 2 минуты
а вот сам Ref
Код AS3:
package p {
	import flash.display.*;
	import flash.display.Sprite;
 
	public class Ref extends Sprite {
		public static var _glav0;
		public static var _glav1;
		public static var _panel;
 
		public function Ref(){
		    _glav0 = new Glava0();
		    _glav1 = new Glava1();
		    _panel = new Panel();
		}
	}
}
Добавлено через 3 минуты
выводит кстати в аутпат вот это


Конструктор основного класса Application
undefined
TypeError: Error #2007: Parameter child must be non-null.
at flash.display:isplayObjectContainer/addChild()
at p::Application$iinit()[C:\Users\Михаил\Documents\biolog8\src\p\Application.as:12]

Добавлено через 6 минут
если я добавляю строку
Код AS3:
var ref = new Ref();
в основной класс тогда вместо undefined выводит [object Panel]


Последний раз редактировалось Михаил Свинцов; 29.02.2012 в 14:47.
Старый 29.02.2012, 14:51
Inet_PC вне форума Посмотреть профиль Отправить личное сообщение для Inet_PC Посетить домашнюю страницу Inet_PC Найти все сообщения от Inet_PC
  № 9  
Ответить с цитированием
Inet_PC
 
Аватар для Inet_PC

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
Естественно Вы же нигде ни разу не создали экземпляр класса, в конструкторе которого и инициализируются статические переменные. Либо где нибудь один раз напишите
Код AS3:
var ref = new Ref();
да хоть в Ref:
Код AS3:
public static var instance:Ref = new Ref();
Либо:
Код AS3:
package p {
	import flash.display.*;
	import flash.display.Sprite;
 
	public class Ref extends Sprite {
		public static var _glav0= new Glava0();
		public static var _glav1 = new Glava1();
		public static var _panel = new Panel();
 
		public function Ref(){
 
		}
	}
}
И не помешает почитать чем отличается статическая переменная от не статической.
__________________
http://www.chessmax.ru


Последний раз редактировалось Inet_PC; 29.02.2012 в 14:53.
Старый 29.02.2012, 14:56
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 10  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Код AS3:
package p {
	public class Ref {
		public static var glav0:Glava0 = new Glava0();
		public static var glav1:Glava1 = new Glava1();
		public static var panel:Panel = new Panel();
 
		public function Ref()
		{
		}
	}
}
Публичные поля ни к чему начинать с подчеркивания.
__________________
Поймай яблоко 2!

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

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

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


 


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


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