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

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

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

Регистрация: Jul 2002
Адрес: Riga
Сообщений: 93
The bomb! Отклик мувиков нужного типа на к-либо действие.

Я создаю несколько однотипных мувиков, в которых прописана какая-нибудь функция (например, изменяющая текст в текстфилде внутри этого мувика). Есть глобальная переменная, допустим, _root.v. Нужно, чтобы при изменении значения этой переменной на какое-нибудь другое, во всех мувиках сробатывали те прописанные функции.

Или можно создать класс, которому присвоить эти мувики, и вызывать где-нибудь метод этого класса (например, с новым значением _root.v в качестве параметра), который вызовет прописанную внутри него фунцию для каждого экземпляра (моих несчастных мувиков)? Как такое сотворить?

Практическое применение может быть следующим:
— сайт выполнен в какой-то цветовой гамме, т. е. элементы сайта одного и того же цвета (кнопки, текст, курсор и т. д.), и ондим нажатием мыши поменять цветю гамму сайта, т. е. одновременно цвета всех нужных элементов;
— если сайт на нескольких языках, поменять текст во всех нужных мувиках на соответствующий язык.
__________________
Дружелюбное существо

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

Регистрация: Jun 2005
Адрес: MOSCOW
Сообщений: 6,852
Отправить сообщение для KUZEN с помощью ICQ Отправить сообщение для KUZEN с помощью Yahoo Отправить сообщение для KUZEN с помощью Skype™
Цитата:
Сообщение от ChickenKid
Есть глобальная переменная, допустим, _root.v.
Рассмешил
__________________
BestMasterиZация

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

Регистрация: Jul 2002
Адрес: Riga
Сообщений: 93
Простите-простите, в рамках моего, скажем так, проекта, такая переменная — глобальная. Ну пусть _global.v
__________________
Дружелюбное существо

Старый 14.12.2005, 22:12
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 4  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
Начал писать когда то, чуть дописал.
Код:
import mx.events.EventDispatcher;
class ru.flasher.helping.managers.MovieClipChanger {
	//event stuff
	private static var initDispatcher = EventDispatcher.initialize(MovieClipChanger.prototype);
	public var addEventListener:Function;
	public var removeEventListener:Function;
	private var dispatchEvent:Function;
	//private properties
	private var __movies_array:Array;
	private var __method:Function = null;
	//Constructor
	public function MovieClipChanger () {
		__movies_array = new Array ();
	}
	//public methods
	public function addMovie(mc:MovieClip):Number {
		__movies_array.push(mc);
		dispatchEvent({type:"add",mc:mc});
		return __movies_array.length;
	}
	public function removeMovie(mc):Object {
		var result:Object = null;
		if(typeof(mc) == "number") {
			result = __movies_array[mc];
			__movies_array.splice(mc,1);
		}else if(typeof(mc) == "movieclip") {
			for(var i:Number=0;i<__movies_array.length;i++) {
				if(__movies_array[i] == mc) {
					result = __movies_array[i]; 
					__movies_array.splice(i,1);
					break;
				}
			}
		}
		dispatchEvent({type:"remove",mc:result});
		return result;
	}
	public function getMovie(index:Number):MovieClip {
		if(index<=__movies_array.length) {
			return __movies_array[index];
		}else{
			return null;
		}
	}
	public function registerMethod(method:Function):Void {
		__method = method;
		dispatchEvent({type:"register" , method:__method});
	}
	public function execute(args:Array):Void {
		dispatchEvent({type:"execute",method:__method};
		for(var i:Number = 0;i<__movies_array.length;i++) {
			__method.apply(__movies_array[i],args);
		}
	}		
	//read only
	public function get length ():Number {
		return __movies_array.length;
	}
	public function get movies ():Array {
		return __movies_array.slice()
	}
}
В Фла файле на сцену кладем мувики (назевем их b1_mc, b2_mc и так далее)
и в первом кадре пишем
Код:
import ru.flasher.helping.managers.MovieClipChanger
var manager:MovieClipChanger = new MovieClipChanger();
manager.addMovie(b1_mc);
manager.addMovie(b2_mc);
manager.addMovie(b3_mc);
manager.removeMovie(b2_mc);
function setText(name:String):Void {
	this._txt.text = this._name;
}
manager.registerMethod(setText);
manager.execute();
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^


Последний раз редактировалось Nirth; 16.12.2005 в 19:14.
Старый 05.10.2006, 14:38
ChickenKid вне форума Посмотреть профиль Отправить личное сообщение для ChickenKid Найти все сообщения от ChickenKid
  № 5  
Ответить с цитированием
ChickenKid
 
Аватар для ChickenKid

Регистрация: Jul 2002
Адрес: Riga
Сообщений: 93
Nirth, скажи, а зачем ты в этом классе использовал EventDispatcher и его метод dispatchEvent? По сути они бесполезны, по крайней мере после того, как я их убрал, класс сохранил свою работоспособность.

Просто я хочу сделать так, чтобы в одном экземпляре MovieClipChanger можно было регистрировать несколько методов.
__________________
Дружелюбное существо

Старый 05.10.2006, 15:32
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от ChickenKid
По сути они бесполезны
Ещё как полезны, для подписки на события.
Хотя, похоже на аналог mx.data.binding.Binding…

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

Регистрация: Jul 2002
Адрес: Riga
Сообщений: 93
Спасибо огромное!
__________________
Дружелюбное существо

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

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

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


 


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


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