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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 30.05.2013, 12:37
Chum вне форума Посмотреть профиль Отправить личное сообщение для Chum Найти все сообщения от Chum
  № 1  
Ответить с цитированием
Chum
[+1 06.03.13]

Регистрация: Feb 2007
Сообщений: 174
По умолчанию Перенос спрайта по координатам одной из осей.

Подскажите плиз.
Курсор определяет перемещение спрайта только вертикально или только горизонтально, событие MouseEvent.MOUSE_DOWN вызывает функцию старта перемещения.
Проблема в том что при перемещении курсор может уйти со спрайта и тогда MouseEvent.MOUSE_UP не сработает.
Подскажите как можно реализовать решение данной проблемы, либо отследить отжатие мыши вне спрайта, либо присваивать до момента MouseEvent.MOUSE_UP курсору фиксированное значение одной из координат спрайта (разумеется если это возможно).
А может каким-то другим способом можно решить?

Старый 30.05.2013, 12:45
Final Hope вне форума Посмотреть профиль Найти все сообщения от Final Hope
  № 2  
Ответить с цитированием
Final Hope
Banned
[+5 04.06.13]
[+1 08.06.13]

Регистрация: May 2013
Сообщений: 52
Не знаю, как будет правильнее всего, но я бы повесил MOUSE_UP на stage.
Код AS3:
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.geom.Rectangle;
 
var sliderBounds:Rectangle = new Rectangle(0, 0, 300, 0);
var sliderSprite:Sprite = new Sprite();
sliderSprite.graphics.beginFill(0xff0000);
sliderSprite.graphics.drawRect(0, 0, 60, 20);
this.addChild(sliderSprite);
stage.addEventListener(MouseEvent.MOUSE_UP, stage_MouseUpHandler);
sliderSprite.addEventListener(MouseEvent.MOUSE_UP, sliderSprite_MouseUpHandler);
sliderSprite.addEventListener(MouseEvent.MOUSE_DOWN, sliderSprite_MouseDownHandler);
//--------------------------------------------------------------------
// Event handles
//--------------------------------------------------------------------
function stage_MouseUpHandler(event:MouseEvent):void
{
	sliderSprite.stopDrag();
}
function sliderSprite_MouseUpHandler(event:MouseEvent):void
{
	sliderSprite.stopDrag();
}
function sliderSprite_MouseDownHandler(event:MouseEvent):void
{
	sliderSprite.startDrag(false, sliderBounds);
}

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Есть же MouseEvent.RELEASE_OUTSIDE
__________________
Reality.getBounds(this);

Старый 30.05.2013, 17:46
Chum вне форума Посмотреть профиль Отправить личное сообщение для Chum Найти все сообщения от Chum
  № 4  
Ответить с цитированием
Chum
[+1 06.03.13]

Регистрация: Feb 2007
Сообщений: 174
Цитата:
Есть же MouseEvent.RELEASE_OUTSIDE
И я считал что оно есть, но во FlashDevelop оно не выскакивает в подсказках и при переходе по указанной Вами ссылке его не наблюдается.

Старый 30.05.2013, 17:58
Final Hope вне форума Посмотреть профиль Найти все сообщения от Final Hope
  № 5  
Ответить с цитированием
Final Hope
Banned
[+5 04.06.13]
[+1 08.06.13]

Регистрация: May 2013
Сообщений: 52
RELEASE_OUTSIDE доступен с версии флэш плеера 11.3, значит во FlashDevelop нужно выбрать поддерживаемую версию плеера в настройках.

Старый 30.05.2013, 18:08
Chum вне форума Посмотреть профиль Отправить личное сообщение для Chum Найти все сообщения от Chum
  № 6  
Ответить с цитированием
Chum
[+1 06.03.13]

Регистрация: Feb 2007
Сообщений: 174
И то правда Ваша. У меня была 11.2. Спасибо.

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

Регистрация: Feb 2012
Сообщений: 1,540
Лучше все-таки сделать через mouseEnabled/mouseChildren
Во-первых, не будет проблем с событиями
Во-вторых, не будет проблем с совместимостью

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

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

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


 


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


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