ایجاد کپی از فلید متنی

niny-goloo

Member
سلام
من قصد دارم از یه فیلد متنی یه Duplicate درست کنم. ولی تقریبا چیزی توی انجمن پیدا نکردم.
فرض کنید ما یه فلید متنی با فونت و رنگ خاص داریم. میخوایم یه کپی از این فیلد متنی ایجاد کنیم. من فکر میکردم با این روش میشه انجام داد

PHP:
var text1:TLFTextField= new TLFTextField();
var format:TextFormat = new TextFormat("tahoma",20,0xff6600);
text1.text = "بسم الله الرحمن الرحیم";
text1.autoSize = TextFieldAutoSize.RIGHT
text1.defaultTextFormat = format;
addChild(text1);
text1.x= 150;
text1.y=50;

var text2:TLFTextField = new TLFTextField();
text2 = text1;
addChild(text2);
text2.y = 100
 

++Hadi++

Active Member
راه نه ندان خوبش اینه ...
ابتدا یه متغیر از نوع TLFTextField درست می کنی و یه شی جدید از نوع TLF با روش new درست می کنی و بعد تمام خصوصیات تکست فیلد مد نظرتو به خصوصیات همنام این تکست فیلد جدید می دی و بعد addChild می کنی. البته راه خیلی جالبی نیست. من سعی کردم به سبک Object با دستور for in تمام خصوصیات شی اول رو تو شی دوم جدید new شده بریزم ولی چیزی نشون نداد...
PHP:
for(var i:* in txt1)
{
   txt2[i]=txt[i];
}
ولی اگه پیدا کردم انشاءال... بهتون می نویسم...
 

niny-goloo

Member
هادی جان متوجه نشدم. شاید منظورت همون کاری بود که انجام دادم. ولی وقتی که من یه شی جدید از tlf درست میکنم و اونو مساوی tlf قبلی میزارد و ادد میکنیم یه سری مشکلات درست میشه. مثلا وقتی متن شی دوم رو عوض میکنم شی اول هم عوض میشه.

جاوید جان یعنی دقیقا باید چه اتفاقی بیافته؟ ببین جاوید جان احتمالا خودت میدونی که فیلد متنی من ممکنه بیشتر از چند فرمت داشته باشه
واسه همین جمع کردن همه اونا تو یه کلاس و برگردوندش سنگین میکنه کارمو؟ نمیکنه؟
 

++Hadi++

Active Member
نه این راه درست نیست. در واقع متغیر دوم مثل یه اشاره گر برا متغیر اول می شه البته در مورد اشیای مختلف غیر از اشیای اصلی. باید یکی رو new کنین و خصوصیات شی اول رو تو اون بریزین . یعنی مثلا:
PHP:
var txt2:TLFTextField=new TLFTextField();
addChild(txt2);
txt2.text=txt.text;
,...
 

niny-goloo

Member
نه این راه درست نیست. در واقع متغیر دوم مثل یه اشاره گر برا متغیر اول می شه البته در مورد اشیای مختلف غیر از اشیای اصلی. باید یکی رو new کنین و خصوصیات شی اول رو تو اون بریزین . یعنی مثلا:
PHP:
var txt2:tlftextfield=new tlftextfield();
addchild(txt2);
txt2.text=txt.text;
,...

کاکو جان، جاوید هم فکر میکنم همینو گفته بود. ولی گفتم که ممکنه فیلد متنی من چند نوع فرمت داشته باشه.
یعنی هر کلمه ای ممکنه یه فونت و رنگ خاصی داشته باشند. اینو میشه کاریش کرد؟
 

JavidFlasher

کاربر فعال
کد:
جاوید جان یعنی دقیقا باید چه اتفاقی بیافته؟ ببین جاوید جان احتمالا خودت میدونی که فیلد متنی من ممکنه بیشتر از چند فرمت داشته باشه
واسه همین جمع کردن همه اونا تو یه کلاس و برگردوندش سنگین میکنه کارمو؟ نمیکنه؟

