Как решить проблему с путем к изображению при тестировании HtmlHelper?

Я столкнулся с проблемой, когда тестировал свой HTML Helper. По сути, я создаю сетку с множеством строк, столбцов и различных типов данных. В заголовке также есть изображение, чтобы уведомить пользователя, по какому столбцу отсортированы данные. Однако, когда я сейчас пишу свой тест (слишком поздно, но лучше поздно, чем никогда ?!), я получаю эту ошибку:

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

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

«Относительный виртуальный путь приложения «~ / Images / SortingArrowUp.png» не может быть абсолютным, потому что путь к мы реализовали его, создав элемент Label, заполнив его текстом, а затем переместив его с помощью объекта mx: Move с помощью смягчающей функции Linear.easeNone. Это работает, но у него есть достаточно возможностей для улучшения. Это выглядит немного вяло, и имеет тенденцию иметь достаточное количество «разрывов» (верхняя и нижняя половины текста иногда не синхронизируются).

Я пытался использовать математическую задачу, чтобы синхронизировать скорость перемещения обхода с частотой обновления монитора, но это было перебор. Я обнаружил, что частота кадров приложения слишком сильно меняется; «оптимизированный» обход варьировался от шелковистой гладкости до эпилепсии.

Есть ли что-нибудь еще, что люди порекомендовали бы мне попробовать сгладить это? Какой альтернативный дизайн вы бы порекомендовали мне попробовать? а затем переместить его с помощью объекта mx: Move с помощью функции замедления Linear.easeNone. Это работает, но у него есть достаточно возможностей для улучшения. Это выглядит немного вяло, и имеет тенденцию иметь достаточное количество «разрывов» (верхняя и нижняя половины текста иногда не синхронизируются).

Я пытался использовать математическую задачу, чтобы синхронизировать скорость перемещения обхода с частотой обновления монитора, но это было перебор. Я обнаружил, что частота кадров приложения слишком сильно меняется; «оптимизированный» обход варьировался от шелковистой гладкости до эпилепсии.

Есть ли что-нибудь еще, что люди порекомендовали бы мне попробовать сгладить это? Какой альтернативный дизайн вы бы порекомендовали мне попробовать? а затем переместить его с помощью объекта mx: Move с помощью функции замедления Linear.easeNone. Это работает, но у него есть достаточно возможностей для улучшения. Это выглядит немного вяло, и имеет тенденцию иметь достаточное количество «разрывов» (верхняя и нижняя половины текста иногда не синхронизируются).

Я пытался использовать математическую задачу, чтобы синхронизировать скорость перемещения обхода с частотой обновления монитора, но это было перебор. Я обнаружил, что частота кадров приложения слишком сильно меняется; «оптимизированный» обход варьировался от шелковистой гладкости до эпилепсии.

Есть ли что-нибудь еще, что люди порекомендовали бы мне попробовать сгладить это? Какой альтернативный дизайн вы бы порекомендовали мне попробовать? Это выглядит немного вяло, и имеет тенденцию иметь достаточное количество «разрывов» (верхняя и нижняя половины текста иногда не синхронизируются).

Я пытался использовать математическую задачу, чтобы синхронизировать скорость перемещения обхода с частотой обновления монитора, но это было перебор. Я обнаружил, что частота кадров приложения слишком сильно меняется; «оптимизированный» обход варьировался от шелковистой гладкости до эпилепсии.

Есть ли что-нибудь еще, что люди порекомендовали бы мне попробовать сгладить это? Какой альтернативный дизайн вы бы порекомендовали мне попробовать? Это выглядит немного вяло, и имеет тенденцию иметь достаточное количество «разрывов» (верхняя и нижняя половины текста иногда не синхронизируются).

Я пытался бросить математику в задачу, чтобы синхронизировать скорость перемещения обхода с частотой обновления монитора, но это было перебор. Я обнаружил, что частота кадров приложения слишком сильно меняется; «оптимизированный» обход варьировался от шелковистой гладкости до эпилепсии.

Есть ли что-нибудь еще, что люди порекомендовали бы мне попробовать сгладить это? Какой альтернативный дизайн вы бы порекомендовали мне попробовать? Скорость обновления, но это был перебор. Я обнаружил, что частота кадров приложения слишком сильно меняется; «оптимизированный» обход варьировался от шелковистой гладкости до эпилепсии.

Есть ли что-нибудь еще, что люди порекомендовали бы мне попробовать сгладить это? Какой альтернативный дизайн вы бы порекомендовали мне попробовать? Скорость обновления, но это был перебор. Я обнаружил, что частота кадров приложения слишком сильно меняется; «оптимизированный» обход варьировался от шелковистой гладкости до эпилепсии.

