واضح آرشیو وب فارسی:سایت ریسک: سوال : مشكل در Target Path در AS3 mmpflash 09 بهمن 1387, 20:20سلام ما در AS2 دو نوع Target Path داشتيم : 1. نسبي ( this.mc1.mc2._x يـــا parent._parent.mc._x_ ) 2. مطلق ( root.mc1.mc2._x_ ) اما با تغيراتي كه در ساختار AS3 به وجود آمده از displayList و displayObject استفاده ميكنه و ديگه به صورت قبل نميشه به مووي كليپ ها دسترسي داشت مثلا parent.parent.mc.x يا root.mc1.mc2.x با هشدار مواجه ميشه. حالا اگه كسي اطلاعات كاملي در مورد Targrt Parh در AS3 داره با مثال اينكه در AS2 چي بوده و حالا در AS3 چه جوري بايد بنويسيم توضيح بده ممنون ميشم. BioDread 10 بهمن 1387, 08:29سلام ما در AS2 دو نوع Target Path داشتيم : 1. نسبي ( this.mc1.mc2._x يـــا parent._parent.mc._x_ ) 2. مطلق ( root.mc1.mc2._x_ ) اما با تغيراتي كه در ساختار AS3 به وجود آمده از displayList و displayObject استفاده ميكنه و ديگه به صورت قبل نميشه به مووي كليپ ها دسترسي داشت مثلا parent.parent.mc.x يا root.mc1.mc2.x با هشدار مواجه ميشه. حالا اگه كسي اطلاعات كاملي در مورد Targrt Parh در AS3 داره با مثال اينكه در AS2 چي بوده و حالا در AS3 چه جوري بايد بنويسيم توضيح بده ممنون ميشم. برای parent باید نوع parent رو مشخص کنی MovieClip (parent).mc.x و برای مطلق : منم درست به جواب کاملی نرسیدم ولی باید نوع رو باز مشخص کنی MovieClip (root).mc2.x mmpflash 10 بهمن 1387, 10:44biodread جان ممنون ، خيلي mp3 گفتي لطفا كسي كامل تر و جامع تر (بصورت مقاله) توضيح بده كه اين مشكل به صورت اساسي براي AS2 كارها حل بشه ممنون BioDread 10 بهمن 1387, 10:56biodread جان ممنون ، خيلي mp3 گفتي لطفا كسي كامل تر و جامع تر (بصورت مقاله) توضيح بده كه اين مشكل به صورت اساسي براي as2 كارها حل بشه ممنون من توضیحاتم به نظرم گویا بود! یعنی میگی یه نفر پیدا میشه یه مقاله راجع بش بنویسه؟ mmpflash 10 بهمن 1387, 14:38من توضیحاتم به نظرم گویا بود! بر منكرش لعنت ، ( قربونت برم بچه كه زدن نداره :cry: ، چرا نارحت شدي) منظورم اين بود كه كامل نبود بيشتر هم مي شد توضيح داد. به قول خودت " برای مطلق : منم درست به جواب کاملی نرسیدم " یعنی میگی یه نفر پیدا میشه یه مقاله راجع بش بنویسه؟ چرا پيدا نميشه ، توكلت به خدا باشه. pourkoushki 15 بهمن 1387, 16:37بسم الله الرحمن الرحيم بيشتر برنامه نويسان AS2 وقتي رو به AS3 ميآورند با اين موضوع حتما برخورد خواهند كرد كه چرا مسيرهاي parent و root به آن شكلي كه در نگارشهاي قبلي با آن كار ميكردند فرق كرده ، من در اين مقاله تا حدي به اين مسئله ميپردازم ، پس در ابتدا براي درك بهتر با يك مثال آغاز مي كنيم : ما در تايم لاين اصلي فلش و در stage ، دو عدد مووي كليپ با نام هاي clip1_mc و clip2_mcداريم و در درون clip1_mc يك فرزند از نوع مووي كليپ با نام clip3_mc را ايجاد نمودهايم. ميخواهيم از درون clip3_mc و در فريم 1 به موقعيت x مووي كليپ clip2_mc روي تايم لاين اصلي دسترسي نماييم. // AS2 // مسير نسبي this._parent._parent.clip2_mc._x; // مسير مطلق _root.clip2_mc._x; // AS3 براي حل مثال فوق در // مسير نسبي MovieClip(parent.parent).clip2_mc.x; Object(parent.parent).clip2_mx.x; // or var myParent = parent.parent; myparent.clip2_mc.x; // مسير مطلق MovieClip(root).clip2_mc.x; Object(root).clip2_mc.x; // or var myRoot = root; myRoot.clip2_mc.x; اگر در مثال فوق ، فرمت كد AS2 را براي AS3 استفاده ميكرديم با خطا مواجه ميشديم. چون در AS3 يك مفهوم جديد و اساسي بنام DisplayList (ليست نمايش) مطرح شده است ، ليست نمايش ، ساختارهاي درختي سلسله مراتبي دارد كه تمام DisplayObject (شي نمايش) ها به آن اضافه ميشوند. بالاترين شي نمايش ، يعني root (ريشه) درخت يك DisplayObjectContaner (كانتينر شي نمايش) Stage است كه ميتواند شامل چندين شي نمايش و يا كانتينرهاي شي نمايش ديگه هم باشد. در پايين كانتينر Stage ، تايم لاين اصلي (فايل swf اصلي برنامه) وجود داره كه معمولا كانتينر MovieClip است (اين كانتينر ميتواند نوع ديگر گسترش يافته (Extends) از كانتينر Sprite هم باشد). لازم به ذكر است كه DisplayObjectContaner ها ، زير كلاسي از كلاس DisplayObject است كه شامل (Stage – Sprite – MovieClip – Loader) ميباشد و فقط كانتينرهاي شي نمايش ميتوانند داراي فرزنداني از نوع شي نمايش و يا حتي از نوع خود كانتينرهاي ديگر باشند. پس مطالب فوق به اين صورت شد كه ، ما DisplayList اي داريم كه تمامي شي نمايش هاي ما را نشان ميدهد ، اولين كانتينر اين ليست نمايش ، كانتينر شي نمايش Stage است و داخل اين كانتينر Stage ، كانتينر ديگري كه همان تايم لاين اصلي ماست و از نوع MovieClip است وجود دارد. و مابقي ساختار اين درخت رو ما بايد با اضافه نمودن كانتينرهاي مورد نظر خود و بسته به ساختار برنامههايمان ايجاد كنيم به عبارتي ديگر كانتينرها مثل شاخههاي اين درخت ميمانند كه به اندازه دلخواه ميتوانند توسط فقط اضافه كردن كانتينرهاي جديد شاخه دار شوند و ميتوانند به اندازه شي نمايشهاي داخل خود ، برگ (فرزند) داشته باشند. (جهت اطلاعات كاملتر به Help فلش مراجعه نماييد) حالا با اين توضيح اجمالي از ساختار ليست نمايش AS3، به سه خصوصيت: root و parent و Stage در AS2 و AS3 ميپردازيم. root_ در AS2 : خصوصيت root_ در As2 ، هميشه به تايم لاين اصلي (فايل swf اصلي) ما اشاره دارد. زيرا اين يك متغير از نوع global (عمومي و سراسري) فيلم فلش ما محسوب ميشود. به همين خاطر است كه اگر يك swf خارجي كه از خصوصيت root_ در آن استفاده شده را در فايل swf اصليمان بارگذاري كنيم ، root_ به تايم لاين اصلي بارگذاري شونده اشاره خواهد كرد نه swf بارگذاري شده. (مگر اينكه خصوصيت lockroot_ را براي swf خارجي برابر True قرار داده باشيم) root در AS3 : خصوصيت root در AS3 ، هميشه به تايم لاين اصلي (فايل swf اصلي) ما اشاره نميكند و به عنوان يك متغير متعلق به DisplayObject خود معرفي ميشود. خصوصيت root هم اكنون مبني بر ساختارهاي درختي سلسله مراتبي از شي است و به همين خاطر است كه root هميشه به شي يكساني اشاره نميكند. براي درك بهتر به نكات زير توجه نماييد: 1. root براي شي Stage ، اشاره به خود شي Stage دارد. 2. root براي تايم لاين اصلي و تمام DisplayObject هاي داخل آن ، اشاره به تايم لاين اصلي دارد. 3. root براي DisplayObject هايي كه در swf بارگذاري شدهاند ، اشاره به تايم لاين اصلي فايل swf دارد. 4. root براي تصاوير بارگذاري يك شي Bitmap ، اشاره به خود شي Bitmap دارد. 5. root براي نمونهاي از كلاس اصلي از فايل swf اول بارگذاري شده ، اشاره به خود DisplayObject دارد. 6. root براي هر DisplayObjet كه به DisplayList اضافه نشده باشد ، Null است. (شايد مواردي جا افتاده باشه كه خودتون با تمرين و مطالعه به آنها پي ببريد) parent_ در AS2 : خصوصيت parent_ در AS2 ، هميشه به آبجكتي كه شي جاري ، شامل آن است اشاره دارد. و راهي است براي پيمايش يك ساختار درختي كه از نوع MovieClip است. همه اشياي بصري در تايم لاين اصلي با level0_ شروع ميشوند و يا به عبارتي ، زنجيره والد بالاي سلسله مراتب كانتينر level0_ را ميپيمايد. مگر اينكه با دستور loadMovieNum فايل swf خارجي را در level_ ديگري بارگذاري كنيم. parent در AS3 : خصوصيت parent در AS3 ، كانتينر شي نمايش كه حاوي همين شي نمايش است را نشان ميدهد. خصوصيت parent براي مشخص كردن يك مسير وابسطه يه شي نمايش كه بالاي شي نمايش جاري در ليست سلسله مراتبي است بكار ميرود. Stage در AS3 : ريشه ليست نمايش است يعني بالاترين شي نمايش در ساختار سلسله مراتبي درخت محسوب ميشود. شما ميتوانيد با استفاده از خصوصيت Stage هر شي نمايش به كانتينر Stage دسترسي پيدا كنيد و هر برنامه فقط ميتواند داراي يك كانتينر Stage باشد. نكته آخر بحث اينكه: 1. در AS2 تمامي اشيا درون كلاس MovieClip ايجاد و يا حتي ترسيم ميشدند و خود فلش ميدانست شي parent_ و يا root_ شما از چه كلاس و جنسي است ولي در AS3 كه Class-Base است MovieClip يكي از كلاسهاي كانتينر آن را تشكيل ميدهد. بنابراين شما در هنگام استفاده از parent و root بايد به فلش بگوييد كه از چه كانتينر شي نمايشي داريد استفاده ميكنيد. 2. در AS2 اشيا بصري درون فيلم فلش به ترتيب چيدمان خطي اضافه ميشوند (از طريق سطوح عمق) ولي در AS3 ساختارهاي درختي سلسله مراتبي و مباحث DisplayList و DisplayObject و DisplayObjectContaner مطرح است. يا علي BioDread 15 بهمن 1387, 20:01اگه تو دنیا چنتا آدم خوب باشن یکیش خودتی BioDread 15 بهمن 1387, 20:24مرسی از مقالت منو نجات داد پس main time line ما دو نوع میتونه جنس داشته باشه که یکی MovieClip و دیگری Object درسته؟ و نمیشه آدرس رو از stage شروع کرد؟! چون stage خیلی بالا هست و نمیشه درسته؟ pourkoushki 16 بهمن 1387, 08:30پس main time line ما دو نوع ميتونه جنس داشته باشه که يکي MovieClip و ديگري Object درسته؟ جنس تايم لاين MovieClip است و از كلاس Object ارث ميبره. نميشه آدرس رو از stage شروع کرد؟! معمولا از stage براي آدرس دهي استفاده نميشود بلكه از DisplayObject ها براي آدرس دهي به stage استفاده ميشود. BioDread 16 بهمن 1387, 09:17هر سری مقالتو می خونم بیشتر حال میکنم عکس هم که گذاشتی خیلی کامل شد مرسی khorzu 20 بهمن 1387, 15:53اگه تو دنیا چنتا آدم خوب باشن یکیش خودتیتائید می شه ... ممنون بالاخره بعد از مدت ها یه چیزی از توی این فوروم های مجید آنلاین به ما اضاف شد ... khorzu 20 بهمن 1387, 15:56مگر اينكه خصوصيت lockroot_ را براي swf خارجي برابر true قرار داده باشيمچه مشقت ها که برای فهمیدن این موضوع نکشیدیم و چه تاپیک های همیشه یک پُسته ای که برای رسیدن به این جواب نزدیم ... حیف که فقط یک بار می شه این لعنتی رو فشار داد ... sizanjavad 21 بهمن 1387, 09:43مگر اينكه خصوصيت lockroot_ را براي swf خارجي برابر true قرار داده باشيم چه دهنها كه از من سرويس نشد به خاطر همين swf هاي لود شده و root شون. نكته خيلي مفيدي بود. ولي كاش دو سال پيش ميگفتي!!!
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 838]