من از یکی از دوستام شندیم که تو شیو گرایی چنین چیزی که شما میخواین
یعنی همون کپی معنی نداره
و تنها راهی ک ممکنه همینه
یعنی برگردوندن tlftextfieldبا پروپرتی هایی ک میخوای
 

++Hadi++

Active Member
ببین تا جایی که من می دونم باید یه شی جدید بسازین منتها property ها و method هاشو جایگزین کنین.
 

JavidFlasher

کاربر فعال
مثل این که منظور منو نمیفهمین
PHP:
function createTLF(){
var myTLF:TLFTextField=new TLFTextField()
var myTLF.text="goodBye"
//and Other property . . .
return myTLF
}

var tlf_1:TLFTextField=createTLF()
var tlf_2:TLFTextField=createTLF()
addChild(tlf_1)
addChild(tlf_2)
 

niny-goloo

Member
هادی جان من مشکلی با جایگزین کردن پروپرتی ها دارم
ببینید مثلا متن من این شکلیه
بسم الله الرحمن الرحیم
خوب حالا این فرمت رو چه جوری باید بریزم توی یه فیلد متنی دیگه
فکر کنم منظور شما همچین کدی باشه
این کد اگه یه نوع فرمت (فونت ، رنگ و ... ) داشته باشیم تو هر فیلد متنی خیلی خوب کار میکنه ولی وقتی چند تا فرمت رو به یه فیلد اعمال کرده باشیم نمیشه کاریش کرد.
PHP:
import fl.text.TLFTextField;
import flash.text.TextFormat;

var text1:TLFTextField= new TLFTextField();
var format:TextFormat = new TextFormat("tahoma",20,0xff6600);
var format2:TextFormat = new TextFormat("arial",20,0x66ff00,true);
text1.text = "بسم الله الرحمن الرحیم";
text1.autoSize = TextFieldAutoSize.RIGHT;
text1.defaultTextFormat = format
text1.setTextFormat(format2,9,15);
addChild(text1);
text1.selectable = false;
text1.x= 150;
text1.y=50;

var text2:TLFTextField = new TLFTextField();
var format3:TextFormat =new TextFormat()

text2.text = text1.text;
text2.autoSize = text1.autoSize
format3 = format
text2.setTextFormat(format3)
addChild(text2);
text2.x = text1.x
text2.y = text1.y+ 50
 
آخرین ویرایش:

++Hadi++

Active Member
ببین می تونی یه فرمت تعریف کنی و دائو عوضش کنی ولی هر جا مشخصه defaultTextFormat یه تکست فیلد رو مساوی این فرمت کنی تکستی که الان داره نوشن می ده عوض نمی شه ولی تکستی که به صورت معمول از الان به بعد بنویسی ، فرمتش می شه فرمت default ولی اگه می خوای الان غیر از defauktTextFormat ، فرمت انتخابی رو رو تکستت داشته باشی باید با setTextFormat به عنوان پارامتر اول اون فرمت رو و به عنوان پارامتر دوم ایندکس انتخابی اول رو و به عنوان پارامتر سوم، ایندکس پایانی رو بفرستی تا همین الان نوشته به فرمتی که گفتی از اولین جایی که انتخاب کردی تا انتها عوض شه. من تو امضام (لینکهای مهم که زیر پستامه) کلی سمپل گذاشتم.
 

niny-goloo

Member
کاکو جان تقریبا ده بار خوندم تا فهمیدم که چی نوشتین :دی
جاوید یه راهی گفته بود که تقریبا میشد یه کارایی باهاش کرد ولی خوب زیاد بدردم نمیخورد؟
ببینم میشه فرمت یه فیلد متن رو همونطور که با setTextFormat میدیم ازش بگیریم
یعنی ما یه فیلد متنی داریم میخوایم ببینیم که از ایندکس 5 تا ایندکس 10 هش چه فونت و رنگ و سایزی داره؟
میشه همچین کاری کرد؟
اگه بشه میتونم کارمو راه بندازم
 

جدیدترین ارسال ها

بالا