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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.04.2010, 14:50
Sorium вне форума Посмотреть профиль Отправить личное сообщение для Sorium Найти все сообщения от Sorium
  № 1  
Ответить с цитированием
Sorium

Регистрация: Mar 2010
Сообщений: 15
По умолчанию Границы при функции drag

Добрый день.

Для перетаскивания изображения по рабочему простраству я использую:

Код AS3:
t01.addEventListener(MouseEvent.MOUSE_DOWN, drag)
t01.addEventListener(MouseEvent.MOUSE_UP, drop)
 
function drag(event:MouseEvent):void {
	event.target.startDrag();
}
function drop(event:MouseEvent):void {
	event.target.stopDrag();
}
как сделать чтобы при перетаскивании мувиклипа t01 который больше рабочего пространства его левая граница не пертягивалась дальше левой границы рабочего пространства (тоесть, если я перетягиваю мувиклип вправо, то при достижении его левой стороной левой границы экрана дальше этот мувиклип вправо больше нельзя было бы перетянуть), ну и соответсвенно другие стороны также.

Заранее благодарен

Старый 06.04.2010, 15:13
dmitriev вне форума Посмотреть профиль Отправить личное сообщение для dmitriev Найти все сообщения от dmitriev
  № 2  
Ответить с цитированием
dmitriev
 
Аватар для dmitriev

Регистрация: Jun 2007
Адрес: Челябинск
Сообщений: 303
Отправить сообщение для dmitriev с помощью ICQ
Заходим в хелп и видим:

Код AS3:
public function startDrag(lockCenter:Boolean = false, bounds:Rectangle = null):void
lockCenter:Boolean (default = false) — Определяет, блокируется ли перетаскиваемый спрайт по центру положения мыши (true) или по точке, на которой впервые щелкнул мышью пользователь (false).

bounds:Rectangle (default = null) — Значение относительно координат родительского объекта Sprite, задающее для него закрепленный прямоугольник.
__________________
O God! The Aftermath.

Старый 06.04.2010, 17:21
Sorium вне форума Посмотреть профиль Отправить личное сообщение для Sorium Найти все сообщения от Sorium
  № 3  
Ответить с цитированием
Sorium

Регистрация: Mar 2010
Сообщений: 15
Честно говоря, так и не понял, как с помошью показанного кода реализовать задуманое. Может кто-нибудь еще что-то подскажет?

Старый 06.04.2010, 18:41
Hidest вне форума Посмотреть профиль Отправить личное сообщение для Hidest Найти все сообщения от Hidest
  № 4  
Ответить с цитированием
Hidest
 
Аватар для Hidest

Регистрация: Jun 2006
Адрес: Москва
Сообщений: 461
bounds не подойдет, так как это область, внутри которой должен перетаскиваться клип... У человека же наоборот - клип больше области флешки...

Вам надо просто отслеживать координаты по ENTER_FRAME, и следить, чтобы координата x была всегда меньше 0. Если стала больше - устанавливаем в ноль. Аналогично со всеми остальными сторонами.

Старый 06.04.2010, 19:21
dmitriev вне форума Посмотреть профиль Отправить личное сообщение для dmitriev Найти все сообщения от dmitriev
  № 5  
Ответить с цитированием
dmitriev
 
Аватар для dmitriev

Регистрация: Jun 2007
Адрес: Челябинск
Сообщений: 303
Отправить сообщение для dmitriev с помощью ICQ
с чего это не подойдёт? Просто координаты у Rectangle будут отрицательные.
__________________
O God! The Aftermath.

Старый 06.04.2010, 19:25
random13 вне форума Посмотреть профиль Отправить личное сообщение для random13 Найти все сообщения от random13
  № 6  
Ответить с цитированием
random13
 
Аватар для random13

Регистрация: Oct 2006
Адрес: Москва
Сообщений: 889
Цитата:
Сообщение от dmitriev Посмотреть сообщение
с чего это не подойдёт? Просто координаты у Rectangle будут отрицательные.
ну вобщем то да) и нет проблем, хотя я вообще больше не пользуюсь startDrag(), глючная функция
__________________
Коллекционирую чужие ActionScript Блоги

Старый 06.04.2010, 19:43
CrazyFlasher вне форума Посмотреть профиль Отправить личное сообщение для CrazyFlasher Найти все сообщения от CrazyFlasher
  № 7  
Ответить с цитированием
CrazyFlasher
 
Аватар для CrazyFlasher

Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,181
Цитата:
глючная функция
пример
__________________
Flash Developer
Папа TDP4 Team Battle

Старый 06.04.2010, 19:51
Hidest вне форума Посмотреть профиль Отправить личное сообщение для Hidest Найти все сообщения от Hidest
  № 8  
Ответить с цитированием
Hidest
 
Аватар для Hidest

Регистрация: Jun 2006
Адрес: Москва
Сообщений: 461
Ну так эти координаты все равно надо вычислить исходя из ширины таскаемого объекта! Так что я не вижу сильной разницы, делать это вручную, или считать искомый ректангл.

Старый 06.04.2010, 20:13
dmitriev вне форума Посмотреть профиль Отправить личное сообщение для dmitriev Найти все сообщения от dmitriev
  № 9  
Ответить с цитированием
dmitriev
 
Аватар для dmitriev

Регистрация: Jun 2007
Адрес: Челябинск
Сообщений: 303
Отправить сообщение для dmitriev с помощью ICQ
Цитата:
Ну так эти координаты все равно надо вычислить исходя из ширины таскаемого объекта! Так что я не вижу сильной разницы, делать это вручную, или считать искомый ректангл.
Представим что bigClip это наше изображение, которое больше сцены. За границы возмём прямоугольник stage.

Код AS3:
var rectX:Number = stage.stageWidth - bigClip.width;
var rectY:Number = stage.stageHeight - bigClip.height;
var rectWidth:Number = bigClip.width - stage.stageWidth;
var rectHeight:Number = bigClip.height - stage.stageHeight;
 
var bounds:Rectangle = new Rectangle(rectX, rectY, rectWidth, rectHeight);
Достаточно просто или я не прав?
__________________
O God! The Aftermath.

Старый 06.04.2010, 23:24
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 10  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от random13 Посмотреть сообщение
ну вобщем то да) и нет проблем, хотя я вообще больше не пользуюсь startDrag(), глючная функция
Расскажите подробнее по сути глюка, пожалуйста.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Создать новую тему Ответ Часовой пояс GMT +4, время: 01:48.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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