تغییر در محتویات موی کلیپ با لینکیجش

benyamin_pc

Well-Known Member
فرض کنید یه دونه موی کلیپ هست که بهش یه اسمه لینکیج دادم و از روش چنتا ساختمو اد کردم . حالا کسی ایده ای برای این داره که ی جوری یه swf تو اون موی کلیپ اصلیه لود کنم و بعد که با لینکیجش از رو موی کلیپم چنتا ساختمو اد کردم اون swf لود شده تو همشون باشه

بهترین چیزی که خودم الان تو ذهنمه اینه که لینکیجو بی خیال شمو تو موی کلیپم اون swf که میخام لود کنم بعد از رو اون بجائی چنتا بسازم بیامو چنتا دوپلیکیت کنم حالا تو همشون اون swf لود شده هست اما به محضه اضافه کردنه یه تکست باکسی چیزی به یکی از موی کلیپهای دوپلیک شده در زمان اجرا تو بقیشونم تکس باکسه میره و نباید اینجوری شه . پس حتما باید از لینکیجو ایجاده نمونه جدید استفاده کنم که تو اونم نمیشه swf رو برای موی اصلیه لود کردو تو همش دیده شه

یه راهه دیگه که تو ذهنمه اینه که اول نمونه هارو از رو لینکیج بسازم و بعد اون swf رو تو یه کلیپه دیگه لود کنمو از رو اون کلیپه دوپلیک کنمو به همه نمونه هام اد کنم اما راهی نیست که بشه یه جوری تو همون اصلیه لود کنمو هربار که با لینکیجش نمونه جدید ساخته میشه با swf لود شده نمونه جدیدو بسازه؟
 

armanbm

کاربر VIP
سلام داداش بنیامین.

یکی از راه های دم دستی و سادش که به ذهنم میرسه اینه که یک آرایه توی کلاس دیگه عمومی تعریف کنی و توی کلاس این موییی کلیپ هات هر موقعی که یک swf رو لود کردی آدرسش رو تو اون آرایه ها میزاری. و تو تابع سازنده ی کلاس های این مویی کلیپت اولش میگی هرچی آدرس تو اون آرایه بوده لود کنه.

بنظرم اگه یک آرایه ی پایبیک استاتیک تو کلاس پدر مریوط به این مویی کلیپ هات اضافه کنی اصولی تر باشه.
 

benyamin_pc

Well-Known Member
اگرم بشه مثله as1 یا as2 با اسمه یه موی کلیپ از روش بازم ایجاد کرد خیلی بی دردسر تره اما هرکار میکنم فقط با اسمه لینکیج یا همون کلاس میشه این کارو کرد
 

armanbm

کاربر VIP
چه فرقی داره بنیامین جان؟
اونی که میگی اسم لینکیج بهش. در حقیقت اسم کلاسی هست که داری به اون مویی کلیپ نسبت میدی.
حالا هرکار تو as2 میتونستی با اسم خود مویی کلیپ کنی؛ اینجا میتونی با نام کلاس مربوط به اون مویی کلیپ انجام بدی.
 

benyamin_pc

Well-Known Member
میدونم لینکیج همون اسم کلاسه اما اگه با instance_name یک موی کلیپ بشه یک موی کلیپو دوپلیکیت کرد خیلی راحت تره چون تو اون موی کلیپ swf که می خوامو لود می کنمو از روی اون دوپلیکیت می کنم اما swf را توی موی کلیپ بوسیله instance_name اون موی کلیپ میشه لود کرد ولی تو موی کلیپی نمیشه swf را بوسیله اسمه کلاسش یا همون لینکیجش لود کرد . اگه راهی هست که میشه یک swf رو بعد از لود کردن با دستور addChild بجای اینکه instance_name موی کلیپی که میخایم swf بیاد داخلش بهش بدیم لینکیج یا همون اسمه کلاسه موی کلیپمونو بدیمو بگیره خیلی راحت تره
 

JavidFlasher

کاربر فعال
خب تو اون موی کلیپی که بوسیله لینکیج ازش نمونه میگیری یه کد لود بنویس .
و هروقت و هرجا و هر اندازه خواستی ازش نمونه بگیر و addChildکن به صحنت swfهم توش لود میشه !
 

armanbm

کاربر VIP
چرا بنیامین جان راهش همونه که بالا گفتم.
باید یک آرایه از نوع static داشته باشه و هر موی کلیپی که لود میکنی، نوی اون آرایه آدرش رو اضافه کنی.
وتوی تابع سازنده ی کلاس بنویسی هرچی آدرس توی این آرایه بود لود کنه!
همین داداش گلم.
 

benyamin_pc

Well-Known Member
کد:
public class LoadIt extends MovieClip
{
public function LoadIt() {
var l:Loader = new Loader();
var r:URLRequest = new URLRequest(“loadme.swf”)
l.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete)
l.load(r)
};

