Форум 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=202256)

vivado 05.07.2013 15:58

Убрать центровку объекта при перетаскивании
 
Всем привет,
Как убрать притягивание центра объекта к курсору?
Т.е. чтоб можно было взять объект, например, за край и перетащить его?

Код AS3:

//Перетаскивание
stage.addEventListener(MouseEvent.MOUSE_DOWN, funcOnMouseDown);
stage.addEventListener(MouseEvent.MOUSE_UP, funcOnMouseUp);
 
function funcOnMouseDown(e:MouseEvent):void
{
        stage.addEventListener(MouseEvent.MOUSE_MOVE, funcOnMouseMove);
}
 
function funcOnMouseMove(e:MouseEvent):void
{
                object.x = mouseX;
                object.y = mouseY;
}
 
function funcOnMouseUp(e:MouseEvent):void
{
        stage.removeEventListener(MouseEvent.MOUSE_MOVE, funcOnMouseMove);
}


Tails 05.07.2013 16:11

  • Записать координаты клика (смещение) относительно центра объекта в момент начала перетаскивания. При перетаскивании позицианировать объект к курсору мыши + сохранённое смещение.
  • Или использовать startDrag

chamele0n 05.07.2013 16:15

Цитата:

Сообщение от Tails (Сообщение 1140355)
  • Записать координаты клика (смещение) относительно центра объекта в момент начала перетаскивания. При перетаскивании позицианировать объект к курсору мыши + сохранённое смещение.
  • Или использовать startDrag

Код AS3:

import flash.display.MovieClip;
 
var obj:MovieClip = object;
 
obj.addEventListener(MouseEvent.MOUSE_DOWN, funcOnMouseDown);
stage.addEventListener(MouseEvent.MOUSE_UP, funcOnMouseUp);
 
var lastX:Number = 0;
var lastY:Number = 0;
 
 
 
function funcOnMouseDown(e:MouseEvent):void
{
        lastX = obj.mouseX;
        lastY = obj.mouseY;
        stage.addEventListener(MouseEvent.MOUSE_MOVE, funcOnMouseMove);
}
 
function funcOnMouseMove(e:MouseEvent):void
{
                object.x = mouseX - lastX;
                object.y = mouseY - lastY;
}
 
function funcOnMouseUp(e:MouseEvent):void
{
        stage.removeEventListener(MouseEvent.MOUSE_MOVE, funcOnMouseMove);
}


Akopalipsis 05.07.2013 16:30

chamele0n я очень люблю смотреть ссылки в подписях..И я не мог не обратить внимание ( просто сейчас сам как раз это учу ), у Вас везде ошибки.
По первой ссылке:
Цитата:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
at chamele0n.scene::Controller/get render()[W:\flash\away3d\chamele0n\src\chamele0n\scene\Controller.as:132]
at chamele0n_away3d/handleEnterFrame()[W:\flash\away3d\chamele0n\src\chamele0n_away3d.as:177]
по второй:
Цитата:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
at chamele0n.character::ccModel/onMouseDown()[W:\flash\away3d\League\src\chamele0n\character\ccModel.as:311]
и по второй ссылке - просто ВАЩЕ чудо!)

chamele0n 05.07.2013 16:39

можно же было написать в приват, зачем офтопить

vivado 05.07.2013 16:44

Цитата:

Сообщение от Tails (Сообщение 1140355)
  • Записать координаты клика (смещение) относительно центра объекта в момент начала перетаскивания. При перетаскивании позицианировать объект к курсору мыши + сохранённое смещение.
  • Или использовать startDrag

Спасибо, про startDrag() совсем забыл - легких путей не ищу уже )))


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

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