![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Sep 2012
Сообщений: 204
|
Добрый вечер.
Что то я совсем запутался в методе splice. ситуация такая: Есть 6 элементов в массиве. Каждый по отдельности анимируется и в какой то момент 1 элемент уходит из ряда. Идет смещение всех элементов что находятся справа, а далее тот элемент который пропал появляется в конце ряда справа. С этой частью никаких проблем, но вот далее мне необходимо обновить последовательность этих элементов, чтобы в массиве они стояли также как слева направо после перестановки. Как я понимаю, это делается через splice var ran:int = randomRange(4, 0); ballArr[ran].hide(); TweenLite.to(ballArr[ran], 0, { overwrite:false, delay:2, x:posArr[5]} ) for (var i:int = ran + 1; i < ballArr.length; i++) { TweenLite.to(ballArr[i], 1, {x:posArr[i - 1]}); } // тут все в порядке, все встает на нужные места //далее делим массив ballArr var splicedAlone:Array = ballArr.splice(ran, 1); //тот что пропадает var spliced:Array = ballArr.splice(ran + 1, ballArr.length); //те что были справа от изчезнущего trace ("ballArr "+ballArr +"dlina "+ballArr.length); //ballArr [object Ball]dlina 1 trace ("alone "+splicedAlone+"dlina "+splicedAlone.length); //alone [object Ball]dlina 1 trace ("ostatok " + spliced + "dlina " + spliced.length); //ostatok [object Ball],[object Ball],[object Ball],[object Ball]dlina 4 ballArr.splice(ballArr.length-1, 0, spliced); // пытаюсь добавить те что были справа ballArr.splice(ballArr.length-1, 0, splicedAlone); //тот что изчезал trace ("ballArr "+ballArr +"dlina "+ballArr.length); // ballArr [object Ball],[object Ball],[object Ball],[object Ball],[object Ball],[object Ball],[object Ball],[object Ball],[object Ball]dlina 3 trace ("alone "+splicedAlone+"dlina "+splicedAlone.length); //alone [object Ball]dlina 1 trace ("ostatok " + spliced + "dlina " + spliced.length);//ostatok [object Ball],[object Ball],[object Ball],[object Ball]dlina 4 Кстати даже если получилось бы соединить 2 массива, колличество элементов не было бы нужным мне. Их по прежнему должно быть 6, но если например разрезали на 3 х 1 х 2, то новый массив будет из 5 элементов 3+1+1. Как мне решить эту задачку? Добавлено через 37 минут Вопрос решил таким способом Последний раз редактировалось pomuс; 28.03.2013 в 00:07. |
|
|||||
|
Что-то ничего не понял из вопроса. Но так, к теме, есть еще и другие методы
|
|
|||||
|
Регистрация: Sep 2012
Сообщений: 204
|
caseyryan а если обрезаешь не 1 элемент, а 3 например, то как добавить их в нужном порядке каждый элемент?
|
|
|||||
|
блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
|
pomuс, иногда помогает проявлять самостоятельность и настойчивость в решениях задач.
var a:Array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // 1,2,3,4,5,6,7,8,9,10 trace(a); // сносим три элемента начиная со второго и добавляем их в конец a.push(a.splice(1, 3)); // 1,5,6,7,8,9,10,2,3,4 trace(a);
__________________
hauts.ru |
|
|||||
|
Регистрация: Sep 2012
Сообщений: 204
|
Hauts
прошу прощения, меня запутал пример со справки, где сплайсом добавлялся отделенный массив с элементами.. и там элементы терялись поэтому приходилось изощоенным способом добавлять по одному Добавлено через 20 минут Да, вот она и тут эта проблема. array.length показывает меньшее количество чел в трейсе самих элементов. А надо чтобы было столько же Добавлено через 1 час 41 минуту Если кому то пригодится- я нашел метод создания отдельный массивов методом splice и потом методом concat объединял их |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:25. |
|
|
« Предыдущая тема | Следующая тема » |
|
|