PDA

Просмотр полной версии : как копировать объект TextFormat?


Mnilionic
07.05.2008, 17:20
...через обычное "=" присваивается ссылка
Можно ли сделать копию без цикла по всем свойствам?

Vertax
07.05.2008, 17:37
TextFormat.prototype.copy = function ()
{
var nOBJ = new TextFormat();
for (var i in this) nOBJ[i] = this[i];
return nOBJ;
}

TF = new TextFormat();
TF.font = "Arial";
TF2 = TF.copy();
TF2.color = 0xFF0000;

TXT1.setTextFormat(TF);
TXT2.setTextFormat(TF2);

Mnilionic
07.05.2008, 17:42
спасибо для TextFormat сработает

это расширения для Обжектов в целом.
а если свойством объекта является тоже объект? ;)

+

вижу :)

Mnilionic
07.05.2008, 20:27
Если указать тип объекта появляется ошибка, что мол нет такого метода.
При такой работе вообще нельзя указывать тип?

TF:TextFormat = new TextFormat();
TF.font = "Arial";
TF2 = TF.copy(); // !

Obi
08.05.2008, 11:28
function getCopy(t:TextFormat):TextFormat {
var newTF:TextFormat = new TextFormat();
for (var i in t) newTF[i] = t[i];
return newTF;
}
var TF:TextFormat = new TextFormat();
TF.font = "Arial";
var TF2:TextFormat = getCopy(TF);
trace(TF2.font);

Mnilionic
08.05.2008, 15:02
речь именно о prototype.

Vertax
08.05.2008, 15:48
В том то и дело: укажешь тип - забудь о прототипах. Если хоца (нужно) указывать, то как предложил тов Obi.

chingachgoog
08.05.2008, 16:05
Компилятор всегда можно надуть, если жить нельзя без типизации :)

var nf:TextFormat=new TextFormat()

TextFormat.prototype.s=function(){
trace("!")
}

nf['s'] ()

Mnilionic
08.05.2008, 21:08
Vertax, понятно.

chingachgoog, жить можно, просто не сразу воткнул почему выпадала ошибка :)
с массивом забавно.