تابع رفرش كننده صفحه

iman1981

Member
آيا فلش تابعي براي رفرش كردن صفحه داره؟
مثلا اگه من توي يه حلقه محل يه مربع رو صفحه يكي يكي زياد كنم چطوري مي تونم حركتشو ببينم روي صفحه چون تا وقتي كه وارد يه فريم ديگه نشه صفحه رفرش نمي شه و بعد از حلقه يهو مربع ميپره به محل آخر اين يه مثال بود مي خوام ببينم ميشه بدون اينكه مجبور باشم از فريم برم تو يه فرم ديگه صفحه را رفرش كرد.
 

phoenix

Member
فقط در زبانهاي به اصطلاح MultiThread هست كه داخل بك حلقه ميشه عمليات گرافيكي انجام داد. علت اون هم اينه در اين زبانها ميشه يك thread را براي مدتي يا كلا متوقف كرد ولي در ActionScript كه يك زبان multithreaded نيست يك حلقه به طور كامل و در همان فريم اجرا مي شود سپس فريم بعدي. بنابراين در اينجا event model فلش هست كه به كار مي ايد:

براي مثال onEnterFrame يك event مختص MovieClip هاست كه بدون نياز به حركت از يك فريم به بعدي عملياتي را در فواصل زماني شبيه گذر 2 فريم انجام مي دهد:

فرض كنيم mc_ يك MovieClip در صفحه باشد:
کد:
_mc.onEnterFrame = function()
{
	if(this._x < 200) this._x += 5;
	else delete this.onEnterFrame;
};

در هر حال onEnterFrame كاملا وابسته به Frame Rate صفحه است و اگر FPS را زياد كنيد سرعت اجراي آن بيشتر خواهد شد. براي ايجاد انيميشن هاي مستقل از FPS مي توان از setInterval استفاده كرد.

تا اينجا جواب سوال شما، ولي فلش تابعي هم براي refresh كردن صفحه دارد اين تابع updateAfterEvent نام دارد و فقط در قلمرو Clip Event ها عمل مي كند.
مثلا event onMouseMove با هر حركت Mouse توسط فلش detect مي شود ولي صفحه نمايش در هر فريم update مي شود (حتي اگر انيميشني وجود نداشته باشد) بنابراين با استفاده از updateAfterEvent در قلمرو handler اين event مي توان صفحه را refresh كرد:

کد:
this.onMouseMove = function()
{
	_mc._x = _xmouse;
	_mc._y = _ymouse;
	updateAfterEvent();
};

يك بار بدون updateAfterEvent و يك بار با آن اجرا كنيد تا متوجه تفاوت بشويد
 

iman1981

Member
ممنون مرسي phonix جان .
من زياد با flash كار نكردم براي همينه زياد تابعهاي اونو نميدونم ولي توي دايركتور اين كار براحتي انجام ميشد با تابع ()updatestage براي همين گفتم شايد توي فلشم همچين تابعي باشه.
 

iman1981

Member
phonix جان اگه ميشه يكم در مورد اين كد توضيح بدي
this.onMouseMove = function()
{
_mc._x = _xmouse;
_mc._y = _ymouse;
updateAfterEvent();
};
من نتونستم بفهمم اين كد چه كاري ميكنه يعني اون خط اولش اينجا يه تابع تعريف كردي اگه آره تفاوتش با تعريف تابع بصورت عادي چيه؟
 

fafa^mx

Member
اين تابعه براي يك ايونت تعريف شده!يعني در موقعي كه شما موس رو جابجا ميكنيد اين تابع اجرا ميشه!
updateAfterEvent هم وظيفه اين رو داره كه پس اتفاغ هر ايونت متغير ها رو يك بار براي به رور شدن چك كنه!مثلا اينجا بعد از جابجاي موس _xmouse و _ymouse به روز ميشن!
 

iman1981

Member
اگه يه تابع تعريف كنم بعد توي ايونت اونو صدا بزنم مثل همينه ديگه؟
 

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

بالا