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

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

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

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

Вопрос вроде элементарный, но не могу найти ничего конкретного:
Есть массив который описывается в Scene1.Frame1 как:
Код AS3:
var NameArr:Array=new Array
Далее тут же идет его заполнение.
Сущесвует DynamicText с расположением:
Код AS3:
this.pn1.mcg.te1
В AC pn1 на 2-ом фрейме , то есть когда этот te1 создается прописываю:

Код AS3:
mcg.te1.text = NameArr[1].toString();
Разумеется вылетает ошибка неизвестной переменной NameArr!
Как же мне ей прописать глобальность. _global - вроде не помогает. Подскажите!

Старый 23.11.2009, 12:21
lighto вне форума Посмотреть профиль Отправить личное сообщение для lighto Найти все сообщения от lighto
  № 2  
Ответить с цитированием
lighto
[+1 17.02.10]
 
Аватар для lighto

Регистрация: Aug 2009
Адрес: Казахстан Усть-Каменогорск
Сообщений: 249
public static const pSQL:String
чтот типа того
__________________
Flex+AS3 good)

Старый 23.11.2009, 12:34
niil вне форума Посмотреть профиль Отправить личное сообщение для niil Найти все сообщения от niil
  № 3  
Ответить с цитированием
niil

Регистрация: Oct 2009
Сообщений: 12
Цитата:
Сообщение от lighto Посмотреть сообщение
public static const pSQL:String
чтот типа того
public - тока для пакетов, у меня AC в самой Scene прописан
static - для классов
Вобщем, не проходит - есть еще варианты?

Добавлено через 3 часа 51 минуту
Неужели не кто не в курсе????

Старый 23.11.2009, 16:29
SamFR вне форума Посмотреть профиль Отправить личное сообщение для SamFR Посетить домашнюю страницу SamFR Найти все сообщения от SamFR
  № 4  
Ответить с цитированием
SamFR

Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
Ну, как бы, создать класс и в нём статическую переменную, раз уж речь идёт о глобальных данных.

А вообще, от них по-возможности надо избавляться. Сквозная функциональность – это ещё куда ни шло, без неё часто никак, но глобальные поля – это уже не хорошо

Старый 23.11.2009, 17:02
niil вне форума Посмотреть профиль Отправить личное сообщение для niil Найти все сообщения от niil
  № 5  
Ответить с цитированием
niil

Регистрация: Oct 2009
Сообщений: 12
Пытаюсь реализовать. Создаю класс:
Код AS1/AS2:
package exload{
     public class ArrNameClass {
		public var NameArr:Array = new Array;
     }
}
Подключаю и обрабатываю в Scene1,Frame1:
Код AS3:
import exload.ArrNameClass;
var NameArrCl = new ArrNameClass;
NameArrCl.NameArr[i] = Name;
В Мувике на 2-ом фрейме пытаюсь все это вытащить, но неудачно. Код не обрабатывается:
Код AS3:
import exload.ArrNameClass;
var NameArrCl = ArrNameClass; 
this.mcg.te1.text = NameArrCl.NameArr[1].toString();

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

Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
Код AS3:
package exload{
     public class ArrNameClass {
		public static var nameArr:Array = new Array();
     }
}
Код AS3:
import exload.ArrNameClass;
ArrNameClass.nameArr[i] = Name;
Код AS3:
import exload.ArrNameClass;
this.mcg.te1.text = ArrNameClass.nameArr[1].toString();
Но, как я уже сказал, так лучше не делать

Старый 24.11.2009, 07:17
lighto вне форума Посмотреть профиль Отправить личное сообщение для lighto Найти все сообщения от lighto
  № 7  
Ответить с цитированием
lighto
[+1 17.02.10]
 
Аватар для lighto

Регистрация: Aug 2009
Адрес: Казахстан Усть-Каменогорск
Сообщений: 249
Цитата:
Сообщение от SamFR Посмотреть сообщение
Но, как я уже сказал, так лучше не делать
Почему? и вопрос зачем блокировали такой простой весч как глобальные переменные недавно сам с тем же сталкнулся) запарился пока решил как сделать)
__________________
Flex+AS3 good)

Старый 24.11.2009, 13:59
SamFR вне форума Посмотреть профиль Отправить личное сообщение для SamFR Посетить домашнюю страницу SamFR Найти все сообщения от SamFR
  № 8  
Ответить с цитированием
SamFR

Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
Никто их не блокировал. Просто теперь нельзя обратиться к не определённому явно свойству нединамического объекта. Никто, вам, на самом деле, не мешает сделать

Код AS3:
(root as Object).myVar = 123;
trace('myVar = ' + (root as Object).myVar);
, приведя таким образом любой тип к динамическому типу Object.

Почему лучше не делать как в этом и предыдущем примерах? Код написан в кадрах, что само по себе сильно затрудняет его понимание и дальнейшее сопровождение (не говоря уже о встроенном редакторе =). this.mcg.te1.text – явный нетипизированный доступ к какому-то вложенному текстовому полю – тоже не лучший вариант. Ну и привязка к глобальным переменным (или к root) – вообще вещь нехорошая. Ибо, во-первых, таким образом мы лишаемся гибкости, привязывая написанный нами код к каким-то глобальным данным/функциям, без которых он работать не будет. И во вторых, в таком коде намного сложнее разобраться.

Естественно, тут всё зависит от того, какую цель мы ставим. Если нужно написать учебную/тестовую программку в пару сотен строк, то писать можно, в принципе, как угодно. Лишь бы не привыкнуть Так как с ростом объёма проектов на первое место выходят такие вещи, как продуманная архитектура, модульность, понятность, гикость, расширяемость. Стабильность, кстати, тоже) Вот тут уже о коде в кадрах, повсеместном нетипизированном доступе и привязке к руту речи идти не может.

Старый 24.11.2009, 14:41
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 9  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Сделайте один глобальный класс Синглетон. Если очень нужно (но не рекомендуется) - сделайте его динамическим.
Код AS3:
package  
{
	/**
	 * Класс глобальных переменных
	 * @author k0t0vich
	 */
	public dynamic class GlobalSingleton
	{
 
		public function GlobalSingleton() 
		{
 
		}
 
		private static var _instance: GlobalSingleton = null;
		public static function get instance(): GlobalSingleton{
 
			if(!_instance) {
				_instance = new GlobalSingleton();
			}
			return _instance;
		}
 
 
 
		public function GlobalSingleton() 
		{
			if(_instance)
				throw new Error("Use instance method!");		
		}
	}
 
}
доступ к нему будет:
Код AS3:
GlobalSingleton.instance.someVar
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 24.11.2009 в 17:30.
Старый 24.11.2009, 15:17
Mur4ik вне форума Посмотреть профиль Отправить личное сообщение для Mur4ik Найти все сообщения от Mur4ik
  № 10  
Ответить с цитированием
Mur4ik
ветеран форума

Регистрация: Sep 2008
Сообщений: 717
Записей в блоге: 4
Отправить сообщение для Mur4ik с помощью ICQ
В данном случае если уж сильно хочется, то можно создать мувиклип (наприер mcGlobal), который будет присутствовать во всех кадрах (можно даже невидимым или пустым), и ему уже присваивать новый массив и заполнять этот массив, далее так же к массиву через темповый мувик и обпращаться (mcGlobal.nameArr[1]), но это все "костыли".

Если что то нужно во втором кадре то и создавайте это во втором кадре
__________________
trace("Остановите Землю, я сойду!!!");

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

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

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


 


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


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