У меня давно вот есть тпроблемма. И решение есть, но оно мне перестало нравиться.
Вобщем - создаю класс, который наследует МувиКлип. Не суть важно, но допустим - нужно просто в любом месте создать мувик, в котором должен отрисоваться прямоугольник с заданными шириной, высотой, цветом:
Код:
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);
И у нас будет объект, с которым можно работать.
Внимание - вопрос: "Нет ли более нормального способа создать объект класса, который наследуется от мувиклипа, не используя символы библиотеки?"