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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.11.2006, 15:04
dacino вне форума Посмотреть профиль Отправить личное сообщение для dacino Найти все сообщения от dacino
  № 1  
Ответить с цитированием
dacino
[+1.3 15.11.06]
[+1 12.01.07]

Регистрация: Nov 2006
Сообщений: 149
Отправить сообщение для dacino с помощью ICQ
Question MovieClip c событием onResize

мне требо наследника MovieClip с событием onResize:
import McFactory;
Код:
class ResizeMC extends MovieClip {
	static var width:Number = null;
	static var height:Number = null;
	public static function create(this_mc:MovieClip, name:String, depth:Number, init_obj:Object):ResizeMC {
		return ResizeMC(McFactory.create(this_mc, name, depth, init_obj, ResizeMC));
	}
	function ResizeMC(){
		AsBroadcaster.initialize(this);//????
		//this.addListener(this); - туфта полная вызывает ошибку
		width = _width;
		height = _height;
	
	}
	
}
генератором и листером события должен быть сам клип, время от времени надо проверять размер мува
Код:
this["resize"] = function():Void{
		if(width != _width or height != _height){
			width = _width;
			height = _height;
			this["broadcastMessage"]("onResize");
		}
}
setInterval(this, "resize", 100);
токо я не въеду, где этот кусок должен находиться чтоб работал такой код
Код:
res_mc = ResizeMC.create(this,"res_mc",0);
res_mc.onResize = function(){
	//бла, бла ...
}
MyFactory прилагается, спасибо Denis Kolyako


Последний раз редактировалось dacino; 05.01.2007 в 17:37.
Старый 29.11.2006, 16:54
dacino вне форума Посмотреть профиль Отправить личное сообщение для dacino Найти все сообщения от dacino
  № 2  
Ответить с цитированием
dacino
[+1.3 15.11.06]
[+1 12.01.07]

Регистрация: Nov 2006
Сообщений: 149
Отправить сообщение для dacino с помощью ICQ
пошевелив отрафированные извилины, мой мозг выдал вот ето:
Код:
function ResizeMC(){
	AsBroadcaster.initialize(this);
	var mc:MovieClip = this;
	mc.addListener(mc);
	width = _width;
	height = _height;
	mc["resize"] = function():Void{//?как от сель увидеть width??
		if(width != _width or height != _height){
			width = _width;
			height = _height;
			mc.broadcastMessage("onResize");
		}
	}
	setInterval(mc["resize"], 500);
}
токо есть западлицо см.^ - ?


Последний раз редактировалось dacino; 29.11.2006 в 17:35.
Старый 29.11.2006, 18:39
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 3  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Использовать Delegate/Proxy.
И добавить функции addListener, removeListener в объявлении переменных.

Старый 29.11.2006, 20:47
dacino вне форума Посмотреть профиль Отправить личное сообщение для dacino Найти все сообщения от dacino
  № 4  
Ответить с цитированием
dacino
[+1.3 15.11.06]
[+1 12.01.07]

Регистрация: Nov 2006
Сообщений: 149
Отправить сообщение для dacino с помощью ICQ
И добавить функции addListener, removeListener в объявлении переменных ??? - в переменных класса чтоль, не совсем понял тебя

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

Регистрация: Sep 2002
Сообщений: 30,787
Ну да, public var addListener:Function; и т.п.

И зачем ссылка mc? Я не буду разбирать детально, вот как это должно было выглядеть (проще показать):
Код:
class ResizeMC extends MovieClip {
	private var width:Number = null;
	private var height:Number = null;
	private var resizeID:Number;
	public static function create(this_mc:MovieClip, name:String, depth:Number, init_obj:Object):ResizeMC {
		return ResizeMC(McFactory.create(this_mc, name, depth, init_obj, ResizeMC));
	}
	private function ResizeMC(){
		super();
		this.width = this._width;
		this.height = this._height;
		this.resizeID = setInterval(this,'resizeHandler',500);
	}
	private function resizeHandler():Void {
		if (this.width!=this._width||this.height!=this._height) {
			this.onResize();
			this.width = this._width;
			this.height = this._height;
		}
	}
	public function onResize():Void {
		// override
	}
}
Usage:

Код:
res_mc = ResizeMC.create(this,'res_mc',0);
res_mc.onResize = function() {
	trace('onResize');
}
И без всяких броадкастеров ненужных. Только в твоем мувике ещё что-то должно быть, что способно изменять размер.

з.Ы. Denis Kolyako — это я

Старый 30.11.2006, 12:51
dacino вне форума Посмотреть профиль Отправить личное сообщение для dacino Найти все сообщения от dacino
  № 6  
Ответить с цитированием
dacino
[+1.3 15.11.06]
[+1 12.01.07]

Регистрация: Nov 2006
Сообщений: 149
Отправить сообщение для dacino с помощью ICQ
дак тогда addListener должна просто запускать таймер, если нет бродкаста...

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

Регистрация: Sep 2002
Сообщений: 30,787
Ты определись, кто у тебя слушатель и кто броадкастер.

Старый 30.11.2006, 14:56
dacino вне форума Посмотреть профиль Отправить личное сообщение для dacino Найти все сообщения от dacino
  № 8  
Ответить с цитированием
dacino
[+1.3 15.11.06]
[+1 12.01.07]

Регистрация: Nov 2006
Сообщений: 149
Отправить сообщение для dacino с помощью ICQ
сам клип у меня слушатель и он же бродкастер...
на этом муве расположены будут или текстовое поле или мув такого же типа, или они оба, я не как не могу сделать, чтоб при изменении размеров одного элемента меняли свой размер и положение - другие, вообще по идее меняются размеры только из-за текстовых полей, но если обрабатывать событие onChanged то надо обходить дерево неизвестной степени вложенности - не сильно хочется, вот для этого сделал мув который реагирует на изменение собственных размеров, токо тут одна проблема, мув, на нем еще один, почему, когда размер меняет верхний, его предок на это событие не реагирует


Последний раз редактировалось dacino; 30.11.2006 в 15:39.
Старый 30.11.2006, 15:46
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 9  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Бррр, какие заморочки. Это именно тот случай, когда нужно записать алгоритм на бумажке и выкинуть ненужное.

Старый 30.11.2006, 21:06
dacino вне форума Посмотреть профиль Отправить личное сообщение для dacino Найти все сообщения от dacino
  № 10  
Ответить с цитированием
dacino
[+1.3 15.11.06]
[+1 12.01.07]

Регистрация: Nov 2006
Сообщений: 149
Отправить сообщение для dacino с помощью ICQ
__etc - записал, и пришел к выводу, что хочеш не хочеш, а ходить по дереву - от сына(вродь так ето правильно завется) к корню всеравно прийдется, и никакой мув с ресайзом не поможет...
да и наверно я совсем деревянный: как в алгоритме, тобой предложенным, добавить еще какого-нибудь листера, главу в Гурском про действия раз пять прочитал, но в толк не возьму как создать свое самостийное событие


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

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

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


 


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


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