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

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

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

Регистрация: May 2013
Сообщений: 3
Question Глобальные переменные

Здравствуйте. Я новичок в AS 3. Хотелось бы разобраться как глобально объявить переменную и впоследствие её использовать.

Вычитал здесь http://stackoverflow.com/questions/9...n-actionscript как это можно сделать.

Скачал простейший баннер отсюда http://www.web-article.com.ua/2009/a...anner-ssylkoj/

Создал в папке с fla файлом файл Globe.as следующего содержания

Код AS3:
package
{
    public var MyGlobal:String = "bla";
}
В самом баннере

Код AS3:
mybanlink.addEventListener(MouseEvent.CLICK, mybanlinkClickListener);
 
function mybanlinkClickListener(e:MouseEvent):void {
	trace(MyGlobal);
	var url:String="http://www.web-article.com.ua";
	var urlRequest:URLRequest=new URLRequest(url);
	navigateToURL(urlRequest);
}
На что мне пишут: "Scene 1, слой "actions", кадр 1, строка 7 1120: Обращение несуществующего свойства MyGlobal." Хотя IntelliSence видит эту глобальную переменную и подсказывает когда я её начинаю набирать.

Подскажите, что я делаю не так. Рабочая среда Flash Proffesional CS6

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

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Не надо вам глобальные переменные пока. Особенно.
__________________
Отряд Котовскага

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Создал в папке с fla файлом файл Globe.as следующего содержания
файл должен называться не Globe.as в данном случае, а MyGlobal.as (о чем кстати там на стековерфлоу и написано, внимательнее надо читать)

А вообще, плюсую к посту котяры. Не надо делать глобальных переменных.

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Можно сделать так
Код AS3:
package inpictures.data {
 
	import inpictures.view.GUI;
	import service.AMF3;
 
	public class GlobalVars extends Object {
 
		public function GlobalVars() {
		}
 
		{
			lang = new Language();
 
			account = new Account();
 
			core = new Core();
 
			gui = new GUI();
 
			lib = new Library();
 
			times = new Times();
 
			cache = new Cache();
 
			methods = new APIMethods();
 
			handler = new AMF();
		}
 
		public static var lang:Language;
 
		public static var handler:AMF;
 
		public static var account:Account;
 
		public static var amf:AMF3;
 
		public static var gui:GUI;
 
		public static var core:Core;
 
		public static var lib:Library;
 
		public static var methods:APIMethods;
 
		public static var times:Times;
 
		public static var cache:Cache;
 
	}
 
}
Код AS3:
package inpictures.data {
 
	public class Times extends Object {
 
		public function Times() {
 
		}
 
		public var server:Number = 0;
 
		public var client:Number = 0;
 
		public var sync:Number = 0;
 
		public function get now():Number {
			return Math.round(new Date().getTime()/1000)+sync;
		}
 
	}
 
}
__________________
return this...

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
AlexCooper, в чем прикол ставить статический инициализатор, если можно сразу инициализировать переменные? Выпендреж?
Только лишнюю путаницу создает.

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Цитата:
Сообщение от caseyryan Посмотреть сообщение
AlexCooper, в чем прикол ставить статический инициализатор, если можно сразу инициализировать переменные? Выпендреж?
Только лишнюю путаницу создает.
Возможно следует соблюдать порядок создания. Кто знает, там может Language использует данные, которые подгружаются откуда-то и т.п.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Кто знает, там может Language использует данные, которые подгружаются откуда-то и т.п.
Это что-то меняет?
Хотя да.. могу представить себе такую ситуацию. Тогда тем более лучше этого не делать )) к еще большей путанице приведет.

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Цитата:
Тогда тем более лучше этого не делать ))
Это уже другой вопрос :о)
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Вы имеете ввиду этот блок?
Код AS3:
{
			lang = new Language();
 
			account = new Account();
 
			core = new Core();
 
			gui = new GUI();
 
			lib = new Library();
 
			times = new Times();
 
			cache = new Cache();
 
			methods = new APIMethods();
 
			handler = new AMF();
		}
в действительности никакой путаници не произойдет. Класс Core управляет всем.
Код AS3:
public class Core {
 
		public var ADD_BLACKLIST:String = 'add_blacklist';
		public var COMPLAINT_USER:String = 'complaint_user';
		public var COMPLAINT_USER_SEND:String = 'complaint_user_send';
		public var CLOSE:String = 'close';
		public var SEND_GIFT:String = 'send_gift';
		public var INIT_REG:String = 'init_reg';
 
		.....................
 
		public function Core() {
			...........
		}
 
		public function logic($cmd:String='', $data:Object=null):void {
			trace('CMD: '+$cmd);
			if ($data) {
				trace('logic');
				for ( var i in $data) {
					trace(i+" >> "+$data[i]);
				}
			}
 
			switch ($cmd) {
 
				.....................
 
				case ADD_BLACKLIST: {
					GlobalVars.amf.toamf(GlobalVars.methods.addBlacklist, GlobalVars.handler.blacklistHandler, GlobalVars.account.amfSing($data));
				} break;
 
				case COMPLAINT_USER: {
					GlobalVars.gui.attachToCentr(new Complaint($data),true);
				} break;
 
				case COMPLAINT_USER_SEND: {
					$data.cmd = 'send';
					GlobalVars.amf.toamf(GlobalVars.methods.sendToSupport, GlobalVars.handler.supportHandler, GlobalVars.account.amfSing($data));
				} break;
 
				.....
			}
 
			if ($data && $data.remove) GlobalVars.gui.remove($data.remove);
		}
 
	}
соответственно в любом месте мне достаточно вызвать
Код AS3:
GlobalVars.core.logic(GlobalVars.core.COMPLAINT_USER, {'uid':$uid,'remove':this} );
и откроется окно с жалобой на пользователя. Не пойму в чем моя ошибка по Вашему мнению
__________________
return this...

Старый 21.05.2013, 22:31
zipimp вне форума Посмотреть профиль Отправить личное сообщение для zipimp Найти все сообщения от zipimp
  № 10  
Ответить с цитированием
zipimp

Регистрация: May 2013
Сообщений: 3
Цитата:
Сообщение от caseyryan Посмотреть сообщение
файл должен называться не Globe.as в данном случае, а MyGlobal.as (о чем кстати там на стековерфлоу и написано, внимательнее надо читать)

А вообще, плюсую к посту котяры. Не надо делать глобальных переменных.
Как я понял файл называть можно как угодно, пакет то анонимный.
Я знаю что это некрасиво плохо и прочее, но вопрос у меня стоит именно в этом, чтобы иметь глобальную переменную, которая была бы видна и из обработчиков, везде вобщем. Через анонимный пакет так же можно сделать, чтобы даже нигде не нужно было импортов делать.

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

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

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


 


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


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