Показать сообщение отдельно
Старый 28.12.2005, 13:55
Antares вне форума Посмотреть профиль Найти все сообщения от Antares
  № 5  
Ответить с цитированием
Antares
Banned
 
Аватар для Antares

Регистрация: Dec 2003
Сообщений: 3,925
Цитата:
Сообщение от ir73
Вот вы все время не рекоммендуете наследовать мувиклип. А как тогда обходитша с классами, которые мы присваимаем мувикам через Линкаге? Они же должны быть все, как я понимаю , extends MovieClip
Это опять же, если мыслить только как "объект сам должен иметь методы"... А что если объект имеет ссылку? Мы создаем экземпляр класса, конструктору (либо методу) передаем ссылку на его визуальную компоненту и все.

В крайнем случае никто не отменял createClassObject.

Базовый класс выглядит так:
Код:
import visual.scene.IVisualObject;
import mx.transitions.Tween;
import mx.transitions.easing.Elastic;

/**
 * @date        26.07.2003 
 * @author	Michael Klishin	
 * @version     1.0
 **/
class visual.scene.VisualObject implements IVisualObject
{
	private var __viewport:MovieClip;
	
	function VisualObject( mc:MovieClip )
	{
		__viewport = mc;
	}
	
	
	/**
	 * 
	 * @usage   
	 * @param   x 
	 * @param   y 
	 * @return  
	 */
	public function move( x:Number, y:Number ): Void
	{
		__viewport._x = x;
		__viewport._y = y;
	}


	/**
	 * 
	 * @usage   
	 * @param   state 
	 * @return  
	 */
	public function changeState( state:String ): Void
	{
		if(state) __viewport.gotoAndStop(state);
	}


	/**
	 * 
	 * @usage   
	 * @param   x 
	 * @param   y 
	 * @return  
	 */
	public function slideTo( x:Number, y:Number, relative:Boolean, time:Number, callback:Function ): Void
	{
		if(relative)
		{
			var xTo:Number = __viewport._x + x;
			var yTo:Number = __viewport._y + y;			
		} else
		{
			var xTo:Number = x;
			var yTo:Number = y;
		}
		
		var xTween:Tween = new Tween(__viewport, '_x', Elastic.easeOut, __viewport._x, xTo, time, true );
		var yTween:Tween = new Tween(__viewport, '_y', Elastic.easeOut, __viewport._y, yTo, time, true );
		
		if(callback) xTween.onMotionStopped = callback;
		
		xTween.start();
		yTween.start();
	}

	/**
	 * 
	 * @usage   
	 * @return  
	 */
	public function show(  ):Void 
	{
		__viewport._visible = true;
	}

	/**
	 * 
	 * @usage   
	 * @return  
	 */
	public function hide(  ):Void 
	{
		__viewport._visible = false;
	}

	/**
	 * 
	 * @usage   
	 * @return  
	 */
	public function getVisualObject(): MovieClip
	{
		return __viewport;
	}

}
И все. Очень логично и удобно, мухи отделены от котлет.

P.S. Занимаясь Flash не знать Мука -- то же самое, что быть лингвистом и не знать Достоевского