Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.04.2010, 03:26
djyamato вне форума Посмотреть профиль Отправить личное сообщение для djyamato Посетить домашнюю страницу djyamato Найти все сообщения от djyamato
  № 1  
Ответить с цитированием
djyamato
 
Аватар для djyamato

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
По умолчанию растягивание вершин мувиклипа мышкой startDrag() - движение рывками

здравствуйте
подскажите пожалуйста причину торможения этого скрипта
что я неправильно делаю ?

Код 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);
        			}
   				}
			}
 
		}
	}
}
Вложения
Тип файла: zip rastagivalka.zip (7.6 Кб, 59 просмотров)
Тип файла: zip Selector.zip (1.2 Кб, 50 просмотров)


Последний раз редактировалось djyamato; 09.04.2010 в 06:09.
Создать новую тему Ответ Часовой пояс GMT +4, время: 19:57.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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