2016-10-05 2 views
0

У меня есть приложение adobe air, работающее как на платформах Android, так и на iOS. В приложении я вызываю несколько видеоклипов на сцену, поэтому на сцену всегда будет несколько клипов. Точно, у меня есть 6 разных клипов, и я вызываю их каждый раз 6/5/4 раза.
Я хочу, чтобы они были анимированы, как и в библиотеке, зайдите в мувик и создайте анимацию кадра за кадром.

Я попытался создать 25 изображений PNG, 300 dpi, размер 40x40. Анимация работает правильно, но проблема в том, что всякий раз, когда я запускаю приложение на любом устройстве, время отклика будет огромным, что иногда приводит к сбою приложения. Похоже, что если бы я сделал кадровую анимацию, с PNG с высоким разрешением, приложение будет слишком медленным в использовании.

Мне нужно иметь хорошее качество для каждого изображения в клипе, но я думаю, что это с высоким качеством PNG не лучший подход к использованию. Я подумал, что, возможно, импортировать несколько иллюстраторных файлов и распространять их на каждом кадре можно. Но я не уверен, сможет ли мобильное устройство достичь наилучшего соотношения качество/производительность.

Для чего, как я могу достичь наилучшего соотношения качества и производительности в Flash CS6, AS3 adobe для мобильных устройств?Создайте кадр за кадром анимации внутри фильма Клип AS3 - Adobe air

Edit:

У меня есть клип, созданный и в библиотеке, внутри него я загрузил один PNG изображение. Я попытался:
Преобразуйте изображение в этот фрагмент ролика в мувиклип и позаботился обо всех необходимых именах, чтобы подтвердить это с помощью предложенного ответа. Видеоролик отца связан с классом AS, в котором я попытался вставить предложенный код, но произошло то, что видеоклипы перестали появляться со сцены вообще. Я что-то упускаю ?

+1

300dpi не имеет смысла и применим только для печати. Скорее всего, проблема с производительностью связана с тем, как вы используете изображения. Но вы не указали свой код. Кроме того, почему бы вам не создать эту фреймворческую анимацию во флэш-памяти? Ведь это анимационное программное обеспечение. – null

+0

Вы должны помещать все в растровые изображения. Растровые изображения используют графический процессор, векторы и PNG используют CPU. Оптимизация растрового изображения определенно необходима для плавной анимации на мобильных устройствах. Поскольку у вас Android и Android имеют так много разных размеров экрана и точек на дюйм, вы должны рисовать вещи в векторе, изменять размер векторов, чтобы они соответствовали устройству, конвертировать векторы в растровые изображения. Я могу дать вам больше информации и пример кода, если вы считаете, что это ответ на ваш вопрос. – moot

+0

@moot Я думаю, что это правильный путь, я создал несколько иллюстраторных файлов, каждый из которых представляет один кадр из анимации, как вы думаете, я должен сохранить их как растровое изображение и импортировать их кадр за кадром в мувиклип во вспышке? или я могу импортировать их как eps или что-то еще? как вы думаете, лучший подход? –

ответ

0

Вы должны помещать все в растровые изображения. Растровые изображения используют графический процессор, векторы и PNG используют CPU. Оптимизация растрового изображения определенно необходима для плавной анимации на мобильных устройствах. Поскольку у вас Android и Android имеют так много разных размеров экрана и точек на дюйм, вы должны рисовать вещи в векторе, изменять размер векторов, чтобы они соответствовали устройству, конвертировать векторы в растровые изображения.

Вот пример кода для преобразования мувиклипа в растровое изображение. Оригинальный мувиклип - mcCircleVector - находится внутри держателя movieclip - mcCircle. Код преобразует mcCircleVector в растровое изображение, удаляет его и добавляет битмап в mcCircle, поэтому вы получаете мувиклип.

var bmpTemp: Bitmap; 
bmpTemp = new Bitmap(); 
bmpTemp = fConvertToBMP(mcCircle.mcCircleVector, 150, 150); 
mcCircle.removeChild(mcCircle.mcCircleVector); 
mcCircle.mcCircleVector = null; 
mcCircle.addChild(bmpTemp); 
bmpTemp = null; 


private function convertBMP(pClip: MovieClip, pWidth: int, pHeight: int): Bitmap { 
    var bd: BitmapData = new BitmapData(pWidth, pHeight, true, 0x00000000); 
    bd.draw(pClip, null, null, null, null, true); 
    var bmp: Bitmap = new Bitmap(bd, "auto", false); 
    bmp.smoothing = true; 
    return bmp; 
} 
+0

, пожалуйста, проверьте мои изменения, я попробовал, но я думаю, что я чего-то не хватает –