اجرای یک فانکشن پابلیک از یک کلاس با استفاده از کد

Member
سلام
من تازه وارد مبحث کلاس ها شدم و دارم سعی میکنم کارهای روتینم رو با استفاده از کلاس ها ساده کنم و به مشکل کوچکی بر خوردم.
چه جوری میتونم با استفاده از کد یک فانکشن رو از یک کلاس اجرا کنم؟
و چه جوری کاری کنم که اون فانکشن خود به خود روی مووی کلیپ مربوطه اعمال نشه؟
البته سرچ کردم ولی مباحثی که پیدا کردم خیلی از سطح من بالاتر بود
PHP:
package {
    import flash.display.MovieClip;
    public class Fader extends MovieClip {
        public var fade:Number;
        public function Fader() {
            if (fade==1) {
                this.alpha-=.5;
            }
        }
    }
}
اینم محتویات کلاس من. البته سعی کردم که یه متغییر تعریف کنم و اون رو از داخل تایم لاین تغییر بدم ولی همون کار رو هم نتونستم
با تشکر
 

JavidFlasher

کاربر فعال
سلامcتابع شما خود به خود اعمال ميشه چون که تابع کانسترکتور يا سازندست واسه اينکه اعمال نشه نبايدتابع هم اسم کلاستون تعريف کنيد.
PHP:
var _fade:Fade=new Fade();_fade.fun1();
اينجا تابعfun1از کلاس فراخواني ميشه.
 
آخرین ویرایش:

Member
ممنون از جواب ولی مشکل من اینه که نمیتونم این فانکشن رو توی فلشم فراخوانی کنم
اگر اسم رو Fader بذارم خود به خود روی هر آبجت مرتبط با این کلاس اجرا میشه وای اگر اسم رو متفاوت بذارم چه جوری باید ازش استفاده کنم؟ متغیر fade اضافی بود اصب مطب فانکشنیه که alpha رو کم می کنه
PHP:
package {
    import flash.display.MovieClip;
    public class Fader extends MovieClip {
        public function Fader() {
            this.alpha-=.5;
        }

    }
}
ممنون میشم اگر ساده ترین راه رو بهم نشون بدیدچون تازه کارم و هدفم یادگیری پایه هاست
 

armanbm

کاربر VIP
میشه دقیقا توضیح بدین چی کار میخواین بکنین؟
ببینین یکم سر اصل مفهوم کلاس بگیم که وقتی برای یک مویی کلیپ یک کلاس معین میکنیم که از کلاس مویی کلیپ ها باید مشتق بشه، در حقیقت میخواهیم یک سری خواص رو با این مویی کلیپی که ساختیم اضافه کنیم.
نکته اینکه تمام نمونه هایی که از این مویی کلیپی که تو کتاب خونه براش کلاس در نظر گرفته ایم ساخته شود، از همین کلاس استفاده میکنند.

خوب همونطور که میدونین در ساختار کلاس ما یک تابع هم نام با اسم کلاس وجود داره که بهش میگین تابع سازنده. و فرقش با سایر تابع ها اینه که به محض ساخته شدن یک نمونه از این کلاس، تابع سازنده خود به خود فراخوانی میشه.
حالا اگه یک تابع خودمون جدید بسازیم مثل همون که جاوید جان گفتند، این تابع تا فراخوانی نشه عملیات خودش رو انجام نمیده.
حالا شما فرمودین که این تابع رو نمیتونین فراخوانی کنین.
برا پاسخ به این حالت باید دقیقا شرایط رو ذکر کنین.
اما چند نکته رو میگم بلکه مفید باشه:
1. اگه در اکشن تایم لاین میخواین تابع رو فراخونی کنین حتما باید یک نمونه از اون مویی کلیپ در همون فریم باشه و یک instanceName داشته باشه و شما بع این صورت تابع رو فراخونی مکنین:
instanceName.fun1();