private function loadComplete(e:Event):void
{
// instanciate one
var aLoadMe:* = new e.target.content.constructor()
addChild(aLoadMe)
// instanciate another
var anotherLoadMe:* = new e.target.content.constructor()
anotherLoadMe.x = 100;
addChild(anotherLoadMe)
}
}
اینجوری هم نشد

کلا اگه کسی هرطور میتونه کد زیرو بنویسه اینجا ی فایل بذاره برامن کلا جواب نمیده!

یک دکمه باشه که روش کلیک کردیم یک فایل swf را لود کنه و از روش هر تعداد موی کلیپ که تو یک تکست باکس وارد کنیم بسازه و بذاره رو صفحه فقط اگه دوباره دکمه کلیک شد اون 4 تا قبلی removeChild شده باشن
 
آخرین ویرایش:

benyamin_pc

Well-Known Member
راهشو پیدا کردم !! اما چقدر بد فرمه ! فکر نمیکنم دیگه بشه ازش به صورت داینامیک استفاده کرد (یعنی اینکه تو یک تکست باکس بگیم چنتا بعد به همون تعداد از اون swf لود شده تو همون تعداد موی کلیپ یه دونه بذاره)
راهشم هیچ کدوم نه از راههائی بود که خودم حدث میزدم نه بچه ها به ذهنشون رسیده بود . باید برای هر تعداد موی کلیپی که بخواهیم اون swf لود شدرو تو خودشون داشته باشن یه loader و یه تابعه loadcomplete مجزا تعریف کرد که حالته داینامیکو خیلی سخت میکنه و حالا روش کار می کنم اما فکر نکنم دیگه بشه داینامیک باهاش کار کرد
 

JavidFlasher

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

پیوست ها

  • me.zip
    14.1 کیلوبایت · بازدیدها: 8

armanbm

کاربر VIP
راهشو پیدا کردم !! اما چقدر بد فرمه ! فکر نمیکنم دیگه بشه ازش به صورت داینامیک استفاده کرد (یعنی اینکه تو یک تکست باکس بگیم چنتا بعد به همون تعداد از اون swf لود شده تو همون تعداد موی کلیپ یه دونه بذاره)
راهشم هیچ کدوم نه از راههائی بود که خودم حدث میزدم نه بچه ها به ذهنشون رسیده بود . باید برای هر تعداد موی کلیپی که بخواهیم اون swf لود شدرو تو خودشون داشته باشن یه loader و یه تابعه loadcomplete مجزا تعریف کرد که حالته داینامیکو خیلی سخت میکنه و حالا روش کار می کنم اما فکر نکنم دیگه بشه داینامیک باهاش کار کرد

بنیامین جون هرطور دوست داری فکر کن! اما راهش همونه که برات نوشتم! هیچ چیزی توی دنیای برنامه نویسی فقط یک راه نداره گل من.
یا الله.
 

benyamin_pc

Well-Known Member
دوست من نمیدونم شما چجوری فکر کردین ولی خیلی چیز ساده و پیش پا افتاده ای این موضوع این رو ببینین:
دقیقا" همونه که من بهتون گفتم:

آخه جاوید جان نمیشه اینجوری استفاده کنم چون اون فایلی که شما لود کردین به صورت استاتیک قبلا بهش دادین و اینجوری که اونارو addChild کردین توی unload مشکل ایجاد میشه و باید بجاش removeChild کرد
یه دکمه دارم که وقتی میزنم باید ی کادر بروز بیاد و فایل دلخواه کاربرو بگیره . بعد به تعدادی که تو تکست باکس گفته از رو اون ایجاد کنه . تازه فقط این نیست . تو اون swf یه دکمه دارم که وقتی هر کدوم از این موی کلیپ ها نمایشش بدن و ما دکمه داخله هر کدومو کلیک کنیم یه کار ثابت باید انجام شه و وقتی همه اینارو باهم بخواهین انجام شه تنها چیزی که دیدم تا اینجا این کارو می کنه اینه که برای هر کدوم از موی کلیپ هائی که بخواهیم ایجاد شه یه دونه لودر و تابعه کمپلته جدا بنویسم و این باعث میشه دیگه نشه داینامیکم باهاش کار کرد
 
آخرین ویرایش:

JavidFlasher

کاربر فعال
اینا همشون راه حل خیلی ساده ای دارن
فقط میتونم بگم برین آموزشهای اکشن رو بخونید :اکشن اسکریپت3از0تا بینهایت.
 

benyamin_pc

Well-Known Member
نه موضو سره بلد نبودن اکشن 3 نیست دوسته خوبم . پروژه خیلی حجیمی توی air و فلش هست و به این راحتی نمیشه قضاوت کرد که سادس اصلا سختیش به اینه که با منطق ها و تکنیک های زیادی درگیره و به تنهائی هر کدوم شاید اونقدر ساده به نظر برسه البته این قسمتاش اصلا جزو قسمتهای مهمه برنامه نیست اما چون با جز های دیگه درگیر شده یکم از اون سادگی که تو نگاه اول به نظر میرسه دراومده. منم چون نمیتونم کله پروژرو مطرح کنم و میتونستمم به این راحتی کلشو نمیشد تو چند خط توضیح داد فقط راه حل هارو توی پروژه دیدم به جواب نمیرسم و تنها جواب که میشد بهش رسید اون بود که مطرح کردم
 

