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

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

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

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

Необходимо создать тест, в котором надо будет правильно расставить предложения.Т.Е. смысл такой пользователь нажимает на предложение(полагаю что оно будет отдельным обьектом), перетаскивает его на его положенное место, а предложение которое стояло на этом месте уходит на место перетаскиваемого(т.е. они просто меняются местами). Пока не могу даже предположить, как это можно сделать. Буду рад любому совету по теме.....

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Это же в стандартном наборе темплейтов есть
файл - новый - темплейт - quiz (по крайней мере в восьмерке)
Или у Вас конкретно с переменой мест проблемы?
Клипы с предложениями... Тащите. Отпустили - хиттест
Определяете какой клип под вашим и ему ставите _х _у того которого тащили (какие они были до перетаскивания разумеется)
Всё может осложниться только разными размерами клипов.

Например вот так
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 26.07.2007 в 14:35.
Старый 26.07.2007, 14:12
wellskii вне форума Посмотреть профиль Отправить личное сообщение для wellskii Найти все сообщения от wellskii
  № 3  
Ответить с цитированием
wellskii

Регистрация: Apr 2007
Сообщений: 22
спасибо... буду сейчас пробовать....

Спасибо за пример... сейчас буду логику разбирать


Последний раз редактировалось wellskii; 26.07.2007 в 15:07.
Старый 26.07.2007, 15:26
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 4  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Да, еще на онРелизы надо добавить, что если все хиттесты отрицательные, клип возвращается на свое положение, чтоб не валялся тупо где попало
Ну и по-уму бы надо все в одну функцию записать, а не копировать действия для каждого клипа. Ладно их тут три, а если пятнадцать?

////////////////////////// апдейтед /////////////////////////////

в общем у меня вот так сокращенно получилось для трех клипов
(можно этот код прямо в тот пример вставить вместо прежнего)

Код:
var dragged_x=null   //  здесь будем записывать координаты
var dragged_y=null   //  клипа перед тем как его тащить
Num = 3              //  количество клипов всего, маска их имени - mc_#_mc
for(n=1; n<Num+1; n++){  // по циклу перебираем мувики и вешаем ролловер-функции
	_root['mc_'+n+'_mc'].onPress = function(){          // при нажатии
	this.swapDepths(_root.getNextHighestDepth());   // ставим выше всех
	this._alpha = 50                 // делаем полупрозрачным
	_root.dragged_x=this._x          // записываем исходные координаты
	_root.dragged_y=this._y
	this.startDrag();                // разрешаем тащить
	}
	_root['mc_'+n+'_mc'].onRelease = _root['mc_'+n+'_mc'].onReleaseOutside = function(){
	this._alpha = 100
	Drop(this);                          // при отпускании - функция Дроп
	}
}//end for
///////////////////////////////////////////////////////
function Drop(clip:MovieClip){
	clip.stopDrag();            //  останавливаем таскалку
	not1 = not2 = not3 = false  // флаги удачности хиттеста
	clip!=mc_1_mc ? clip.hitTest(mc_1_mc) ? Replace(clip, mc_1_mc) : not1=true : not1=true;
	clip!=mc_2_mc ? clip.hitTest(mc_2_mc) ? Replace(clip, mc_2_mc) : not2=true : not2=true;
	clip!=mc_3_mc ? clip.hitTest(mc_3_mc) ? Replace(clip, mc_3_mc) : not3=true : not3=true;
	 // если ни с кем не пересеклись - отправляем клип на прежнее место
	(not1 & not2 & not3) ? Replace(clip, clip) : null;
}
///////////////////////////////////////////////////////
function Replace(sourceclip:MovieClip, clip:MovieClip){
	sourceclip._x = clip._x;    // присваиваем нашему клипу координаты
	sourceclip._y = clip._y;    // того клипа, с которым он пересекся
	clip._x = _root.dragged_x;  // а этот клип отправляем на исходные
	clip._y = _root.dragged_y;  // координаты нашего клипа
	}
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 27.07.2007 в 13:37.
Создать новую тему Ответ Часовой пояс GMT +4, время: 07:53.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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