Это старый вопрос, но я думал, что опубликую свое решение, если оно будет полезно другим в будущем. Мое решение обрабатывает любое количество полей api autocomplete на странице. Вам нужно будет пометить все поля автозаполнения с именем класса, в моем случае я использовал имя класса «адрес».
Теперь возьмите коллекцию полей:
var input = document.getElementsByClassName('address');
for (var x = 0; x < input.length; x++) {
addListener(input[x]);
}
, который вызывает функцию «addListener»
function addListener(el) {
var autocomplete = new google.maps.places.Autocomplete(el);
google.maps.event.addListener(autocomplete, 'place_changed', function () {
// Do whatever you want in here e.g.
// var place = autocomplete.getPlace();
});
}
. Поскольку это коллекция, вы должны иметь возможность добавлять любое количество полей автозаполнения на страницу. Хотя, естественно, вы должны проверить наличие неопределенного в коллекции на случай, если на странице не будет полей автозаполнения.
У меня есть те же проблемы, как Вы, я думаю. Проверьте мое сообщение здесь:
Проблемы Производительности Java2D
Это показывает причину снижения производительности и как зафиксировать его. Это, как гарантируют, не будет работать хорошо над всеми платформами все же. Вы будете видеть почему в сообщении.
Синтез ответов на это сообщение, ответов на Consty , и мое собственное исследование:
, Что работы:
GraphicsConfiguration.createCompatibleImage
для создания изображений, совместимых с тем, что Вы привлекаете. Это абсолютно необходимо! Canvas.createBufferStrategy
. -Dsun.java2d.opengl=True
где это возможно для ускорения рисунка. В моих тестах, с помощью этих методов, я получил увеличение скорости 10x - 15x, делая надлежащий Java 2D графикой возможность.
Вот некоторые подсказки первое, что пришло на ум. Если Вы были более конкретными и что Вы пытались сделать, я могу помогать больше. Походит на игру, но я не хочу принимать.
Только тянут то, что Вы должны! Вслепую не называйте перекрашивание () всем временем, пробуйте некоторые одноуровневые элементы как перекрашивание (Rect) или перекрашивание (x, y, w, h).
Быть очень осторожным с альфой, смешивающейся, поскольку это может быть дорогая операция к смешиванию изображений / примитивы.
Попытка предварительно представить / кэш как можно больше. Если Вы рисуете круг, тот же путь, много раз, рассматривает подхождение к концу в BufferedImage и затем просто привлекает BufferedImage. Вы жертвуете памятью за скорость (типичный для игр / высокая графика перфекта)
, Рассматривают использование OpenGL, используют JOGL LWJGL. JOGL более подобен Java, тогда как LWJGL обеспечивает больше играющей функциональности сверх доступа OpenGL. OpenGL может потянуть порядки величины (с надлежащими аппаратными средствами и драйверами), чем Swing может.
Я сделал некоторые основные приложения рисунка с помощью Java. Я не работал ни над чем слишком графическо-интенсивным, но я рекомендовал бы иметь хороший дескриптор на всех вызовах 'перекрашивания'. Дополнительное перекрашивание обращается к родительскому контейнеру, мог удвоить объем рендеринга Вашего выполнения.
Я наблюдал этот вопрос, надеясь, что кто-то предложил бы Вам лучший ответ, чем мой.
Тем временем, я нашел следующий отчет Sun, который был записан после бета-версии jdk 1.4. Существуют некоторые интересные рекомендации здесь на подстройке, включая флаги во время выполнения (у основания статьи):
" Флаг Во время выполнения Для Соляриса и Linux
, Запускающегося с Бета 3 выпуска SDK, версии 1.4, Java, 2D хранилища отображают в пиксельных картах по умолчанию, когда DGA не доступен, работаете ли Вы в локальной или удаленной среде дисплея. Можно переопределить это поведение с флагом pmoffscreen:
-Dsun.java2d.pmoffscreen=true/false
при установке этого флага на истинную, внеэкранную поддержку пиксельной карты, включен, даже если DGA доступен. При установке этого флага на ложь внеэкранная поддержка пиксельной карты отключена. Отключающая внеэкранная поддержка пиксельной карты может решить некоторые проблемы рендеринга. "
удостоверьтесь, что Вы используете двойную буферизацию, тянете сначала к одному большому буферу в памяти, которую Вы затем сбрасываете для экранирования, когда весь рисунок сделан.
Существует несколько вещей, которые необходимо будет иметь в виду
, 1) обновляется эта ссылка шоу, как использовать swingtimers, который мог бы быть хорошим вариантом для вызова перекрашивания. Получение вычисленного перекрашивания (поскольку в предыдущих плакатах было сказано, важно, таким образом, Вы не делаете слишком большой работы).
2) Удостоверяются, что Вы только делаете рисунок в одном потоке. Обновление UI от потоков mulitple может привести к противным вещам.
3) Двойная буферизация. Это делает рендеринг более гладким. этот сайт имеет некоторую более хорошую информацию для Вас
Альтернатива, если Вы не хотите идти чистый 2D Java, должна пользоваться игровой библиотекой, такой как GTGE, или JGame (ищите их на Google), затем предложите легкий доступ к графике и также предложите двойную буферизацию и намного более простые команды рисования.
Есть одна важная, которая, я думаю, еще не упоминалась: кэшируйте изображения всего, что можете. Если у вас есть объект, который движется по экрану, и его внешний вид не сильно меняется, нарисуйте его на изображении, а затем визуализируйте изображение на экране в новом положении в каждом кадре. Сделайте это, даже если объект очень простой - вы можете быть удивлены тем, сколько времени вы сэкономите. Рендеринг растрового изображения намного быстрее, чем рендеринг примитивов.
Возможно, вы захотите явно настроить подсказки рендеринга и отключить такие вещи, как сглаживание, если это позволяет качество.