Общий список - перемещение элемента в списке

Анимация может быть экспортирована как изображения, но это не должно происходить, если вы не скажете это. Как выглядит ваша библиотека JavaScript? Экспортируются ли какие-либо изображения? Возможно, поищите в источнике .cache, чтобы узнать, не делает ли Adobe что-нибудь смешное под капотом.

Если карта является источником SVG: К сожалению, только единственная поддержка SVG в EaselJS (которая лежит в основе экспорта Animate) предназначена для svg в качестве «источника растрового изображения». Это означает, что он обрабатывается как изображение определенного размера, и масштабирование его выше «100%» будет интерполировать детали.

Может быть возможно загрузить его в качестве большего растрового изображения и уменьшить его до начала, но это:

  1. сделает его намного больше в памяти
  2. , все еще только позволяя Вы так сильно масштабируете

Другой вариант - импортировать SVG-ресурс в Adobe Animate, который должен преобразовать его в векторную графику. Если в EaselJS это вектор, вы можете масштабировать его столько, сколько хотите, потому что он использует векторные API Canvas для рисования вместо источника изображения.

Вы упомянули, что зеленый круг является родным (я предполагаю, что форма в Animate?). Вы уверены, что он не экспортируется как изображение, а не форма? Вы что-нибудь кешируете?

Надеюсь, это поможет!

139
задан Richard Everett 25 June 2012 в 16:12
поделиться

5 ответов

var item = list[oldIndex];

list.RemoveAt(oldIndex);

if (newIndex > oldIndex) newIndex--; 
// the actual index could have shifted due to the removal

list.Insert(newIndex, item);
117
ответ дан 23 November 2019 в 23:20
поделиться

Я ожидал бы также:

// Makes sure item is at newIndex after the operation
T item = list[oldIndex];
list.RemoveAt(oldIndex);
list.Insert(newIndex, item);

... или:

// Makes sure relative ordering of newIndex is preserved after the operation, 
// meaning that the item may actually be inserted at newIndex - 1 
T item = list[oldIndex];
list.RemoveAt(oldIndex);
newIndex = (newIndex > oldIndex ? newIndex - 1, newIndex)
list.Insert(newIndex, item);

... добился бы цели, но у меня нет VS на этой машине для проверки.

1
ответ дан 23 November 2019 в 23:20
поделиться

Вставляйте объект в настоящее время в oldIndex быть в newIndex и затем удалите исходный экземпляр.

list.Insert(newIndex, list[oldIndex]);
if (newIndex <= oldIndex) ++oldIndex;
list.RemoveAt(oldIndex);

Необходимо принять во внимание, что индекс объекта, который Вы хотите удалить, может измениться из-за вставки.

5
ответ дан 23 November 2019 в 23:20
поделиться

Список <T>.Remove () и <T>.RemoveAt Списка () не возвращает объект, который удаляется.

Поэтому необходимо использовать это:

var item = list[oldIndex];
list.RemoveAt(oldIndex);
list.Insert(newIndex, item);
8
ответ дан 23 November 2019 в 23:20
поделиться

Самый простой путь:

list[newIndex] = list[oldIndex];
list.RemoveAt(oldIndex);

Править

Вопрос не очень ясен... Так как мы не заботимся где list[newIndex] объект идет, я думаю самый простой способ сделать, это следующим образом (с или без дополнительного метода):

    public static void Move<T>(this List<T> list, int oldIndex, int newIndex)
    {
        T aux = list[newIndex];
        list[newIndex] = list[oldIndex];
        list[oldIndex] = aux;
    }

Это решение быстро, потому что оно не включает вставки/удаления списка.

0
ответ дан 23 November 2019 в 23:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: