![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jan 2006
Сообщений: 5
|
Всем привет.
1. Читаем txt файл 2. В массив его 3. На базе массива создаем динамически кнопки 4. Отображаем в окошке с скроллером эти кнопки списком 5. Когда хватаем одну кнопку и волокем ниже (выше), остальные соответсвенно смещаются на позицию, в которой та стояла. 6. Отслеживаем после перемещений новый список положения кнопок, который и гоним в переменную. Вопрос, аднака, такой: Есть ли что-либо похожее уже реализованное, (компонент какой)? Ежели нет, то хотя бы идейно, как это можно сделать (пп. 4-6). Заранее благодарен всем за ответы. ![]() |
|
|||||
|
Регистрация: Nov 2005
Сообщений: 221
|
Извини не понял:
Цитата:
|
|
|||||
|
Регистрация: Jan 2006
Сообщений: 5
|
Спасибо за быструю реакцию
.Перетасовать местами нужно кнопки. Было: 1,2,3,4,5. Стало, к примеру, 1,5,2,3,4. Вручную я знаю как задать: Позицию 5 переместить на Позицию 2, затем меняем позицию в массиве, формируем строковую переменную на базе массива. Но хочется простым "перетаскиванием" сделать. Последний раз редактировалось dimirlan; 12.01.2006 в 22:00. |
|
|||||
|
Регистрация: Jan 2006
Сообщений: 5
|
Ясно. Наверное плохо объяснил.
Грубо говоря есть таблица, каждая строка которой - кнопка (формируются динамически типа duplicateMovieClip). Мне нужно сделать, чтобы эта таблица прокручивалась скролом - раз, чтобы можно было менять кнопки местами "перетаскиванием" мышью - два, и чтобы отслеживались ID кнопок и я эту новую последовательность ID мог гнать в переменную - три. Знаю как формировать таблицу текстовую, прокручиваемую (на базе стандартного компонента), но не знаю как реализовать на базе того же компонента динамическое формирование кнопок; знаю как менять местами в ней позиции строк и гнать этот список в переменную, но не догоняю как это реализовать drag-ом (отслеживать позицию по У, али как?). Надеюсь, теперь ясно че хочу добиться. Если есть мысли какие - плз, пишите. Со всем уважением... ![]() Последний раз редактировалось dimirlan; 13.01.2006 в 02:46. |
|
|||||
|
Регистрация: Nov 2005
Сообщений: 221
|
Используй дроптаргет.
Вот немного переделанный пример из хелпа: origX = button1_mc._x;
origY = button1_mc._y;
button1_mc.onPress = function() {
this.startDrag();
};
button1_mc.onRelease = function() {
this.stopDrag();
if (this._droptarget.indexOf("button")!=-1) {
// Можно обойтись и без eval, но так нагляднее
var target_mc = eval(this._droptarget);
// Ну а дальше я думаю сообразишь
} else {
this._x = origX;
this._y = origY;
}
};
|
|
|||||
|
еще вариант (поживее):
при перетаскивании кнопки смотрим с кем из остальных хиттест, ну и отправляем ее на новое место.. import mx.transitions.*;
var nBut=5,buts=[],yPos=[],but=null, yGap=60, x0=50, y0=50
bPress=function(){
this.startDrag(false,x0,yPos[0],x0,yPos[yPos.length-1]);
this.onEnterFrame=function(){
//смотрим с кем пересекаемся, кроме себя и кнопок не на месте
for(var i=0;i<nBut;i++) if(this!=buts[i] && this.hitTest(buts[i]) && buts[i]._y==yPos[buts[i].pos] )break;
but=buts[i];
if(!but)return;//если не с кем то выходим
var tmp=but.pos;//меняемся позицией
but.pos=this.pos,this.pos=tmp;
new Tween(but, "_y", null, but._y, yPos[but.pos], 2);//двигаем на новую
}
}
bRelease=function(){
stopDrag();
delete this.onEnterFrame;
new Tween(this, "_y", null, this._y, yPos[this.pos], 1);//двигаем точно на позициюна
}
//расставляем кнопки
for(var i=0;i<nBut;i++){
yPos.push(y0+i*yGap);
buts.push(this.attachMovie('but',i,i,{_x:x0,_y:yPos[i],id:'#'+i,pos:i,onPress:bPress,onRelease:bRelease,onReleaseOutside:bRelease}));
}
|
|
|||||
|
Регистрация: Jan 2006
Сообщений: 5
|
Большое спасибо, буду разбираться.
![]() |
|
|||||
|
Регистрация: Jan 2006
Сообщений: 5
|
Добрый день, Silin.
Ну, в принципе вроде понятно. Не получается заставить работать вложенные кнопки. Прилагаю fla. Верхний объект тягается и кнопки в нем работают, а когда множу, как ты написал, не пашет. Наверное, неправильно обращаюсь к клипам. Тут оставил только "чистый" код - свои художества убрал. Если не трудно, подскажи, как это сделать? Спасибо, с уважением Dimirlan. ![]() |
|
|||||
|
проблема в перекрытии 'мышиных' событий дочерних объектов событиями родителя: у 'верхнего объекта' они не определены - кнопки работают,
у кнопок, которые таскаешь определены - внутренние уже не работают возможные решения: -вешать перетаскивание кнопок не на них самих, а на мувик/кнопку внутри.. -определять нажатие на внутренние через хиттест с мышью.. зы: я тут по мотивам недавнего обсуждения похожего вопроса (поиск рулит) класс приспособил решать эту задачу, тож глянь.. |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:19. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|