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

شروع موضوع توسط splinter cell ‏15 ژانویه 2012 در انجمن Action Script 3

  1. splinter cell

    splinter cell Well-Known Member

    ارسال‌ها:
    874
    تشکر شده:
    1,577
    امتیاز دستاورد:
    93
    سلام به همه دوستان
    من چند تا مووی کلیپ دارم که هر کدوم از اونها رو در قسمتActionScript Linkage با نام های star_a ,star_b,star_c,.... نام گذاری کردم. درحالت عادی برای نمونه سازی از آنها چنین کدی رو می نویسیم
    کد (Text):
     
     
    var mc:MovieClip=new star_a;
    addChild(mc);
     
     
    من یک فایل Xml دارم این نام ها star_a ,star_b,star_c و یک سری پراپرتی های دیگه ی مووی کلیپها توی اونه و میخوام کد زیر رو تولید کنم
    کد (Text):
     
    var mc:MovieClip=new star_a;
     
    و این star_a رو از xml دریافت کنم و توی کد بالا قرار بدم.
    این هم قسمتی از xml منه

    کد (Text):
     
    <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>
     
    وقتی تریس میگیرم راحت اسم رو دریافت میکنه

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

    کد (Text):
     
    var mc:MovieClip=new star_a
     
    استفاده کنم؟
    امیدوارم سئوالم واضح باشه. با تشکر
     
    نوشته شده توسط splinter cell در ‏15 ژانویه 2012
  2. ++Hadi++

    ++Hadi++ Active Member

    ارسال‌ها:
    3,529
    تشکر شده:
    5,802
    امتیاز دستاورد:
    36
    فک می کنم مطلب دلتون این هست:
    PHP:
    getDefinitionByName("LinkagedName");
    البته کامل مطلبتو.نو نخوندم...
     
    نوشته شده توسط ++Hadi++ در ‏15 ژانویه 2012
    splinter cell از این پست تشکر کرده است.
  3. splinter cell

    splinter cell Well-Known Member

    ارسال‌ها:
    874
    تشکر شده:
    1,577
    امتیاز دستاورد:
    93
    هادی جان میشه بیشتر توضیح بدی.چطور از این استفاده کنم؟
    من یه همچین چیزی رو نوشتم
    کد (Text):
     
    var mc:MovieClip = new getDefinitionByName(xmlData.game_level[0].board_type);
     
    ولی این ارور رو میده
    کد (Text):
     
    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()
     
     
    نوشته شده توسط splinter cell در ‏15 ژانویه 2012
  4. aliamel

    aliamel کاربر فعال

    ارسال‌ها:
    411
    تشکر شده:
    397
    امتیاز دستاورد:
    63
    منظور شما اینه که میخوایین عملیات linkage رو به شکل داینامیک انجام بدین ؟
     
    نوشته شده توسط aliamel در ‏15 ژانویه 2012
    splinter cell از این پست تشکر کرده است.
  5. splinter cell

    splinter cell Well-Known Member

    ارسال‌ها:
    874
    تشکر شده:
    1,577
    امتیاز دستاورد:
    93
    آره تقریباً یه همچین چیزی .
    از بین چند نوع مووی کلیپ (مثلاً یکی مربع یکی مثلث یکی دایره)میخوایم یکی رو نمونه سازی کنیم.
    و تعیین اینکه کدوم یکی باید ساخته بشه از اطلاعات xml بدست میاد.
    کد (Text):
     
    var mc:MovieClip=new star_a
     
    کلمه star_a رو از xml میگیریم و میخوایم یک نمونه از اون بسازیم.
     
    نوشته شده توسط splinter cell در ‏15 ژانویه 2012
    moosavimaleki از این پست تشکر کرده است.
  6. ++Hadi++

    ++Hadi++ Active Member

    ارسال‌ها:
    3,529
    تشکر شده:
    5,802
    امتیاز دستاورد:
    36
    تقریبا راهی نیست جز اینکه همشونو لینکیج کنید و بعدبا استفاده از getDefinitionByName اونا رو بوجود بیارید:
    PHP:

    var MovieName:String="اسم لینکیج شده مووی کلیپتان";
    var ButtonClass:Class=getDefinitionByName(MovieName) as Class;
    var ButtonMC:MovieClip=new ButtonClass();
    addChild(ButtonMC);
     
     
    نوشته شده توسط ++Hadi++ در ‏15 ژانویه 2012
    splinter cell از این پست تشکر کرده است.
  7. aliamel

    aliamel کاربر فعال

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

    پیوست ها:

    • Desktop.rar
      اندازه فایل:
      کیلوبایت 8.1
      نمایش ها:
      31
    نوشته شده توسط aliamel در ‏15 ژانویه 2012
    splinter cell از این پست تشکر کرده است.
  8. splinter cell

    splinter cell Well-Known Member

    ارسال‌ها:
    874
    تشکر شده:
    1,577
    امتیاز دستاورد:
    93
    ممنون از شما دوستان و اساتید.
    بعد از پست اول آقا هادی توی اینترنت سرچ کردم و اینجا تونستم یه چیزی پیدا کنم که تایید حرفهای شما دوستان هست.:rose:
    والان با توضیحاتتون این مشکل برطرف شد.

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

    کد (Text):
     
    var arr:Array=new Array(xmlData.game_level.answer_arr[0]);
     
    حالا که میخوام از آرایه استفاده کنم می بینم که همه رو به شکل یکعضو ذخیره کرده.در صورتیکه باید10 تا عضو داشته باشه.
    امیدوارم راهی برای این مشکل باشه و گرنه باز نقطه سر خط خواهم شد.:shock:
    ممنون میشم راهنمایی کنید:rose:
     
    نوشته شده توسط splinter cell در ‏15 ژانویه 2012
  9. aliamel

    aliamel کاربر فعال

    ارسال‌ها:
    411
    تشکر شده:
    397
    امتیاز دستاورد:
    63
    فکر می کنم این کد نیازی به توضیح نداشته باشه :
    PHP:
    var str:String = "1,2,3,4,5";
    var arr:Array=str.split(",");
     
    نوشته شده توسط aliamel در ‏16 ژانویه 2012
    splinter cell از این پست تشکر کرده است.
  10. splinter cell

    splinter cell Well-Known Member

    ارسال‌ها:
    874
    تشکر شده:
    1,577
    امتیاز دستاورد:
    93
    ممنون علی جان. با راهنمایی شما به این شکل در آوردمش و حل شد.

    کد (Text):
     
    var str:String=xmlData.game_level.answer_arr[0];
    var arr:Array=str.split(",");
    trace(arr.length);// output is :10
     
     
    نوشته شده توسط splinter cell در ‏16 ژانویه 2012
    aliamel از این پست تشکر کرده است.

به اشتراک بگذارید