JavidFlasher

کاربر فعال
آخه جاوید جان نمیشه اینجوری استفاده کنم چون اون فایلی که شما لود کردین به صورت استاتیک قبلا بهش دادین و اینجوری که اونارو addChild کردین توی unload مشکل ایجاد میشه و باید بجاش removeChild کرد
این کار امکان پذیره :
PHP:
myMC.loader.unload()
یا اصلا واسه راحتی کار تو موی کلیپ یه تابع بنویسید و توش unloadرو انجام بدین و هر وقت خواستین unloadشه صداش کنین.
خب اینکه چیز خاصی نبود؟نمیدونم کجاش مشکل داشتین.
یه دکمه دارم که وقتی میزنم باید ی کادر بروز بیاد و فایل دلخواه کاربرو بگیره . بعد به تعدادی که تو تکست باکس گفته از رو اون ایجاد کنه .
این رو با حلقه باید انجام بدی:
PHP:
for (var i:int;i<int(TextBox.text);i++) {
	maker ()
	
}
function maker () {
	var mc:MovieClip=new myMC()
	mc.x+=mc.width*i
	addChild(mc)
}
تازه فقط این نیست . تو اون swf یه دکمه دارم که وقتی هر کدوم از این موی کلیپ ها نمایشش بدن و ما دکمه داخله هر کدومو کلیک کنیم یه کار ثابت باید انجام ش

این رو هم که تو یه پست جوابتونو دادم و گفتین که با airمشکل داره بنا بر این از کلاس localConnection استفاده کن.
از این واضح تر دیگه نتونستم توضیح بدم.
 

benyamin_pc

Well-Known Member
خوب اگه با air کار کرده باشین متوجه هستین که اولا برای لود اون کدی که تو مثاله me.zip گذاشتین کدش تقریبا 3 برابر میشه اونم بخاطره 2 تا لودره اضافه ایه که اگه نباشه بعد که بخوایم برای ی دکمه که داخله یکی از swf ها است الان addeventشو بنویسیم بعدا error سند باکس میده و ضمنا unload یا unloadstop جواب نخواهد داد . پس همین اول دیدیم همه چی به همین سادگی نبود .
برای ایجاد موی ها هم هر کس با برنامه نویسی کار کرده میدونه با ی for میشه چیکار کرد پس مشکله من یا کسی که داره برنامه مینویسه و به مشکلی بر می خوره ی for نیست و مشکلو کسی میتونه بفهمه که با همه چیزائی که اونجا لازمه درگیر بوده باشه و همشو بدونه نه فقط ی ذرشو
برای اینکه بهتر با مشکلائی که از نظرتون خیلی بچگانه و سادس درگیر شین و تصور نکنین هر برنامه نویسی که ی جائی سوال داره قراره هیچی حتی ی for بلد نباشه و اونو به ی لینکه آماتور رف میدین می تونین برنامه زیرو بنویسین

یدونه پروژه air باز کنین
یدونه تکست باکس و یه دونه دکمه ایجاد کنین
وقتی روی دکمه کلیک شد کادر بروز باز شه و swf که کاربر می خوادو تو swf حتما یه دکمه به اسمه مثلا A هست انتخاب کنه و به تعدادی که تو تکست باکس دادیم اونو رو صفحه نمایش بده و رو هر کدوم کلیک شد فقط ی عدد مناسب با شماره دکمه ای که کلیک شده نمایش بده . مثلا اولی کلیک شد بزنه 1
همه این قسمتو با کدهاشو تو کمتر از 10 دقیقه نوشتم اما مشکلی که با لوده xhtml و xml و بخش سرچ از داخله اونو بعلاوه ایجاد event از داخله یه سری swf دیگه با آرایه هائی که تو ی بخشه دیگه که ی سری دکمه ایجاد می کرده که همه اینها بدجور به هم ربط دارنو پروژرو نمیتونم اینجا همشو بگم باعث شده کارو یکم پیچونده و نتیجه ای که بهم داده تا اینجا تنها راهه حل اونی بود که مطرحش کردم اما این معناش این نیست برنامه نویسان و دوستان بسیار عزیزم بیان لینکه آماتور رف بدن
 
آخرین ویرایش:

benyamin_pc

Well-Known Member
مشکل حل شد . تقریبا یه دیدگاه به عملیات پایه ای بود که air انجام میده و با تست و تجربه متوجهش شدم که اگه از اول این شیوه کاره air رو می دونستم خیلی راحت همه اینا حل میشدن
 

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

بالا