سوال از حرفه ای ها

AMINMIX

Member
سلام
من می خوام توی کلاسی که تعریف کردم(Harekat) از متغیری که داخل کلاس تعریف شده(myVar) داخل onEnterFrame که داخل یکی از فانکشن های کلاسم(Shetab) هست استفاده کنم اما وقتی که خروجی می گیرم می نویسه undefined در صورتی که اگر این متغیر رو داخل همون فانکشن Shetab ولی خارج از onEnterframe فراخوانی کنیم درست کار می کنه و Hello چاپ می شه.
کد:
class Harekat extends MovieClip {
	private var myVar:String="Hello";
	public function Shetab():Void {
		_root.onEnterFrame = function() {
			trace(myVar); // output is undefined
			};
	}

}
اگه کسی می دونه مشکل کجاست لطفاً این فایلی رو که گذاشتم اصلاح کنه و توی همین تاپیک بگذاره . من که دیگه عقلم به جایی نمی رسه، ممنون.
 

پیوست ها

  • myClass.zip
    8.6 کیلوبایت · بازدیدها: 11
آخرین ویرایش:

arashtavoosi

Active Member
خوب بخاطر اینکه onEnterFrame رو برای _root تعریف کردی در حالی که myVar برای smile هست پس اگه می خوای بهش دسترسی داشته باشی باید مسیرش رو درست بنویسی
PHP:
class Harekat extends MovieClip {
	private var myVar:String = "Hello";
	public function Shetab():Void {
		_root.onEnterFrame = function() {
			trace(_root["smile"].myVar);
		};
	}

}
 

AMINMIX

Member
نظر شما کاملاً درسته ، اما من توی کلاس از کجا باید بدونم که قراره اسم آبجکت چی باشه؟ اصلاً شاید چند تا آبجکت از این کلاس تعریف شه.
 

arashtavoosi

Active Member
شما می تونید از خود onEnterFrame این کلاس استفاده کنید البته با ساختن یک نمونه از این کلاس با new ،رویداد onEnterFrame اجرا نمی شه. یعنی حتما یک symbol با این class ی (harkat) که نوشتید وجود داشته باشه. و اون مووی کلیپ instantiate بشه تا این رویداد اتفاق بیفته. در ضمن در کلاس به صورت معمولی نمی شه هندلر onEnterFrame رو تعریف کرد(this.onEnterFrame=function قابل قبول نیست). برای هندل کردن این رویدار باید در کلاس بنویسید.
PHP:
function onEnterFrame () {
}
 

AMINMIX

Member
یه مشکل هست ، وقتی onEnterFrame رو به این صورتی که شما گفتی می نویسم کار نمی کنه
اگه براتون ممکنه یه نمونه از کلاسیو که به این صورت درست شده و کار می کنه اینجا آپلود کنید .
 
بالا