Показать сообщение отдельно
Старый 06.07.2007, 13:57
Torero вне форума Посмотреть профиль Отправить личное сообщение для Torero Найти все сообщения от Torero
  № 8  
Ответить с цитированием
Torero
 
Аватар для Torero

Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
2iNils:Для описания компонентов - решил выучить язык, создавая простенькие компоненты. Когда основные моменты прояснятся, буду учиться межклассовому взаимодействию - как передавать данные, как вызывать, как наследовать и т.п. + довольно удобно с точки зрения дальнейшего использования...

Переписал код. Проблема возникает в тот момент, когда для "замаскированного" клипа устанавливаю "cacheAsBitmap=true".

Код:
	private function rect(mc:MovieClip,rx:Number,ry:Number,rcol:Number):Void { //Рисуем прямоугольник
		mc.beginFill(rcol,60);
		mc.lineTo(rx,0);
		mc.lineTo(rx,ry);
		mc.lineTo(0,ry);
		mc.endFill();
	}
	
	private function drawmask(){
			var maskee_mc:MovieClip;//"замаскированный" клип
			var mask_mc:MovieClip;//маска
			var holder_mc:MovieClip;//холдер маски
			var top_mc:MovieClip;//нечто, лежащее поверх маски(текст, поля ввода и т.п.)
		maskee_mc=this.createEmptyMovieClip("maskee", this.getNextHighestDepth());
		rect(maskee_mc,400,400,0xFF0000);
		holder_mc=this.createEmptyMovieClip("holder", this.getNextHighestDepth());
		mask_mc=holder_mc.createEmptyMovieClip("mask", holder_mc.getNextHighestDepth());
		rect(mask_mc,200,100,0);
		top_mc=holder_mc.createEmptyMovieClip("top", holder_mc.getNextHighestDepth());
		rect(top_mc,20,20,0x0000FF);
		maskee_mc.cacheAsBitmap=true;//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
		maskee_mc.setMask(mask_mc);
		mask_mc.onPress=function(){_parent.startDrag();}
		mask_mc.onRelease=function(){_parent.stopDrag();}
	}
---------------------------------

Смог решить проблему, но способ извращенный - при "cacheAsBitmap=true" flash не прорисовывает маску при смещении родительского клипа, но прорисовывает, когда мы обращаемся непосредственно к ней. Наверное, в данном случае, все-таки лучше самому создать аналог setMask, пусть даже это встанет в ресурсы.. Если, вдруг, кому понадобится, выкладываю рабочий вариант:
Код:
	mask_mc.onPress=function(){
		eval(_parent).startDrag(); 		
		rInterval=setInterval(Delegate.create(this ,function(){this._visible=true; }),1);
	}
	mask_mc.onRelease=function(){this.stopDrag(); clearInterval(rInterval);}


Последний раз редактировалось Torero; 07.07.2007 в 04:09.