اشاره از يک موي کليپ به يک موي کليپ ديگه

با سلام

دوستان من دارم تازه ActionScript 3 رو ياد ميگيرم .

اگه سوالم بچه گونه است به بزرگي خودتون ببخشيد .

هدف من از اين سوال آشنايي با This و parent مي باشد .

من داخل Stage ام دو موي کليپ دارم يکي با نام A وديگري با نام B .

حال داخل هر موي کليپ به طور مشترک يک موي کليپ ديگه به نام هاي S2 و جود داره که داخل S2 هم يک موي کليپ ديگه به نام S1 هستش .

حال داخل موي کليپ S2 در داخل A يک Function تعريف کردم که مي خوام اين تابع موقعيت موي کليپ B رو که در root هست رو تغيير بدم و با يک تابع ديگه اندازه اون موي کليپ رو تغيير بدم .

توشجه داشته باشيد که من داخل A.S2 اين کد رو دارم مي نويسم و مي خوام تغييرات روي B که تو Scean اصلي هست صورت پذيرد . من فقط نميدونم چه جوري بايد به يک موي کليپ ديگه داخل صفحه اصلي اشاره کنم .

من اين کد رو نوشتم خطا ميده :

کد:
this.parent.B

ارور داد !!!!!!!! :sad:

با تشکر .
 

Mr. LonelY

کاربر فعال
ببین دوست عزیز منم ی موقع همین مشکل رو داشتم
یکی از خاصیت های as3 اینه کد هاتو یک جا و توی یک فریم بنویسی!
شما باید کد هاتو جوری بنویسی ک از بیرون (stage) روی آبجک هایی ک تو مووی کلیپ های دیگه هست مدیریت کنی!
برای مثال شما فرض کن ما بخوایم برای S1 ی listener تعریف کنیم باید بنویسیم
A.S2.S1.addEventListener
امیدوارم متوجه شده باشی!!
 
سلام دوست عزيز

ممنون از توجه تون به اين پست . و همچنين از جوابتون هم متشکرم .

اين کدي که فرموديد A.S2.S1.addEventListener براي ورود به موي کليپ A و سپس S2 و سپس S1 هستش .

ولي من الان داخل موي کليپ S2 هستم و در فريم 1 اين موي کليپ تابعي مي خواهم بنويسم که به موي کليپ ديگري که در Stage کنار موي کليپ A هست اشاره کنم و اندازه اون رو توسط تابع تغيير بدم .

باز هم ممنون

منتظر جواب دوستان هستم .
 

++Hadi++

Active Member
سلام
بهتره تمام توابع و دستورات در یه جا نوشته بشه ولی اگه می خواهین از درون مووی کلیپ A ، و در داخل مووی کلیپ S2 این کد رو بنویسین باید بنویسین :
PHP:
MovieClip(this.parent.parent.B).x=10;
یعنی اومدیم دوبار به سمت بیرون و به سمت شاخه روت رفتیم و بعد به B رسیدیم و اونو صدا زدیم . حالا فرض کن داخل :
A و B هر کدوم یه مووی کلیپ به اسم های S2 و داخل S2 هم یه مووی کلیپ به اسم S1 هست . من سخت ترین حالت رو می گم . فرض کن هر دو مووی کلیپ A و B در شاخه روت و در تایم لاین اصلیتند . پس اگه بخوای از مووی کلیپ S1 واقع در A.S2 به مووی کلیپ S1 در مووی کلیپ B.S2 دست پیدا کنی ، داخل S1 واقع در A.S2 می نویسی :
PHP:
MovieClip(this.parent.parent.B.S2.S1).x=10;
دو تا نکته »
1- با نوشتن x=10 خواستم یه مثال از دسترسی رو بهت بگم و شما می تونی هر پارامتر دیگه اونو تغییر بدی .
2- منظور ما از S1 و S2 و A و B ، اسم instanceName هست یعنی همونی که بعد از انتخاب مووی کلیپ در پنل properties و در این کادر می نویسین ،
یه وقت اشتباه متوجه نشین ، منظور ما اسم اصلی سمبل مادر مووی کلیپ در Library نیست ...
موفق باشین ...
 
آقا هادي ممنون از راهنماييتون.

من تمام اصول رو رعايت کردم ولي اين ارور را مي ده .

کد:
1119: Access of possibly undefined property B through a reference with static type flash.display:DisplayObjectContainer.

من فقط اين نکته رو بگم که کدم رو تو S2 نوشتم بنابراين يک Parent گذاشتم .

اصلا فايل Fla رو ضميمه موضوع کردم ، خودتون ببينيد .

با تشکر
 

پیوست ها

  • Untitled-2.rar
    5.2 کیلوبایت · بازدیدها: 11

++Hadi++

Active Member
اشکال شما از اون تابع درونی بود و باید می نوشتین :
PHP:
function daire (w:Number,h:Number):void
{
    MovieClip(this.parent.parent).BB.x=w-MovieClip(this.parent.parent).BB.width;
    MovieClip(this.parent.parent).BB.y=h-MovieClip(this.parent.parent).BB.height;
}
البته من اسم مووی کلیپ A رو به AA و B رو به BB تبدیل کردم چون اونا رو آبی نشون می داد و یعنی اینکه جزء کلمات کلیدی بودند .
شما به جای اینکه دوبار عبارت parent رو بنویسین ، 1 بار نوشته بودین و به جای اینکه به root برسه ، به داخل AA می رسید و می دید که هیچ BB وجود نداره ...در مورد کوتاه نویسی هم خودتون فایلو با cs5 باز کنین و اسکریپتی که در root هست رو ببینین ، من توضیحات کامل دادم ...
موفق باشین ...
 

پیوست ها

  • REUntitled-2.rar
    11.4 کیلوبایت · بازدیدها: 26

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

بالا