![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Apr 2007
Сообщений: 22
|
Необходимо создать тест, в котором надо будет правильно расставить предложения.Т.Е. смысл такой пользователь нажимает на предложение(полагаю что оно будет отдельным обьектом), перетаскивает его на его положенное место, а предложение которое стояло на этом месте уходит на место перетаскиваемого(т.е. они просто меняются местами). Пока не могу даже предположить, как это можно сделать. Буду рад любому совету по теме.....
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Это же в стандартном наборе темплейтов есть
файл - новый - темплейт - quiz (по крайней мере в восьмерке) Или у Вас конкретно с переменой мест проблемы? Клипы с предложениями... Тащите. Отпустили - хиттест Определяете какой клип под вашим и ему ставите _х _у того которого тащили (какие они были до перетаскивания разумеется) Всё может осложниться только разными размерами клипов. Например вот так
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 26.07.2007 в 14:35. |
|
|||||
|
Регистрация: Apr 2007
Сообщений: 22
|
спасибо... буду сейчас пробовать....
Спасибо за пример... сейчас буду логику разбирать ![]() Последний раз редактировалось wellskii; 26.07.2007 в 15:07. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: 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. |
|
|
« Предыдущая тема | Следующая тема » |
|
|