Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   растягивание вершин мувиклипа мышкой - тормозит (http://www.flasher.ru/forum/showthread.php?t=138488)

djyamato 09.04.2010 03:26

растягивание вершин мувиклипа мышкой startDrag() - движение рывками
 
Вложений: 2
здравствуйте
подскажите пожалуйста причину торможения этого скрипта
что я неправильно делаю ?

Код AS3:

package {
        import flash.display.MovieClip;
        import flash.events.*;
 
        public class Selector extends MovieClip{
                private var ThisObj;
                private var hAreA;
                private var sTage;
                private var clicked;
                private var CurrentCommandPoint;
                private var DraggingObjData:Object;
                private var CounstructionDragging:Boolean;
 
                public function Selector(){
                        ThisObj=this;
                        CounstructionDragging=false;
                        hAreA=this.hArea;
                        sTage=this.parent.stage;
                        hAreA.addEventListener("mouseDown",mouseDownHandler);
                        hAreA.addEventListener("mouseUp",mouseUpHandler);
 
                        cp1.addEventListener("mouseDown",CP1_mouseDownHandler);
                        cp2.addEventListener("mouseDown",CP2_mouseDownHandler);
                        cp3.addEventListener("mouseDown",CP3_mouseDownHandler);
                        cp4.addEventListener("mouseDown",CP4_mouseDownHandler);
                        this.parent.stage.addEventListener(MouseEvent.MOUSE_UP, captureMouseUp);
                        this.parent.stage.addEventListener(MouseEvent.MOUSE_UP, captureMouseUp, true);
 
                }
                private function mouseDownHandler(e:MouseEvent){;
                        CounstructionDragging=true;
                        ThisObj.startDrag();
                }
                private function mouseUpHandler(e:MouseEvent){
                        CounstructionDragging=false;
                        ThisObj.stopDrag();
                }
                private function CP1_mouseDownHandler(e:MouseEvent){
                        clicked = cp1;
                        CurrentCommandPoint=cp1;
                        DraggingObjData=new Object();
                        DraggingObjData.targ=cp1;
                        DraggingObjData.name="cp1";
                        DraggingObjData.stat=true;
                        DraggingObjData.targ.startDrag()
                        addEventListener("mouseMove",commPointMouseMoveHandler);
                }
                private function CP2_mouseDownHandler(e:MouseEvent){
                        clicked = cp2;
                        CurrentCommandPoint=cp2;
                        DraggingObjData=new Object();
                        DraggingObjData.targ=cp2;
                        DraggingObjData.name="cp2";
                        DraggingObjData.stat=true;
                        DraggingObjData.targ.startDrag();
                        addEventListener("mouseMove",commPointMouseMoveHandler);
                }
                private function CP3_mouseDownHandler(e:MouseEvent){
                        clicked = cp3;
                        CurrentCommandPoint=cp3;
                        DraggingObjData=new Object();
                        DraggingObjData.targ=cp3;
                        DraggingObjData.name="cp3";
                        DraggingObjData.stat=true;
                        DraggingObjData.targ.startDrag();
                        addEventListener("mouseMove",commPointMouseMoveHandler);
                }
                private function CP4_mouseDownHandler(e:MouseEvent){
                        clicked = cp4;
                        CurrentCommandPoint=cp4;
                        DraggingObjData=new Object();
                        DraggingObjData.targ=cp4;
                        DraggingObjData.name="cp4";
                        DraggingObjData.stat=true;
                        DraggingObjData.targ.startDrag();
                        addEventListener("mouseMove",commPointMouseMoveHandler);
                }
                private function mouseUp(evt:MouseEvent):void {
                        DraggingObjData.stat=false;
                        DraggingObjData.targ.stopDrag();
                        DraggingObjData=null;
                        removeEventListener("mouseMove",commPointMouseMoveHandler);
                        ThisObj.parent.TTT.text="";
                }
                private function mouseUpOutside(evt:MouseEvent):void {
                        DraggingObjData.stat=false;
                        DraggingObjData.targ.stopDrag();
                        DraggingObjData=null;
                        removeEventListener("mouseMove",commPointMouseMoveHandler);
                        ThisObj.parent.TTT.text="";
                }
                private function commPointMouseMoveHandler(e:MouseEvent){
                        //trace("mouseMove");
                        ThisObj.parent.TTT.text="mouseMove";
                        switch(DraggingObjData.name){
                                case "cp1":
                                        cp2.y=cp1.y
                                        cp4.x=cp1.x;
                                break;
                                case "cp2":
                                        cp1.y=cp2.y
                                        cp3.x=cp2.x;
                                break;
                                case "cp3":
                                        cp4.y=cp3.y
                                        cp2.x=cp3.x;
                                break;
                                case "cp4":
                                        cp3.y=cp4.y
                                        cp1.x=cp4.x;
                                break;
                        }
                        hArea.x=cp1.x;
                        hArea.y=cp1.y;
                        hArea.width=Math.abs(cp3.x-cp1.x);
                        hArea.height=Math.abs(cp3.y-cp1.y);
                        e.updateAfterEvent();
                }
                private function captureMouseUp(evt:MouseEvent):void {
                        //trace("DraggingObjData="+DraggingObjData);
                        if(DraggingObjData!=null){
                                if (evt.eventPhase == EventPhase.BUBBLING_PHASE) return;
                            // убедимся, что кликнули по нужному нам объекту
                                    if (clicked == CurrentCommandPoint) {
                                              clicked = null; // очищаем ссылку для следующих кликов
                                        var target:MovieClip = evt.target as MovieClip;
                                        // отпустили кнопку над circle
                                        if (target == CurrentCommandPoint) {
                                            mouseUp(evt);
                                        }else{
                                    // отпустили кнопку мыши вне circle
                                    mouseUpOutside(evt);
                                }
                                  }
                        }
 
                }
        }
}



Часовой пояс GMT +4, время: 23:30.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.