سوال در مورد Document Class

DaDaDooDoo

کاربر VIP
سلام ، وقتی می خواهیم از داخل یه مووی کلیپ متغیری رو صدا بزنیم که در یک لول بالاتر تعریف شده از دستور زیر استفاده می کنیم :

PHP:
MovieClip(parent).Variable

درسته ؟

حالا اگر بخواهیم از داخل یه مووی کلیپ مستقیماً به مقدار یک متغیر که در Document Class تعریف شده دسترسی پیدا کنیم چه ؟ اگه از روش بالا استفاده کنیم ارور property Not Found in Class Path می ده ... یعنی به دنبال یک property هم نام همون متغیر درون کلاسمون می گرده که خوب پیدا هم نمی کنه ... باید چه کرد ؟
ممنون میشم راهنمایی کنید .
 

++Hadi++

Active Member
نحوه استفادتون از اون class چه جوریه ؟
کلاس اصلی ؟
نمونه سازی ؟
کلاس با متغیر استاتیک ؟
همپوشانی کلاس با مووی کلیپ یا چیز های دیگه ؟
 

DaDaDooDoo

کاربر VIP
والا عرض کردم Document Class و تا اونجایی که سواد من جواب می ده Document Class همون کلاسیه که به عنوان کلاس اصلی پروژه تعیین میشه ، نمونه هم ازش نمیشه گرفت و وقتی پروژه ران می شه اون کلاس هم اجرا می شه . ممنون از پیگیریت .
 
آخرین ویرایش:

++Hadi++

Active Member
کلاس اصلی رو برای اصل داستان فلش در نظر می گیرن یعنی اینکه شما تمام پروژه اصلی رو در اون می نویسین . پس وقتی قراره اکثریت قریب به اتفاق کار در اون انجام بگیره ، نیاز مفرطی به استفاده از اکشن در تایم نیست (بخصوص در موارد کلیدی .)
استفاده از تایم لاین در جاهایی (در کنار کلاس اصلی ) به درد می خوره که شما به مووی کلیپ خاص در یه تایم لاین یه سری دستورات خاص و شاید ساده رو بدین و زیاد مورد استفاده قرار نمی گیره .
مووی کلیپ ها و نمونه هایی از کلاسهای دیگه رو که در کلاس اصلی بوجود می یارین رو می شه در تایم لاین مورد دسترسی قرار داد ولی در مورد متغیر ها اینطور نیست و اگه هم راهی باشه من نمی دونم و اگه هم بدونم در اسرع وقت می نویسم .
 
آخرین ویرایش:

DaDaDooDoo

کاربر VIP
هادی جان ، در مورد دسترسی به متغیر های کلاس اصلی در تایم لاین مشکلی نیست ... به اونا از تایم لاین روت می شه به راحتی دسترسی داشت ، مشکل من اینه که می خوام از داخل یک مووی کلیپ که روی تایم لاین هست دسترسی داشته باشم . این در مورد کلاسهایی که برای یک مووی کلیپ ست می کنی مشکلی ایجاد نمی کنه :

PHP:
MovieClipName.VariabelName

حالا اگه اون مووی کلیپ لولش فرق کنه از parent استفاده می کنی یا ... همینطور برای کلاسهایی که ایمپورت می کنی و ازشون نمونه می گیری ... خوب حالا همه اینارو که خودت هم می دونی ... منطور شما اینه که اصولاً این کار غلطه ؟ یعنی حالا که من از Document Class استفاده می کنم باید MC خودمو هم با کد بکشم یا addChild کنم ؟ خوب قبول ، اما باید یه راهی هم واسه کاری که من می خوام بکنم باشه ... اگه یافتیش آمار بده ممنون .
 

++Hadi++

