Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.12.2012, 21:47
AlexLucas вне форума Посмотреть профиль Отправить личное сообщение для AlexLucas Найти все сообщения от AlexLucas
  № 11  
Ответить с цитированием
AlexLucas
[+1 05.11.12]
 
Аватар для AlexLucas

Регистрация: Feb 2011
Сообщений: 431
Цитата:
задача в том каким образом организовать перемещение по графику
Вы имеете в виду как перетаскивать график влево и вправо ? По типу графиков соотношения валют ?

Старый 12.12.2012, 21:49
FiftyStars вне форума Посмотреть профиль Отправить личное сообщение для FiftyStars Найти все сообщения от FiftyStars
  № 12  
Ответить с цитированием
FiftyStars

Регистрация: Dec 2012
Сообщений: 20
Цитата:
Сообщение от expl Посмотреть сообщение
Можно пододвигать контейнер таким образом, чтобы требуемая точка была в центре экрана (математикой, возможно с использованием localToGlobal/globalToLocal)

Общий совет:
- сделайте 500 000 точек (хоть с помощью Math.random, хоть любой другой функцией)
- посмотрите реальные тормоза
- а уже потом что-то делайте и смотрите стало лучше или нет.
Просто без реальных тестов пытаться оптимизировать (особенно отрисовку, а не алгоритмы) - дело безнадёжное - есть неслабые шансы сделать ещё медленне

Один совет:
- если всё Вы это сделали и fps падает при простом проведении мыши - значит надо убирать объекты за пределами видимости с экрана,
если при проведении мыши над свечками - ни просадки fps - ни нагрузки на процессор - то не факт что поможет - рендерится то ведь только то уместилось на экране, а считается для мыши всё что уместилось и что не уместилось.
Оптимизация это будет другой вопрос, сейчас желательно определиться с методом скролла графика и масштабирования. Есть ли возможность сделать огромную сцену, напихать на него свечек, а далее перемещать только точку обзора(пример - игры жанра стратегия. карта большая,но на экране мы видим только часть и скроллом мы перемещаем точку обзора и масштабируем не путем увеличения объектов а просто зумом всей сцены).
При подгрузке новых свечей расширяем сцену, при выгрузке - сужаем.
Вот и вопрос: какие классы мне понадобятся для этого? Библиотека AS3 большая и я не могу найти того что нужно с нужным набором параметров

Добавлено через 1 минуту
Цитата:
Сообщение от AlexLucas Посмотреть сообщение
Вы имеете в виду как перетаскивать график влево и вправо ? По типу графиков соотношения валют ?
именно - именно такой график и делаю.перемещение по графику и зум

Старый 12.12.2012, 21:53
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 13  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Не знаю, насколько вам может помочь такой вариант, но все же:

Цитата:
Давайте делать круче. Ничего не двигаем, а сделаем камеру.
Будем рисовать всё это дело в BitmapData, а двигать sourceRect в draw.
© Psycho Tiger

Тогда и затраты на рендеринг будут минимальны, как мне кажется. Подвинули-смасштабировали все элементы виртуально, отрисовали в битмапдату, ее и показываем.
__________________
hauts.ru

Старый 12.12.2012, 22:03
FiftyStars вне форума Посмотреть профиль Отправить личное сообщение для FiftyStars Найти все сообщения от FiftyStars
  № 14  
Ответить с цитированием
FiftyStars

Регистрация: Dec 2012
Сообщений: 20
Цитата:
Сообщение от Hauts Посмотреть сообщение
Не знаю, насколько вам может помочь такой вариант, но все же:



© Psycho Tiger

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

Старый 13.12.2012, 13:49
AlexLucas вне форума Посмотреть профиль Отправить личное сообщение для AlexLucas Найти все сообщения от AlexLucas
  № 15  
Ответить с цитированием
AlexLucas
[+1 05.11.12]
 
Аватар для AlexLucas

Регистрация: Feb 2011
Сообщений: 431
Не вижу проблемы в плане перемещения по графику - если сам график это одна картинка, то при MOUSE_MOVE считываете перемещение мыши и двигаете картинку, попутно расставляя все ваши индикаторы. Ну а как осуществить зум - ссылка в помощь.
Ну и при этом также прийдётся помножать координаты свечей/всего что не является графиком на зум - при двухкратном увеличении помножаете координаты на 2.
Не знаю как у вас, но в терминале, при перемещении график подгружается кусками, это бы помогло снизить тормоза.

Старый 13.12.2012, 16:01
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 16  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
Тогда и затраты на рендеринг будут минимальны, как мне кажется. Подвинули-смасштабировали все элементы виртуально, отрисовали в битмапдату, ее и показываем.
Затраты будут такие же, и даже больше
Просто если что-то требуется поверх этого графика двигать/отображать - будет быстрее,
сам скроллинг будет таким же медленным

Что-то может получится, если рендерить куски и перерисовывать bitmapData куска, только когда кусок вошёл в область видимости (скроллер TweenLite можно посмотреть)

А так при каждом перемещении рисовать в BitmapData то, что и так будет рендерить флешплеер - смысл?
Не, смысл есть в определённых ситуациях, но здесь вроде ситуация не такая.

Старый 13.12.2012, 17:04
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 17  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Так и останется. А рисовать будем картинку! В той же теме пример ниже.
А если нужна интерактивность мышки, то мы же можем и эмулировать её эдако. getObjectsUnderPoint и своя реализация клика – это же великолепно.

Старый 13.12.2012, 19:09
Sintesis вне форума Посмотреть профиль Отправить личное сообщение для Sintesis Найти все сообщения от Sintesis
  № 18  
Ответить с цитированием
Sintesis
 
Аватар для Sintesis

Регистрация: Jul 2008
Сообщений: 912
Всё не читал, но скролинг в игре делаю так:
Код AS3:
public function GameView(){
			super();
 
			_camera = new Sprite();//камера - просто спрайт, является контейнером
			addChild(Dispatcher._store.getBgGame());//задний фон не движимый, если нужен
 
			_avatar = new Sprite();//изображение героя
			_avatar.graphics.beginFill(0xff0000);
			_avatar.graphics.drawCircle(0, 0, 20);
 
var _laier2:Bitmap = new Bitmap();//ещё какой-нибудь слой графики
			_laier2.y = -100;
 
			addChild(_camera);
_camera.addChild(_laier2);
			_camera.addChild(_avatar);
			_camera.addChild(Dispatcher._store.getLevelsGraphic());//графика уровня
 
			addEventListener(Event.ENTER_FRAME, update);
		}
 
		private function update(evant:Event):void {
 
			_avatar.x = ...;//действуем на героя
			_avatar.y = ...;
			_camera.x = -_avatar.x / 2.5 + 20;//действуем на камеру 
			_camera.y = -_avatar.y / 1.5 + 70;
	                _laier2.x = _avatar.x / 5;//действуем на второй слой графики
			_laier2.y = _avatar.y / 4;
		}
	}
}
Перемещать нужно героя в общем спрайте-контейнере. И перемещать контейнер, в котором все спрайты находятся. Выходит, что надо перемещать и героя, и камеру. В общем просто наглядный пример, можно и под данную задачу подстроить, можно много слоёв графики обработать и скролить их по разному играя значениями в строке _camera.x = -_avatar.x / 2.5 + 20;

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:08.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 19:08.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.