سئوال:دریافت نام کلاس مووی کلیپ از فایلxml

splinter cell

Well-Known Member
سلام به همه دوستان
من چند تا مووی کلیپ دارم که هر کدوم از اونها رو در قسمتActionScript Linkage با نام های star_a ,star_b,star_c,.... نام گذاری کردم. درحالت عادی برای نمونه سازی از آنها چنین کدی رو می نویسیم
کد:
var mc:MovieClip=new star_a;
addChild(mc);

من یک فایل Xml دارم این نام ها star_a ,star_b,star_c و یک سری پراپرتی های دیگه ی مووی کلیپها توی اونه و میخوام کد زیر رو تولید کنم
کد:
var mc:MovieClip=new star_a;
و این star_a رو از xml دریافت کنم و توی کد بالا قرار بدم.
این هم قسمتی از xml منه

کد:
<clips>
 <clip>
  <mc_class>star_a</mc_class>
  <mc_x>250</mc_x>
                            <mc_y>150</mc_y>
 </clip>
              <clip>  
  <mc_class>star_b</mc_class>
  <mc_x>400</mc_x>
                            <mc_y>150</mc_y>
 </clip>
 
</clips>
وقتی تریس میگیرم راحت اسم رو دریافت میکنه

کد:
trace(xmlData.clip.mc_class[0]); // star_a
حالا چطوری باید از این star_a در این کد

کد:
var mc:MovieClip=new star_a
استفاده کنم؟
امیدوارم سئوالم واضح باشه. با تشکر
 

++Hadi++

Active Member
فک می کنم مطلب دلتون این هست:
PHP:
getDefinitionByName("LinkagedName");
البته کامل مطلبتو.نو نخوندم...
 

splinter cell

Well-Known Member
هادی جان میشه بیشتر توضیح بدی.چطور از این استفاده کنم؟
من یه همچین چیزی رو نوشتم
کد:
var mc:MovieClip = new getDefinitionByName(xmlData.game_level[0].board_type);
ولی این ارور رو میده
کد:
TypeError: Error #1064: Cannot call method global/flash.utils::getDefinitionByName() as constructor.
 at sample1_fla::MainTimeline/LoadXML()
 at flash.events::EventDispatcher/dispatchEventFunction()
 at flash.events::EventDispatcher/dispatchEvent()
 at flash.net::URLLoader/onComplete()
 

aliamel

کاربر فعال
منظور شما اینه که میخوایین عملیات linkage رو به شکل داینامیک انجام بدین ؟
 

splinter cell

Well-Known Member
آره تقریباً یه همچین چیزی .
از بین چند نوع مووی کلیپ (مثلاً یکی مربع یکی مثلث یکی دایره)میخوایم یکی رو نمونه سازی کنیم.
و تعیین اینکه کدوم یکی باید ساخته بشه از اطلاعات xml بدست میاد.
کد:
var mc:MovieClip=new star_a

کلمه star_a رو از xml میگیریم و میخوایم یک نمونه از اون بسازیم.
 

++Hadi++

Active Member
تقریبا راهی نیست جز اینکه همشونو لینکیج کنید و بعدبا استفاده از getDefinitionByName اونا رو بوجود بیارید:
PHP:
var MovieName:String="اسم لینکیج شده مووی کلیپتان";
var ButtonClass:Class=getDefinitionByName(MovieName) as Class;
var ButtonMC:MovieClip=new ButtonClass();
addChild(ButtonMC);
 

aliamel

کاربر فعال
شما می تونید اسم مووی کلیپ هاتون رو به صورت دینامیک به کلاس بفرستید (مثل نمونه ای که گذاشتم) .اما این که بخواهیم دستوراتی بنویسیم که عملیات linkage رو انجام بده رو فکر نمی کنم ممکن باشه .
برای درگیر نشدن با چنین مواردی بهتره مووی کلیپ هاتونم با کد اکشن اسکریپت ایجاد کنید !
 

پیوست ها

  • Desktop.rar
    8.1 کیلوبایت · بازدیدها: 32

splinter cell

Well-Known Member
ممنون از شما دوستان و اساتید.
بعد از پست اول آقا هادی توی اینترنت سرچ کردم و اینجا تونستم یه چیزی پیدا کنم که تایید حرفهای شما دوستان هست.:rose:
والان با توضیحاتتون این مشکل برطرف شد.

حالا که بحث xml شد با اجازه تون سئوال دیگرم رو هم مطرح کنم و اونم اینه که این مووی کلیپها هر کدوم شبیه جدولی هستند که توی اون باید یک سری عدد قرار بگیره.من اعداد هر مووی کلیپ رو توی یکی از تگهای xml قرار دادم.و حالا که میخوام اونها رو توی یک آرایه قرار بدم متوجه شدم کار با مشکل روبرو شده.این رشته از اعداد که در xml قرار دارد
کد:
<answer_arr>0,1,2,3,4,5,6,7,8,9</answer_arr>
رو میخوام توی یک آرایه ذخیره کنم.

کد:
var arr:Array=new Array(xmlData.game_level.answer_arr[0]);

حالا که میخوام از آرایه استفاده کنم می بینم که همه رو به شکل یکعضو ذخیره کرده.در صورتیکه باید10 تا عضو داشته باشه.
امیدوارم راهی برای این مشکل باشه و گرنه باز نقطه سر خط خواهم شد.:shock:
ممنون میشم راهنمایی کنید:rose:
 

aliamel

کاربر فعال
فکر می کنم این کد نیازی به توضیح نداشته باشه :
PHP:
var str:String = "1,2,3,4,5";
var arr:Array=str.split(",");
 

splinter cell

Well-Known Member
ممنون علی جان. با راهنمایی شما به این شکل در آوردمش و حل شد.

کد:
var str:String=xmlData.game_level.answer_arr[0];
var arr:Array=str.split(",");
trace(arr.length);// output is :10
 

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

بالا