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

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

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

Регистрация: Apr 2010
Сообщений: 6
Question Определённое действие мувика после отпускания кнопки мышки - как?

ПРОБЛЕМА:
Корзина + комок смятой бумаги + действие Drag = комок "прячется" за корзину, имхо во первых слои этих двух предметов так расположены, а во вторых кроме как:

Код:
onPress = function() {
this.startDrag();
};
onRelease = onReleaseOutside=function () {
this.stopDrag(); 
};
ничего собственно и не прописано. Ну и как следствие - пишем дальше:

Код:
onRelease = function() {
_visible = false;
};
ИТОГ: Корзина + комок смятой бумаги + действие Drag = комок исчезает, НО, где угодно, и в корзине, и над, и перед, и рядом.. (ошибка понятна - комку по умолчанию предлагалось именно исчезнуть, стать невидимым, но в каком конкретно месте - про это не было и слова кода).

ЗАДАЧА:
Корзина + комок смятой бумаги + действие Drag = комок после таскания его мышкой, "удаляется" ИМЕННО в корзине и нигде более.

БЛАГОДАРНОСТЬ: От "in4core" поступило предложение - Сделать МАСКУ клип поверх корзины (невидимую). И с помощью "hitTest" проверять на совпадение с этим клипом.
Код:
if(hitTest) { onRelease =(){}}
P.S. Это конечно хорошо, но не решает моей проблемы... У меня не хватает знаний для применения результатов hitTest'а. Мне нужен конкретный код - решающий мою проблему, и по возможности адекватное его описание - что и куда, дабы не тупо его вставить в рабочее поле и забыть, но и понять как он работает. Я только учусь!

Старый 04.04.2010, 09:55
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 2  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Код AS1/AS2:
onPress = function() {
    this.startDrag();
};
onRelease = onReleaseOutside=function () {
    this.stopDrag();
    if(this.hitTest(maskClip)){
        this._visible = false;
        // На корзине
    } else {
        // Не на корзине
    }
};
__________________
hauts.ru

Старый 04.04.2010, 14:43
xpr0 вне форума Посмотреть профиль Отправить личное сообщение для xpr0 Найти все сообщения от xpr0
  № 3  
Ответить с цитированием
xpr0

Регистрация: Apr 2010
Сообщений: 6
Hauts thx! Но.. если чессно, ниче не понял.. создать "маску" корзины и туда прописать код или что? Мне действительно важен не сам результат, а именно понимание того, что я делаю.. Прости, не мог бы ты описать подробнее каждое действие после this.stopDrag(); Если не затруднит..


Последний раз редактировалось xpr0; 04.04.2010 в 15:15.
Старый 04.04.2010, 17:48
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 4  
Ответить с цитированием
in4core
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
После стоп драг.
1. Если this(твой клип) по хиттесту = maskClip
2. то твой клип висибле фальс
3. а если уж нет!
4. твое действие

Старый 05.04.2010, 10:44
xpr0 вне форума Посмотреть профиль Отправить личное сообщение для xpr0 Найти все сообщения от xpr0
  № 5  
Ответить с цитированием
xpr0

Регистрация: Apr 2010
Сообщений: 6
Цитата:
Сообщение от in4core Посмотреть сообщение
После стоп драг.
1. Если this(твой клип) по хиттесту = maskClip
2. то твой клип висибле фальс
3. а если уж нет!
4. твое действие
Я что, по твоему идиот? Зачем же глумиться? Я не просил "перевода" с английского, я просил адекватное пояснение что, и куда. Я так понимаю, здесь люди, которые что то знают неохотно общаются с теми, кто только начинает.. Ну что ж, спасибо и на этом. Извините что потревожил. Парень неглупый, своим мозгом дойду.

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

Регистрация: Jul 2007
Адрес: Гражданин Российской Федерации
Сообщений: 1,122
Отправить сообщение для KiL33 с помощью ICQ
Цитата:
Парень неглупый, своим мозгом дойду.
Это самое верное решение.

Старый 05.04.2010, 11:26
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 7  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Действия должны быть написаны в кадре перетаскиваемого клипа. То есть, заходим в клип для его редактирования, выделяем первый кадр, и пишем действия.

Код AS1/AS2:
onPress = function() {
    this.startDrag();
};
Тут, наверное, все понятно. Как только нажали на мувиклип, он начинает двигаться за мышкой. Можно, кстати, поставить startDrag(false), тогда клип не будет центроваться относительно курсора.

Код AS1/AS2:
onRelease = onReleaseOutside=function () {
    this.stopDrag();
    if(this.hitTest(maskClip)){
        this._visible = false;
        // На корзине
    } else {
        // Не на корзине
    }
};
Тут мы определяем, что произойдет, если отпустили мышкой этот клип. Определяем два события — когда отпустили мышкой над клипом (onRelease) и, заодно, когда отпустили мышкой не над клипом (onReleaseOutside).
Можно
Код AS1/AS2:
onRelease = onReleaseOutside = function...
заменить на
Код AS1/AS2:
onMouseUp = function...
тогда эта функция будет отрабатываться каждый раз, когда отпускаем кнопку мышки, вне зависимости от того, где нажали.

Внутри функции мы определяем, что же, все-таки произойдет по наступлению событий. В первую очередь, раз мышку отпустили, нам уже не надо таскать клип за курсором. Поэтому пишем
Код AS1/AS2:
this.stopDrag();
А дальше нужно проверить, положили ли мы клип на корзину, или же нет. Для этого мы ставим условие if, в котором пишем:
Код AS1/AS2:
this.hitTest(maskClip)
Функция hitTest возвращает значение true, если this (в данном случае это перетаскиваемый клип) пересекается с клипом, у которого instance name "maskClip". Пересечения отрабатываются по габаритным размерам клипов, как если бы клипы были прямоугольниками. Если клип - окружность, то hitTest вернет true, в случае, если другой клип "задевает" уголок прямоугольника, описывающего эту окружность.

Клип, с которым проверяется пересечение, должен иметь название, чтобы в коде с ним можно было работать, поэтому в поле instance name, когда этот клип выделен, нужно написать maskClip (или любое другое название).

Дальше по коду: если hitTest возвращает true, то значит, что условие для if верное, значит запустится блок кода, который сразу после if. В данном случае
Код AS1/AS2:
this._visible = false;
Меняя свойство _visible у перетаскиваемого клипа на значение false, мы указываем флэш-плееру, что этот клип не нужно показывать, он исчезает с экрана, но остается на сцене (то есть он не удаляется).

В случае, если условие в if не выполняется, то есть hitTest возвращает false (объекты не пересекаются), запускается блок кода, который стоит после else.
__________________
hauts.ru


Последний раз редактировалось Hauts; 05.04.2010 в 11:33.
Старый 05.04.2010, 13:29
xpr0 вне форума Посмотреть профиль Отправить личное сообщение для xpr0 Найти все сообщения от xpr0
  № 8  
Ответить с цитированием
xpr0

Регистрация: Apr 2010
Сообщений: 6
Hail to the Hauts! Огромное спасибо, за столь точные разьяснения! Всё наконец то стало понятно!
P.S. Всё здорово, только "клип" так и НЕ удаляется в "корзине"

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

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Не удаляется? Хм. Странно.
__________________
hauts.ru

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

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

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


 


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


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