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

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

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

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Код AS3:
package {
 
	import flash.events.Event;
	import flash.events.EventDispatcher;
	import flash.events.IEventDispatcher;
 
	/**
	 * ...
	 * @author gloomybrain
	 */
 
	[Event(name = "change", type = "flash.events.Event")]
	public class DataHolder {
 
		private static const _dispatcher:EventDispatcher = new EventDispatcher();
 
		private static var _data:String = ""; // или XML с данными, или еще что-то
 
		public static function get data():String {
			return DataHolder._data;
		}
 
		public static function set data(value:String):void {
			DataHolder._data = value;
			DataHolder.dispatchEvent(new Event(Event.CHANGE));
		}
 
 
		// Реализация интерфейса IEventDispatcher
		// чтобы можно было диспатчить события и добавлять слушателей
		// (делаем вид. что события дипатчатся классом, а не объектом)
 
		public static function dispatchEvent(event:Event):Boolean {
			return DataHolder._dispatcher.dispatchEvent(event);
		}
 
		public static function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void {
			DataHolder._dispatcher.addEventListener(type, listener, useCapture, priority, useWeakReference);
		}
 
		public static function hasEventListener(type:String):Boolean {
			return DataHolder._dispatcher.hasEventListener(type);
		}
 
		public static function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void {
			DataHolder._dispatcher.removeEventListener(type, listener, useCapture);
		}
 
		public static function willTrigger(type:String):Boolean {
			return DataHolder._dispatcher.willTrigger(type);
		}
 
	}
 
}
Код AS3:
package {
 
	import flash.display.Sprite;
	import flash.events.Event;
 
	/**
	 * ...
	 * @author gloomybrain
	 */
 
	public class TextContainer extends Sprite {
 
		public function TextContainer() {
 
			super();
 
			DataHolder.addEventListener(Event.CHANGE, updateContent);
 
			this.updateContent();
 
		}
 
		protected function updateContent(event:Event = null):void {
 
			/*
			 * В теле данного метода получаем ссылки на все нужные текстовые поля
			 * и заменяем их содержимое на данные из DataHolder
			 * 
			 * Данный класс является базовым, все визуальные классы с текстовыми полями
			 * должны наследоваться от него
			 * 
			 * И
			 * 
			 * оверрайдить метод updateContent нужным образом
			 * (т.к. текстовые поля везде разные)
			 * 
			 */
 
		}
 
	}
 
}
__________________
...вселенская грусть


Последний раз редактировалось gloomyBrain; 20.10.2010 в 15:32.
Старый 20.10.2010, 16:27
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 12  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
Глум, в таком подходе тогда лучше создать базовый класс для текстовых полей, которые сами себе будут иметь uid чтобы обновится. Ну и какой-нибудь TextFields.register для текстов из IDE.

Старый 20.10.2010, 16:34
nOobCrafter вне форума Посмотреть профиль Отправить личное сообщение для nOobCrafter Найти все сообщения от nOobCrafter
  № 13  
Ответить с цитированием
nOobCrafter

Регистрация: Nov 2008
Сообщений: 894
Записей в блоге: 1
уф, а не проще ли статик массив в который классы будут кидать свои текстфилды с неким ИД, далее при изменении языка бежим по массиву, смотрим ИД и меняем содержимое, имхо просто и надежно и не совсем оопно, зато никакого гемора с событиями и кучей обработчиков.

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

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
@Psycho Tiger
Чем лучше-то? Приведенный подход предполагает создание некоторой панельки с несколькими текстовыми полями, расширяющей TextContainer. При любом изменении данных текст в панельке обновится в соответствии с updateContent. Никаких id и register (функционал register возложен на подписку в базовом классе) тут не нужно.
По-моему писать длииииинную функцию с обходом всех полей неверно, ибо при изменении одной панельки все изменения (сори за тавтологию) останутся именно в ее классе, а не где-то еще
__________________
...вселенская грусть

Старый 20.10.2010, 16:47
arkadattx вне форума Посмотреть профиль Отправить личное сообщение для arkadattx Найти все сообщения от arkadattx
  № 15  
Ответить с цитированием
arkadattx

Регистрация: Apr 2010
Сообщений: 219
nOobCrafter, проще не значит лучше

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

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
сейчас стоит подобная задача.
думаю сделать так:

наверху создаем класс, который будет регистрить , убирать текстифилды, подлежайщие апдейту, апдейтить их.

далее в рантайме динамически создаваемые объекты просто диспатчат с баблингом события добавления/удаления текстфилда с ссылкой на этот самый текстфилд.

наверху (тот же мэйндок) ловит события и в хэндлере добавляются / убираются и апдейтяца.

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

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

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
nOobCrafter согласен, так и делать буду, тока потому что остальных ораторов не понял либо, просто показались слишком длинные методы.

Код AS3:
package flash.utils {
	import flash.text.TextField;
	public class IGlobal {
		public static var _arr:Array = [];
		public function IGlobal() { }
		public static function SET(t:TextField):void {
			_arr.push(t);
		}
		public static function GET():Array {
			return _arr;
		}
	}
}
Как то так...
Но чей то странность какая то вышла, дубликаты какие то пошли.... В данном случае писал на фрейме клипа библиотечного подключение класса, ибо там генерятся 4 поля, так у меня аж 10 показало))))

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

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Советовали-советовали, а он ещё и в кадрах пишет оказывается =)

Старый 20.10.2010, 17:16
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 19  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Bgg здрасте! А как я по твоему загружу некоторые текстфилды которые вручную были созданы а ?

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

Регистрация: Nov 2008
Сообщений: 894
Записей в блоге: 1
вообщем то у cleptoman расширенный и отлаженный вариант того что я предложил. Класс-манагер который следит за полями, но так или иначе все ссылки на нужные поля у него есть. +100500
in4core любой мувик это класс, до его св-в и детей можно программно достучаться, а далее ивенты \ статик методы

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

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

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


 


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


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