Есть ли что-нибудь еще, что люди порекомендовали бы мне попробовать сгладить это? Какой альтернативный дизайн вы бы порекомендовали мне попробовать?


Редактировать: Некоторый контекст: сканирование является частью приложения для цифровых вывесок (воспроизводимого с отдельного Flash-проектора - без веб-браузера), которое выполняет другие действия на экране, включая воспроизведение видео и рендеринг текста и изображений. Это определенно становится более плавным во время воспроизведения видео, но никогда не бывает таким гладким, как хотелось бы.
7
задан BlairHippo 9 August 2010 в 17:32
поделиться

5 ответов

Есть два потенциальных решения этой проблемы, но оба имеют оговорки, первое - из-за использования Flex и отдельного проектора, второе - потому что это смягчающее, а не полное решение.


Аппаратное ускорение

При публикации файла вы можете попытаться заставить Flash использовать аппаратное ускорение, чтобы облегчить проблему вертикального обновления, с которой вы столкнулись и которая вызывает разрывы. К сожалению, Flex Builder 3 не способен включить эту настройку на уровне SWF (проектора) (Ссылка на ошибку). Эта проблема еще не решена и была перенесена из 4.0 в 4.1 и 4.x... Если и когда она будет решена, то, скорее всего, это будет аргумент компилятора в настройках проекта в Flash Builder 4.

Вы можете определить, работает ли это решение для вас, выведя ваш проектор как стандартный SWF и вставив его в HTML-документ с wmode, установленным на "direct" или "gpu". К сожалению, если оно работает (а оно должно работать), вы все равно не сможете использовать его прямо сейчас. Если у вас есть Flash Builder 4, некоторые проекты способны совершать круговые путешествия между FB4 и Flash Professional CS5, хотя я не уверен, каковы критерии для этого (в моем текущем проекте AIR все опции меню модификации проекта выделены серым цветом). Если вам все же удастся запустить проект во Flash, вы можете включить аппаратное ускорение в настройках публикации проекта (File->Publish Settings->Flash tab->Hardware Acceleration option в CS5).

Этот метод почти полностью решает вашу проблему, хотя у него есть две проблемы, одна из которых уже освещена выше, и (для людей, публикующих для веб) то, что, используя прямой или GPU рендеринг на веб-странице, вы не сможете наложить какие-либо элементы DOM поверх Flash.

direct: Этот режим пытается использовать самый быстрый путь к экрану, или прямой путь, если хотите. В большинстве случаев он игнорирует все, что браузер хотел бы сделать, чтобы такие вещи, как перекрывающиеся HTML меню и т.п., работали. Типичный случай использования этого режима - воспроизведение видео. В Windows этот режим использует DirectDraw или Direct3D в Vista, в OSX и Linux мы используем OpenGL. Верность изображения не должна пострадать при использовании этого режима.

gpu: Это полноценный композитинг (+некоторые дополнительные возможности), использующий некоторые функции видеокарты. Считайте, что это похоже на то, что OSX и Vista делают для своих менеджеров рабочего стола, содержимое окон (на языке flash это означает клипы) все еще рендерится с помощью программного обеспечения, но результат компонуется с помощью аппаратного обеспечения. Когда это возможно, мы также масштабируем видео нативно в карте. Все больше и больше частей нашего программного растеризатора могут переместиться на GPU в течение следующих нескольких версий Flash Player, это только начало. В Windows этот режим использует Direct3D, в OSX и Linux мы используем OpenGL.

**Source*

Direct - идеальный вариант для этой ситуации, так как вы можете получить снижение производительности при использовании "gpu", а также визуальные различия от видеокарты к видеокарте.

Понизьте частоту кадров

Flash-плеер будет продолжать воспроизводить видео со своей родной частотой обновления независимо от остальной части вашего проекта до тех пор, пока вы поддерживаете частоту кадров на уровне или выше примерно 2FPS (хотя я рекомендую 5FPS минимум). Для данного примера вы не захотите использовать такую низкую частоту, но вы можете снизить частоту кадров для всей сцены без ущерба для производительности видео. Чем ближе ваша частота кадров к частоте обновления экрана, тем больше вероятность возникновения эффекта разрыва, если только вы не сможете абсолютно синхронизировать ее с частотой обновления монитора, чего вы, вероятно, не сможете сделать без вышеупомянутого... Hardware Acceleration.