اما اگه در داخل کلاس اصلی یا همون documentClass یا اسم دیگش MainClass دارین این تابع رو فراخونی بیکنین باید یادتون باشه که حتما یک نمونه از اون کلاس مویی کلیپ ساخته و new کرده باشین.


و اگه داخل کلاس دیگری میخواین فراخونی کنین باید اون کلاس به این کلاس شما دسترسی داشته باشه. مثلا به عنوان پارامتر ورودی اش بگیرد و....


چون گفتین قصد یاد گیری دارید من خودم رو محدود به پاسخ سوال نکردم. امیدوارم که از حوصله خارج نشده باشد.
در پایان بگم تو فلش مشکلات مشابه به دلایل مختلف اتفاق می افتد . پس اگر پاسخ خود را در این پست نگرفته اید، لطفا دقیقا مشکل را با نوشتن ERROR برنامه بیان کنین و بگین کجا میخواین این اتفاق بیفته؟

به امید او.
یا حق.
 
  • Like
Reactions:

++Hadi++

Active Member
آموزش کلاس نویسی رو در آموزش اکشن 3 از صفر که تو امضامه دادم . فصل چهارم .
همپوشانی مووی کلیپ ها منظورتونه پس یه کلاس مثلا به اسم MCC در کنار سورستون درست می کنین و دستورات مربوطه رو می دین و بعد یه مووی کلیپ رو در فلش بوجود می یلرین و با همون اسم export می کنین . در نتیجه فلش اون مووی کلیپ رو با دستورات اون کلاس merge می کنه و دستورات رو از داخل کلاس می دین و همه چی رو اون مووی کلیپ اعمال می شه . حتما به آموزش من سر بزن .
بای...
 
  • Like
Reactions:

Member
آرمان جان زدی تو خال این دقیاً همون توضیحاتی بود که من نیاز داشتم تا فانکشن ها رو فرا خوانی کنم
PHP:
package {
    import flash.display.MovieClip;
    public class Fader extends MovieClip {
        public function Fader() {
        }
        public function doit() {
            this.alpha-=.5;
        }
    }


}

PHP:
mc_mc.doit();

هادی جان من آموزشای شما رو دنبال کردم ولی مثال هاتون خیلی سخت بود متوجه نشدم
حالا کمی پیشرفت کردم دنبال میکنم
 

armanbm

کاربر VIP
خوشحالم prs جان که میگی موضوع همون هست.
خوب الان با اون توضوحیات مشکل حل شد؟
اگه نه باید از fader قبل از استفاده یک نوع بسازین:
کد:
var mc_mc:fader = new fader();
mc_mc.doit();

که احتمال میدوم خودتون همین کار رو کردین. الان باید جواب بده ، اگه نمیده حتما ارور مربوطه هم بنویسین.

در پناه حق.
 

Member
در ادامه کارم چند تا سوال دارم
1-چه جوری میتونم به فانکشنم مقدار بدم؟مثلاً برای 25% آلفا
PHP:
mc_mc.doit(25);
2- آیا میتونم از دسنوری برای ایجاد مکس در اجرای یک لوپ استفاده کنم؟مثلا
PHP:
while (fad>0) {
    this.alpha=fad;
    fad-=10;
    pause(10);
}
 

++Hadi++

Active Member
1-
PHP:
myMC.alpha=0.5;
آلفا بین 0 تا 1 (عدد اعشاری ) هست .
2-شما دستور رو می دین (که الان باید اجرا شه ) و بعد بلافاصله این دستور رو می نویسین :
PHP:
setTimeout(NewFunctionName,500);
دستور setTimeout ، تابعی به اسم مثلا NewFunctionName رو بعد از مثلا 500 میلی ثانیه اجرا می کنه . و همونطوری که می دونید هر ثانیه ، 1000 میلی ثانیه هست .
موفق باشید .
 

Member
ممنون از جواب ولی من منظورم این بود که مقدار رو پاس بدم به فانکشن داخل کلاسم
 

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

بالا