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

شروع موضوع توسط yaa110 ‏25 ژانویه 2013 در انجمن برنامه فلش Flash

کلمات کلیدی:
  1. yaa110

    yaa110 کاربر فعال

    ارسال‌ها:
    206
    تشکر شده:
    503
    امتیاز دستاورد:
    16
    دانلود مثال: http://flashcenter.ir/blog/?p=345

    گاهی اوقات نیاز دارید که هر دو حالت CLICK و MOUSE_UP را برای یک Object داشته باشید به طوریکه این دو به صورت متفاوتی عمل کنند. در این حالت نیاز دارید که بین این دو حالت به نحوی تمایز ایجاد کنید. به مثال زیر توجه کنید:
    کد (Text):
    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 حالت های مختلف را از هم جدا کنیم. برای این کار مراحل زیر را دنبال کنید:
    کد (Text):
    [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
     
    آخرین ویرایش: ‏25 ژانویه 2013
    نوشته شده توسط yaa110 در ‏25 ژانویه 2013
    FLV، mohammad.sub7 و ++Hadi++ از این ارسال تشکر کرده اند.

به اشتراک بگذارید