ایجاد تمایز بین click و mouse_up (آموزش)

yaa110

کاربر فعال
دانلود مثال: http://flashcenter.ir/blog/?p=345

گاهی اوقات نیاز دارید که هر دو حالت CLICK و MOUSE_UP را برای یک Object داشته باشید به طوریکه این دو به صورت متفاوتی عمل کنند. در این حالت نیاز دارید که بین این دو حالت به نحوی تمایز ایجاد کنید. به مثال زیر توجه کنید:
کد:
import flash.events.MouseEvent;

stage.addEventListener(MouseEvent.CLICK, function() {
    trace("Click"); 
});


stage.addEventListener(MouseEvent.MOUSE_UP, function() {
    trace("Up"); 
});


در این مثال درصورتی که روی stage کلیک کنید هر دو عبارت "Click" و "Up" برای شما trace خواهد شد. برای رفع این مشکل باتوجه به هدف شما ترفند خاصی مورد نیاز است. در ادامه برای مثال یک هدف شرح داده شده و روش رفع مشکل نیز توضیح داده می شود.مثال: درصورتی که کاربر روی Object کلیک کرد یک پیغام trace شود. همچنین کاربر بتواند Object را حرکت بدهد و بعد از برداشتن دست از روی کلید ماوس، حرکت متوقف شود و دستور کلیک اجرا نشود.راه حل: در این حالت ممکن است پینهاد دهید که می توانیم رویداد MOUSE_UP را برای stage تعریف کنیم نه برای Object تا تعارضی بین MOUSE_UP و CLICK به وجود نیاید. در این صورت تنها درحالتی که کاربر که کلید ماوس را در محدوده ای خارج از Object رها کند، مشکلی رخ نخواهد داد. بنابراین بهتر است که به کمک رویداد MOUSE_MOVE حالت های مختلف را از هم جدا کنیم. برای این کار مراحل زیر را دنبال کنید:
کد:
[COLOR=#222222][FONT=Tahoma]import flash.events.MouseEvent;
[/FONT][/COLOR]
import flash.events.Event;


my_mc.addEventListener(MouseEvent.MOUSE_DOWN, resolve_conflict);


function resolve_conflict(e:MouseEvent):void {
    my_mc.addEventListener("click", onClick);
    my_mc.addEventListener(MouseEvent.MOUSE_MOVE, start_drag);
}


function onClick(e:Event):void {
    my_mc.removeEventListener("click", onClick);
    my_mc.removeEventListener(MouseEvent.MOUSE_MOVE, start_drag);
    trace("Clicked");
}


function start_drag(e:MouseEvent):void {
    my_mc.removeEventListener("click", onClick);
    my_mc.removeEventListener(MouseEvent.MOUSE_MOVE, start_drag);
    stage.addEventListener(MouseEvent.MOUSE_UP, stop_drag);
    my_mc.startDrag();
}


function stop_drag(e:MouseEvent):void {
    stage.removeEventListener(MouseEvent.MOUSE_UP, stop_drag);
    my_mc.stopDrag();
[COLOR=#222222][FONT=Tahoma]}[/FONT][/COLOR]

توضیحات بیشتر: http://flashcenter.ir/blog/?p=345
 
آخرین ویرایش:

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

بالا