| 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);
}
}
}
}
}
}
|