رویداد mouse_out برای دکمه

rahnama66

New Member
سلام
من یک مشکلی دارم:
دکمه های عادی در فلش رویداد out ندارند. چصوری میشه واسشون تعریف کرد؟
من یک movieclip ساختم و براش action نوشتم یعنی از listenerها استفاده کردم ولی نتونستم
یک مثال ساده برای اینکه منطورم رو بفهمین:
وقتی موس میره رو دکمه یواش یواش رنگش روشن بشه (یه movieclip)
وقتی موس از روش میره کنار(out) دکمه یواش یواش رنگش تیره بشه (یه movieclip)
 

++Hadi++

Active Member
MOUSE_OUT رویدادی هست که وقتی موس در حالت عادی و بدون فشار دکمه ای خاص ، از روی شیئی خارج می شه اون اتفاق می افته .
می تونی به داخل مووی کلیپی خاص بری و واسش فریم تعریف کنی مثلا فریم 1 استپشه و حالت عادیشه . فریم 2 به بعد حالت over اون هست و این حالت انیمیشنی تا مثلا فریم 10 ادامه داره . بعد در فرم 10 استپ شده . فغریم 11 به بعد هم مثلا حالت out اجرا می شه و بعد دوباره به فریم 1 بر می گرده (آخر آخرشو stop نذاشتی ) ..
خوب در داخل این مووی کلیپ (دو بار کلیک روی این مووی کلیپ) یه لایه کلی باز می کنی و روی اولین فریمش (جوری که دستورات فریم های بعدی رو هم شامل بشه )
یه shape دکمه ای درست می کنی و اونو select می کنی و F8 رو رو اون می زنی و پنجره convert to symbol ظاهر می شه و نوع MovieClip رو انتخاب می کنی و در داخل اون ، روی فریم های 2 و 10 و مثلا 20 در تایم لاین ، F6 رو می زنی تا به این فریم ها ، انیمیشن بدی ،
می نویسی :
PHP:
this.buttonMode=true;
this.addEventListener(MouseEvent.MOUSE_OVER,overfun);
this.addEventListener(MouseEvent.MOUSE_OUT,outFun);
function overFun(evt:MouseEvent):void
{
   gotoAndPlay(2);
}
function outFun(evt:MouseEvent):void
{
   gotoAndPlay(11);
}

پس وقتی دکمه شما (که Button نیست بلکه movieclip هست ) در حالت عادی هست ، در فریم اول استپ هست و وقتی به حالت over در اومد ، از فریم دومش پلی می شه تا مثلا به فرمی 10 برسه و استپ شه و وقتی out شد ، ، از فریم 11 به بعد پلی می شه و بر می گرده به اولین فریم .
این دستورات به اکشن اسکریپت 3 هست و باید فایل از نوع اکشن 3 باز کنی .buttonMode هم حالت دست شدن موس رو دکمه تونو فعال می کنه .
بای...
 

rahnama66

New Member
ممنون از راهنمایی شما
کارهایی که گفتین انجام میدم بازم اگه سوالی داشتم می پرسم
 

rahnama66

New Member
[FONT=&quot]تا اونجایی که من فهمیدم و تونستم بنویسم برای هر دکمه باید جدا کد بنویسم و timeline شلوغ میشه
[/FONT]
راهی هست که یک movieclip بسازم و از آن استفاده کنم؟ من کدی که نوشتم و جواب نمیده میزارم شاید منظورم رو بفهمید:
کد:
btn.addEventListener(MouseEvent.MOUSE_OVER,tabeh);
btn.addEventListener(MouseEvent.MOUSE_OUT,tabeh1);
var over:MovieClip = new asd();
var out:MovieClip = new qwe();
function tabeh (evt:MouseEvent):void{
    removeChild(out);
    addChild(over);
    over.x=btn.x;
    over.y=btn.y;
}
function tabeh1 (evt:MouseEvent):void{
    removeChild(over);
    addChild(out);
    out.x=btn.x;
    out.y=btn.y;

}
 

++Hadi++

Active Member
عزیزم گفتم که باید دستوراتی رو که نوشتم رو داخل مووی کلیپ بنویسی یعنی فرض کن مووی دکمه رو به صحنه درگ کردی بعد دو بار روی مووی کلیپ کلیک می کنی و در درونش اون کد ها رو می نویسی . بعد دیگه نیازی به اضافه کاری نیست . شما با this داری به مووی کلیپی که در اون هستین اشاره می کنین . بعد شما اگه هزار تا هم مووی کلیپ در صحنه داشته باشین دیگه دستوراتتون رو که فقط 1 بار داخل مووی کلیپ اصلی نوشتین و اونو رو همشون اعمال کردین .
بای...
 
این راه حل یه مشکل کوچیک داره و اونم اینه که اگه موس خیلی سریع روی دکمه رد بشه دکمه سرجاش قفل میکنه !
من می خواستم اگه امکانش هست راهی به من نشون بدین که به دکمه بگه اگه موس اور شد در راستای تایم لاین پلی کنه و اگه موس اوت شد از همون فریمی که در اون قرار داره برخلاف جهت تایم لاین حرکت کنه تا به فریم 1 برشه.

ممنون
 

++Hadi++

Active Member
دستور برعکس شدن play در اکشن 3 این هست :
PHP:
addEventListener(Event.ENTER_FRAME,reverse);
function reverse(evt:Event):void
{
   if(MC.currentFrame!=1)
    {
      MC.preveFrame;
    }
    else
    {
      removeEventListener(Event.ENTER_FRAME,reverse);
    }
}
بای...
 

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

بالا