Nano Hash - криптовалюты, майнинг, программирование

Приложение для iPhone работает медленно, используя телефонную связь

Я разработал приложение для рисования iphone/android, используя phonegap. При сенсорном запуске и сенсорном перемещении приложение может рисовать линии на холсте (контекст). Рисование на линии происходит очень медленно. Даже время загрузки приложения очень медленное (экран-заставка отображается минимум 6-8 секунд.

Размер папки www меньше 2 МБ. Мы не загружаем сложную или тяжелую графику.

Любое предложение будет оценено.


  • Вы могли бы дать нам более подробную информацию о приложении. Размер (в кб), загруженные изображения и так далее. Я заметил, что Phonegap работает медленно в сложных/тяжелых графических приложениях. 15.09.2011
  • Размер папки www меньше 2 МБ. Мы не загружаем сложную или тяжелую графику. Сначала функция рисования замедляется, но если пользователь продолжает использовать приложение, то через некоторое время функция рисования приложения в некоторой степени работает нормально. 15.09.2011

Ответы:


1

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

Обратите внимание, что вы можете изменить настройки своего контекста.

@synthesize canvas, drawing; //Both UIImageViews
CGPoint touchPrev;
CGPoint touchLoc;

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch * touch = [touches anyObject];
    touchPrev = [touch locationInView:self.view];
}

-(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch * touch = [touches anyObject];
    touchLoc = [touch locationInView:self.view];

    UIGraphicsBeginImageContext(canvas.frame.size);
    [canvas.image drawInRect:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetLineWidth(context, 8);
    CGContextSetRGBStrokeColor(context, 0.8, 0, 0, 1);

    CGContextSetLineCap(context, kCGLineCapRound);

    CGContextBeginPath(UIGraphicsGetCurrentContext());
    CGContextMoveToPoint(UIGraphicsGetCurrentContext(), touchLoc.x, touchLoc.y);
    CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), touchPrev.x, touchPrev.y);
    CGContextStrokePath(UIGraphicsGetCurrentContext());

    canvas.image = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    touchPrev = touchLoc;
}

-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    touchPrev = touchLoc;
}
15.09.2011
  • Привет, Фернандо, я использую html5/Javascript в своем приложении (используя структуру телефонной связи). Вышеупомянутый код принадлежит Core Objective C. 15.09.2011

  • 2

    Это ограничение, которое трудно обойти. Выполнение этого с помощью веб-технологий неизбежно будет иметь этот побочный эффект. Единственный обходной путь - сделать это с 2D-графикой.

    15.09.2011
  • Привет, Рахул! Мы уже используем 2D-графику. холст = документ.getElementById(холст); холст.ширина = окно.внутренняя ширина-5; холст.высота = окно.внутренняя высота -5; ctx = холст.getContext(2d); ctx.fillStyle = черный; ctx.beginPath(); ctx.lineWidth = 35; ctx.strokeStyle = 'БЕЛЫЙ'; ctx.lineCap = круглый; ctx.lineJoin = круглый; canvas1.ontouchstart = function(e) { // инициализируем x и y } canvas1.ontouchmove = function(e) { // выполняем функцию рисования } 15.09.2011
  • @neil, то, что вы используете, - это javascript, я имел в виду фреймворки QuartzCore или Core2D для iOS. 15.09.2011
  • Я использую html5 canvas/context для рисования нескольких строк. Функциональность рисования очень быстрая в эмуляторе iphone, но медленная на реальном устройстве. 15.09.2011
  • Симулятор iPhone не является реальным параметром производительности. Поскольку он работает на Macbook (больше оперативной памяти, больше процессора), он не показывает реальную картину. Я создал несколько приложений на основе холста с использованием javascript, производительность никогда не бывает такой же, как у собственных фреймворков из-за ограничений WebView. Интересно, что производительность будет лучше, если вы создадите веб-приложение и откроете его в сафари, по сравнению с UIWebView. 15.09.2011
  • Наше приложение будет веб-кодированием и инкапсулировано в папку www. Phonegap позволит преобразовать веб-приложение в собственное приложение. На рынке есть много приложений для телефонной связи с высокой скоростью. Почему наше приложение для рисования такое медленное? 15.09.2011
  • @neil, сам дисплей PhoneGap хоть и медленный, но не очень плохой. Это перехватывающее действие пользователя touchstart, stop и т. д., что делает его медленным. В отличие от собственного компонента, здесь холст является компонентом второго уровня внутри UIWebView, и, следовательно, передача управления и обратной связи будет медленнее по сравнению с рисованием непосредственно в собственных представлениях. 15.09.2011
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..