Показать сообщение отдельно
Старый 01.02.2008, 18:50
crazyone вне форума Посмотреть профиль Отправить личное сообщение для crazyone Найти все сообщения от crazyone
  № 1  
Ответить с цитированием
crazyone
 
Аватар для crazyone

блогер
Регистрация: Nov 2007
Адрес: Киев
Сообщений: 557
Записей в блоге: 2
По умолчанию Классы, наследующие MovieClip

У меня давно вот есть тпроблемма. И решение есть, но оно мне перестало нравиться.
Вобщем - создаю класс, который наследует МувиКлип. Не суть важно, но допустим - нужно просто в любом месте создать мувик, в котором должен отрисоваться прямоугольник с заданными шириной, высотой, цветом:

Код:
class ColorRectangle extends MovieClip{
	private var _w:Number;
	private var _h:Number;
	private var _linecolor:Number;
	private var _color:Number;
	public function ColorRectangle(){
		this._linecolor=0;
		this._color=Math.floor(Math.random()*0xffffff+1);
		this._w=10;
		this._h=10;
	}
	public function init(w,h,color,linecolor){
		this._w=(!isNaN(w))?w:this._w;
		this._h=(!isNaN(h))?h:this._h;
		this._color=(!isNaN(color))?color:this._color;
		this._linecolor=(!isNaN(linecolor))?linecolor:this._linecolor;
	}
	public function Draw(){
		this.clearIt();
		this.lineStyle(1,this._linecolor,100);
		this.beginFill(this._color,100);
		this.moveTo(0,0);
		this.lineTo(this._w,0);
		this.lineTo(this._w,this._h);
		this.lineTo(0,this._h);
		this.lineTo(0,0);
		this.endFill();
	}
	public function clearIt(){
		this.clear();
	}
}
Все просто, но я не знаю, как правильно создать объект этого класса, который будет отображаться на сцене. Я вышел из ситуации, написав классу статический метод "createFromMC":

Код:
	public static function createFromMC(mc:MovieClip) {
		var inst:Object = new ColorRectangle(mc);
		for (var i in inst) {
			mc[i] = inst[i];
		}
		mc.constructor = inst.constructor;
		mc.__proto__ = inst.__proto__;
		return mc;
	}
Теперь достаточно написать
Код:
import ColorRectangle;
var mc=_root.createEmptyMovieClip(name,depth);
var crect=ColorRectangle.createFromMC(mc);
И у нас будет объект, с которым можно работать.

Внимание - вопрос: "Нет ли более нормального способа создать объект класса, который наследуется от мувиклипа, не используя символы библиотеки?"


Последний раз редактировалось crazyone; 01.02.2008 в 18:52.