Эта проблема существовала во Flash Player до тех пор, пока он мог перемещать объекты по горизонтали. Происходит так: Flash обновляет буферизованный снимок запущенной анимации одновременно с обновлением экрана. Если буферизованный снимок изменяется на части пути обновления экрана, возникает разрыв. Вот почему снижение частоты кадров фактически уменьшает количество разрывов: вы обновляете буфер реже.

6
ответ дан 7 December 2019 в 03:09
поделиться

TweenMax или даже TweenLite ( http://www.greensock.com ) довольно хорошо справляется с подобными задачами. Что еще делает ваше приложение при прокрутке текста? Возможно ли, что какие-то другие процессы вмешиваются?

0
ответ дан 7 December 2019 в 03:09
поделиться

Возможно, это не поможет, но не рассматривали ли вы возможность поместить ползущий текст в html DOM и использовать CSS переходы для ползущего текста. Очевидно, что существует проблема IE, но это должно поддерживаться в IE9, и вы можете использовать javascript в качестве запасного варианта.

Это может показаться глупым, но CSS-переходы получают аппаратное ускорение и отдельные процессы для плагинов, что означает, что на многоядерной машине вы можете получить параллельные потоки.

0
ответ дан 7 December 2019 в 03:09
поделиться

Одна вещь, которую вы могли бы рассмотреть, - это постепенное перемещение метки с помощью таймера вместо функции замедления. Таким образом, вы можете воспользоваться методом updateAfterEvent для более плавного рендеринга. Вот ссылка на статью / видео от Chet Haase (парень с графикой Adobe Flex), в котором объясняется использование вместе с примером приложения с кодом:

http://graphics-geek.blogspot.com/2010/04/video-event -performance-in-flex.html

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

0
ответ дан 7 December 2019 в 03:09
поделиться

Как упоминал @Tegeril, использование Flex является одной из причин. Flex - довольно тяжелый фреймворк, и он многое делает за кулисами. Если вы знакомы с жизненным циклом компонента (особенно с аннулированием свойств, аннулированием списка отображения и т. Д.).

В качестве нескольких незначительных вещей, которые могут улучшить производительность:

  • постарайтесь сохранить простой список отображения. Если вы знаете, что приложение всегда будет отображаться с одним размером, тогда flex не будет тратить время на просмотр списка / дерева отображения вверх и обратно для измерений. Также попробуйте использовать Canvas. Я знаю, он не очень чистый, но, поскольку он использует абсолютные значения и не очень хорошо проверяет «родительские», он должен быть быстрее, чем другие контейнеры (например, HBox, VBox и т. Д.)
  • попытайтесь отобразить видео в полном размере (убедитесь, что размеры закодированного видео правильные, чтобы не было циклов ЦП при изменении размера видео

Хорошо, это был материал Flex.

Было бы очень удобно прочитать статью Sencular по асинхронному ActionScript Выполнение , в котором объясняется, как Flash Player обрабатывает обновления и визуализацию. async frames
(источник: senocular.com )

Фреймы выполняют ActionScript и визуализируют экран

async frames streched
(источник: senocular.com )

ActionScript занимает много времени время до завершения рендеринга задержек

Я полагаю, что с этим связана подергивание.Кроме того, я предполагаю, что ты мог бы получить моменты плавного движения, а затем внезапные остановки, время от времени, когда Flash Player ловит дыхание (Сборщик мусора очищает)

Статья Виктора Драмбы о «Многопоточности» в ActionScript также может быть полезным.

Итак, напомним:

  • используйте Profiler или что-то в этом роде и посмотрите, не тормозит ли вас фреймворк Flex или где «узкое место».
  • улучшите как можно больше с этой стороны, а затем проверьте, как Flash Player обрабатывает все ActionScript («эластичные» фреймы)

Если узкое место исходит из инфраструктуры Flex, в худшем случае, вы можно попытаться минимизировать количество компонентов, которые проходят по списку отображения, и используйте чистый ActionScript для других вещей (как предлагает @PatrickS, используйте TweenLite и т. д.)

Если это помогает, попробуйте предварительно загрузить данные (получить RSS-канал и все такое) в начале, и когда у вас будет больше из важных битов, которые не требуют частого обновления / загрузки, отобразите приложение. Вы будете использовать больше памяти, но у вас будет больше циклов процессора для других задач. Кроме того, если «узким местом» являются экранные объекты, а их много, проверьте, можно ли их повторно использовать с помощью пулов объектов.

HTH

3
ответ дан 7 December 2019 в 03:09
поделиться
Другие вопросы по тегам:

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