Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   перестановка элементов массива в зависимости от условий (http://www.flasher.ru/forum/showthread.php?t=205813)

alex_195 23.12.2013 15:45

перестановка элементов массива в зависимости от условий
 
Вложений: 1
Есть такие задания - перестановки. Встречаются они в специальных программах-тестерах и т. д. Посколько я делаю свои тесты во flash, то решил реализовать и такое задание. Вот листинг того, что пока получилось:
Код AS1/AS2:

//////////////////////////////////Команды
var str0:String = 'Program upr_1;';
var str1:String = 'uses CRT;';
var str2:String = 'var a:integer;';
var str3:String = 'begin';
var str4:String = 'end.';
///////////////////////////массивы клипов
var arrMesto:Array = [];
//клипы-подложки
var arrKomand:Array = [];
//клипы с командами
var arrKomnew:Array = [];
//рандомно отсортированные клипы с командами
////////////////////организую рандомную расстановку индексов
var a:Array = [0, 1, 2, 3, 4];
var l:Number = a.length;
var t:Number = l;
while (t--) {
        var r:Number = random(l);
        a[r] += a[t]-(a[t]=a[r]);
}
trace(a);
var pusto:MovieClip;
////////////////заполение массива с клипами-подлжками и расстановка их на сцене
for (var i = 0; i<5; i++) {
        _root.attachMovie('mesto', 'mesto'+i, i+10, {_x:50, _y:100+40*i});
        arrMesto.push(_root['mesto'+i]);
}
trace(arrMesto);
////////////////заполение массива с клипами с командами и расстановка их на сцене
for (var d = 0; d<5; d++) {
        var komand:MovieClip = _root.attachMovie('komanda', 'komanda'+d, d+30);
        arrKomand.push(_root['komanda'+d]);
        komand._x = 50;
        komand._y = 100+a[d]*40;
        komand.pole_txt.text = _root['str'+d];
}
trace(arrKomand);
//////////////////////////перетасока клипов с командами
for (var s = 0; s<5; s++) {
        arrKomnew.push(arrKomand[a[s]]);
}
trace(arrKomnew);
///////////////// перетаскивание клипов-команд в заданных пределах
for (var m = 0; m<5; m++) {
        arrKomnew[m].onPress = function() {
                trace(this);
                this.startDrag(false, 50, 100, 50, 100+40*m-40);
        };
        arrKomnew[m].onRelease = arrKomnew[m].onReleaseOutside=function () {
                this.stopDrag();
        };
}

Из библиотеки атачатся два клипа 'mesto'(прямоугольник в цвете) и 'komanda'(с текстовым полем), организовываются в массивы и расставляются на сцене. Все 'komanda' перетаскиваются.
Логика дальнейших действий такова: если при перетаскивании взятого 'komanda' с 'mesto' и 'komanda'(не перетаскиваемого) есть пересечение, то 'komanda'(не перетаскиваемого) переходит на освободившееся 'mesto'. Логика то понятна, а вот с реализацией программно запоролся. Прошу помочь в этом. Приложен мувик для визуализации.
лОГИКА \\\\

alex_195 24.12.2013 01:06

Вложений: 1
Ладно. Понимаю, что разбираться в чужом коде нет желания. "Просканировал" свои закрома и нашел нужное. См. в приложении. Если есть интерес, то выложу исходники.

v1v2v3 14.01.2014 21:17

Интерес к исходнику есть

alex_195 14.01.2014 21:50

Вложений: 1
В архиве один исходник без применения эффекта скольжения и несколько вариантов , использующих caurina.


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

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