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

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

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

Регистрация: Dec 2008
Сообщений: 67
По умолчанию Глобальные переменные

Здравствуйте, подскажите пожалуйста как создать переменную что бы её видели все пакеты, все классы.
Жизненно важно иметь возможность всем классам в проекте иметь доступ к одним и тем же данным и при необходимости изменять их.

Заранее благодарю за разъяснения.

Добавлено через 25 минут
Конечно, удобнее использовать Объект для этих целей и в нем хранить нужную мне информацию. Но объект надо инициализировать (var obj = new Object) и сделать это надо за пределами всех пакетов, всех классов. А там не где, я проверял, ошибки.....

Старый 28.12.2008, 02:37
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 2  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Используйте статические переменные классов.
Надеюсь не нужно читать лекцию о том, что глобальные переменные - это плохо?
__________________
тонкий тролль, осеянный благодатью

Старый 28.12.2008, 02:47
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 3  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Глобальные переменные плохо, а вот константы - нет.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 28.12.2008, 12:09
petav вне форума Посмотреть профиль Отправить личное сообщение для petav Найти все сообщения от petav
  № 4  
Ответить с цитированием
petav

Регистрация: Dec 2008
Сообщений: 67
Я делаю так
главный класс:
Код AS3:
package {
	import flash.display.MovieClip;	
 
	public class Desktop extends MovieClip	{
 
		public function Desktop ()	{
 
		}
        }
}
 
//AS3 позволяет определять несколько классов в одном файле
class Test {
 
	public var test = '34';	
}

Во втором пакете:
Код AS3:
package apetrov	{
	import flash.display.MovieClip;
 
	public class VideoBox extends MovieClip	{
 
		public function VideoBox()	{		
			trace(Test.test); //1120: Access of undefined property Test.
		}


Последний раз редактировалось petav; 28.12.2008 в 12:39.
Старый 28.12.2008, 14:36
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 5  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
позволять то позволяет, но этот ваш Test становится локальным вспомогательным для Desktop.. в остальных местах его не видно

Старый 28.12.2008, 14:43
DreamRunner вне форума Посмотреть профиль Отправить личное сообщение для DreamRunner Посетить домашнюю страницу DreamRunner Найти все сообщения от DreamRunner
  № 6  
Ответить с цитированием
DreamRunner

Регистрация: Dec 2008
Сообщений: 14
тут глянь и на уровень выше, возможно чтото интересное наёдёшь (если не видел ещё) http://shaelf.ru/book/flash_tips/tips84.html

надо статик
Код AS1/AS2:
public static var test = '34';

Старый 29.12.2008, 00:24
petav вне форума Посмотреть профиль Отправить личное сообщение для petav Найти все сообщения от petav
  № 7  
Ответить с цитированием
petav

Регистрация: Dec 2008
Сообщений: 67
Выход найден , опять же на xpoint.ru подсказали:
Код AS3:
package apetrov {
 
	public class Singleton	{
		private static var __instance:Singleton;
		private static var __allowInstantiation:Boolean = false;
 
		public static function get instance():Singleton	{
			if(!__instance)	{
				// Разрешаем создание экземпляра класса.
				__allowInstantiation = true;
				// Создаем экземпляр.
				__instance = new Singleton();
				// Запрещаем создание экземпляров.
				__allowInstantiation = false;
			}
			return __instance;
  		}
 
		/*
		* Конструктор.
		*/
 
		public function Singleton()	{
			if(!__allowInstantiation)	{
				throw new Error("Вы не можете создавать экземпляры класса при помощи конструктора. Для доступа к экземпляру используйте Singleton.instance.");
			}
		}
 
 
		/*
		* Все остальное
		*/
 
		private var s:String = '';
 
		public function test (name)	{
			s=s+name;
			return s;  
		}
	}
}
Подробно тут

Этот код через Singleton.instance.* всегда возвращает ссылку на один и тот же объект. Оказывается это очень известная техника в ООП.

Надеюсь этот пост кому нибудь еще поможет .


Последний раз редактировалось petav; 29.12.2008 в 00:27.
Старый 29.12.2008, 10:28
gnus вне форума Посмотреть профиль Отправить личное сообщение для gnus Найти все сообщения от gnus
  № 8  
Ответить с цитированием
gnus

Регистрация: Feb 2008
Сообщений: 100
я делаю так:

файл Globals.as

Код AS3:
package
{
 
	public class Globals
	{
		public static var someVar:int;
 
                public static function someFunc():void
		{
                }
        }
}
someVar и someFunc() видны из любой точки по иненам Globals.someVar и соответственно Globals.someFunc()

Старый 29.12.2008, 23:07
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 9  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Кстати говоря...
Есть у меня великий класс BigClass. И настолько он велик, что детей своих плодит ChildClass... но так уж случилось, что постоянно меняется переменная, которая обрабатывается каждый из ChildClass`ов, но переменная эта храниться в BigClass. Как лучше её передавать? По ссылке циклом по запросе ребенка? Через parent? Как правильно?

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

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

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


 


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


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