Active Member
سلام
یه مثال واسه ات آماده کردم که باید با cs4 باز کنی ...
اولا وقتی متغیرو در کلاس تعریف کردی ، باید با استفاده از constructor یا توابعی که با اون فراخوانی می شن بهش مقدار دهی (حتما ) کنی تا در تایم لاین اصلی مورد دسترسی قرار بگیرند .
در دسترسی به این متغیر ها هم در درون تایم لاین یکی از مووی کلیپ های صحنه اصلی که درگ شده اند یا با کد نویسی اونا رو ایجاد کردید باید از این دستور در تایم لاین اون مووی استفاده کنین فرض کن این کلاس ما باشه :
PHP:
package
{
    import flash.display.MovieClip;
    public class main extends MovieClip
    {
        public var variable:Object=new Object();
        public var Age:Number;
        public var Gender:Boolean;
        public var FatherName:String;
        public function main():void
        {
            variable.Name="Hadi";
            Age=26;
            FatherName="Masoud";
            OtherFunction();
        }
        public function OtherFunction():void
        {
            Gender=true;
        }
    }
}
و اینم چیزایی باشه که ما در تایم لاین اصلی سورسمون نوشتیم :
PHP:
trace(variable.Name);
trace(Age);
trace(Gender);
و این کد هم در داخل تایم لاین مووی کلیپی باشه که در صحنه درگ شده :
PHP:
trace(MovieClip(root).FatherName);
پس در خروجی عبارت زیر تریس می شه :
Hadi
26
true
Masoud
در مورد اون مورد استفاده از مووی کلیپ ها هم بگم که معمولا وقتی از کلاس اصلی راه انداز استفاده می کنند ، در مواقعی فقط در تایم لاین مووی کلیپ های مختلف دستور می نویسن که می خوان به سادگی کنترل اون مووی رو به دست بگیرن تا کد نویسی اون در داخل کلاس دیگه نیازی نباشه .
مثلا یه مثال ساده می خوای آلفای مووی کلیپ داخلی اون مووی کلیپ رو هی کم و زیاد کنی . خوب می تونی از داخل کلاس این کار رو انجام بدی ولی به راحتی در تایم لاین اون مووی کلیپ کد های کم و زیاد کردن متناوب آلفا رو می نویسی و دیگه فقط کافیه از طریق کلاس ، از اون نمونه بسازی و می بینی که آلفای اون هی کم و زیاد می شه .
در مورد ساخت مووی کلیپ ها هم بعضی کاربرای حرفه ای جهانی با کد نویسی drawing API کارایی رو می کنن که اصلا با interface فلش نمی شه اونا رو بصورت فیزیکی طراحی کرد .
ولی معمولا مووی کلیپ ها رو می سازی و اونا رو export for actionscript می کنی و با اون کلاست هی نمونه سازی و استفاده می کنی یا مثلا مایحتاجتو در صحنه درگ می کنی و بهشون اسم نمونه ای می دی و آلفاشونو صفر یا visible اونا رو false می کنی و در سناریوی کارت ، جایی که لازم باشه visible اونا و true و آلفاشونو به هر مقداری که خواستی زیاد می کنی و جریانات کارتون ادامه پیدا می کنه ...
در ضمن کلاس اصلی یا همون document class یعنی یکسان سازی و همپوشانی سورس اصلی شما (تایم لاین اصلی و stage ) با کلاس شما ...
و همینطور بهتره یه نظر به آموزش اکشن اسکریپت 3 از صفر بحث شی گرایی بندازین ...
مخصوصا در مورد بازیهای طراحی شده ...
بای...
 

پیوست ها

  • Access To Propertie In DocumentClass From TimeLine.rar
    6.5 کیلوبایت · بازدیدها: 7
آخرین ویرایش:

DaDaDooDoo

کاربر VIP
سلام ، هادی جان ممنون . مثل همیشه کمکم کردی . راستش من از همون دستوری که گفتی استفاده می کردم و ارور می داد چون من یادم رفنه بود ( یا شایدم بی دقتی ) اون متغیر رو پابلیک تعریف کنم . مشکل سر همون بود . پابلیکش کردم درست شد .
راستی بگو چجوری جبران کنم ، اینجا هی من سوال می کنم و هی تو جواب می دی هی من سوال می کنم و هی تو جواب می دی هی من سوال می کنم و هی تو جواب می دی هی من ... خلاصه تولدت یا جشن عروسیت دعوتم کن بیام برقصم شاید یکم جبران بشه ...:oops:
 

++Hadi++

Active Member
سلام مخلصم ... جون
راستی اسمتو نمی دونم ولی باشه د د دو دو ...
مخلصتم ...
بای...
 

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

بالا