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

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

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

Регистрация: Mar 2009
Сообщений: 107
Question Глобальные переменные или константы

Доброго времени суток.

Как во флешьке создать глобальную переменную (в базовом классе), чтобы она была доступна во всех классах которые были вызваны в этом базовом классе и во всех под классах и так далее?

Вот наглядный пример

Код AS3:
package main{
	import flash.display.*;
 
	public class MyClass1 extends Sprite {
		private var myClass:MyClass2;
		// Тут мы задем глобальную переменную например myVar
 
		public function MyClass1():void {
			myClass = new MyClass2();
			addChild(myClass);
		}
	}
}
 
package main{
	import flash.display.*;
 
	public class MyClass2 extends Sprite {
		private var myClass:MyClass3;
 
		public function MyClass2():void {
			myClass = new MyClass3();
			addChild(myClass);
			// Тут должна быть доступна перемнная myVar
		}
	}
}
 
 
package main{
	import flash.display.*;
 
	public class MyClass3 extends Sprite {
 
		public function MyClass3():void {
			// И тут тоже должна быть доступна перемнная myVar
			// и т.д., то есть я хоть сто классов вызову (один в другом),
			// переменная будет все равно видна во всех.
			// Как это можно реализовать?
		}
	}
}
то есть я хоть сто классов вызову (один в другом), переменная будет все равно видна во всех. Как это можно реализовать?

Старый 03.05.2009, 21:43
VVall вне форума Посмотреть профиль Отправить личное сообщение для VVall Найти все сообщения от VVall
  № 2  
Ответить с цитированием
VVall

Регистрация: Feb 2009
Сообщений: 1,195
А почему не сделать отдельный класс для таких переменных?

Код AS3:
package
{
public final class globalVars
{
   public static var myVar:Number;
   public static const const1:Number=12345;
}
}
Обращаться можно будет отовсюду, globalVars.myVar, globalVars.const1 и т.п.

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

Регистрация: Mar 2009
Сообщений: 107
Цитата:
Сообщение от VVall Посмотреть сообщение
А почему не сделать отдельный класс для таких переменных?

Код AS3:
package
{
public final class globalVars
{
   public static var myVar:Number;
   public static const const1:Number=12345;
}
}
Обращаться можно будет отовсюду, globalVars.myVar, globalVars.const1 и т.п.
Проблема в том что данные которые должна хранить эта переменная могут меняться и заранее неизвесны

Если бы конечно можно было задать в одном месте а обратиться в другом не используя сложные пути типа super, то мне такой метод подошел бы.

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

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
public static var myVar:Number;

это переменная, не путайте с константой. это как раз про ваше "эта переменная могут меняться и заранее неизвесны"
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

Старый 03.05.2009, 22:29
vvvvvvf вне форума Посмотреть профиль Отправить личное сообщение для vvvvvvf Найти все сообщения от vvvvvvf
  № 5  
Ответить с цитированием
vvvvvvf

Регистрация: Mar 2009
Сообщений: 107
Цитата:
Сообщение от cleptoman Посмотреть сообщение
public static var myVar:Number;

это переменная, не путайте с константой. это как раз про ваше "эта переменная могут меняться и заранее неизвесны"
проблема в том что в соседнем классе она не будет хронить тоже значение что было присвоено её в предыдущем =(((

Старый 03.05.2009, 22:42
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 6  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
vvvvvvf, прочитайте про ключевое слово "static". Ваши теории о том, что будет, а что нет, тут совсем не уместны. Вы не пытались придти к умозаключению, о том, что рас 2 человека Вам посоветовали одно и тоже, это что-то да занчит?

Старый 03.05.2009, 22:58
vvvvvvf вне форума Посмотреть профиль Отправить личное сообщение для vvvvvvf Найти все сообщения от vvvvvvf
  № 7  
Ответить с цитированием
vvvvvvf

Регистрация: Mar 2009
Сообщений: 107
Код AS3:
package main{
	import flash.display.*;
	import flash.events.*;
	import main.*;
 
	public class globalVars {
		public static var myVar:Number;
	}
}
 
 
package {
	import flash.display.*;
	import flash.events.*;
	import main.*;
	public class Main extends Sprite {
		private var glVars:globalVars;
 
		public function Main():void {
			glVars = new globalVars();
			glVars.myVar = 1;
		}
	}
}
Выводит ошибку
1119: Access of possibly undefined property myVar through a reference with static type main:globalVars.

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

Регистрация: Feb 2009
Сообщений: 1,195
Не надо никаких glVars:globalVars и new. Я выше вам сказал, как надо будет обращаться.

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

Регистрация: Mar 2009
Сообщений: 107
Вот теперь понял.
Огромное спасибо все заработало!

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

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

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


 


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


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