PDA

Просмотр полной версии : Отображать видимую часть клипа


Chilly
02.03.2006, 00:15
Здрастье. Вот "небольшая проблемка". Есть огромная swf-карта, которую засунули в библиотеку клипа.
На клипе стоит scrollpane, в него-то и поместили карту. Когда zoom'лю карту(а надо до 32 раз), то при максимальном zoom'е карта жутко тормозит( полосы прокрутки двигаются рывками, чтобы отметить место на карте щелчком надо ждать 5-10 сек и тд ).
И вот мои вопросы:
1)Подскажите, пожалста, как не отрисовывать то, что выходит за пределы видимости scrollpane(может можно как-то программно порезать карту, запомнить куда-нибудь кусочки и выводить их по мере необходимости)
2)Иногда приходится программно рисовать маршрут, но при масштабировании он пропадает. Исправляется все refreshpane, но эта функция для такой большой карты выполняется где-то 20-30 сек. Есть ли альтернативный метод refreshpane
Скорей всего второй вопрос решится за счет первого, так что первый наверно будет поважнее.

Antares
02.03.2006, 00:20
Разбить на части и держать одновременно лишь несколько частей.

Chilly
02.03.2006, 00:24
Так и как же это сделать. Были ли примеры по этой теме?

Antares
02.03.2006, 00:30
Очень просто. Совместить части и по мере движения цеплять другие.

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

Antares
02.03.2006, 00:30
либо -- как вариант -- именовать квадраты как на картах. Типа Е48, М61 и т.п.
Так можно держать в игре очень большую карту.

Chilly
02.03.2006, 00:42
Да, елки, я не совсем идею прошу, я её уже предложил, меня сама реализация интересует. И кстати это не игра, а серьезная прога. Карта - России детальная.
Так вот, как можно отрезать кусок и занести куда-нибудь в массив?Ну или если не в массив, то как из куска карты сделать мувик?

Antares
02.03.2006, 00:49
Серьезная это прога или нет -- тебе был рассказан вариант. Но ты же не идею просишь, тебе же _реализация_ интересна... :\

Chilly
02.03.2006, 01:04
Я же сразу написал: "может можно как-то программно порезать карту, запомнить куда-нибудь кусочки и выводить их по мере необходимости". Мне зачем-то ответили тоже самое но другими словами. И это называется "рассказан вариант"!
И вопрос был другой: "Так вот, как можно отрезать кусок и занести куда-нибудь в массив?Ну или если не в массив, то как из куска карты сделать мувик?"

K.A.T.A.F.A.L.K.E.R
02.03.2006, 01:08
Так вот, как можно отрезать кусок и занести куда-нибудь в массив?
В фатажопе. Или такой вариант не катит?

Король
02.03.2006, 01:11
варианты -
1)битмап в восьмерке режем скриптом
2)элементарно дублируем битмап и на каждый кусок ставим в нужном месте маску

Chilly
02.03.2006, 01:12
В фатажопе. Или такой вариант не катит? Нет, совсем не катит, карта векторная должна быть, чтоб при максимальном масштабе все четко было. Ну короче требования такие. Да и вообще, её даже не отредактировать(т.е. вручную не порезать), т.к. там огромное кол-во элементов. Поэтому надо программно резать, вот я и спрашиваю как?

Chilly
02.03.2006, 01:13
варианты -
1)битмап в восьмерке режем скриптом
2)элементарно дублируем битмап и на каждый кусок ставим в нужном месте маску
Это не битмап, это клип. Как порезать скриптом, каким скриптом, какими функциями

Король
02.03.2006, 01:29
если не битмап - то вопрос как порезать скриптом отпадает сам по себе. если только клип конечно не перегнать скриптом в битмап.
обрати внимание на мой второй совет

Chilly
02.03.2006, 01:38
Не, не вот тут я не понял. Что я должен сделать? Совет в том, что я вопрос уже отпал:) или что я должен перегнать клип в битмап, но мне это и не нужно

Король
02.03.2006, 01:45
ты считать умеешь? второй - это пункт два, он же 2)
еще раз на словах: дублируй свой клип или что там у тебя и маскируй так чтоб был виден только нужный кусок каждого дубликата

Chilly
02.03.2006, 01:51
Виноват, к ночи уже уже слова не разбираю. Что сделать понял , не понял как? Теперь не понял как маскировать

Chilly
02.03.2006, 01:57
А с этим я скорее всего уже разбирусь. Всем спасибо.

Antares
02.03.2006, 02:16
Про класс BitmapData слышал?

Король
02.03.2006, 02:19
Antares, уже выяснили, что нет

meiciuc
02.03.2006, 04:19
Я делал тестовый вариант карты города, тоже использовал скролл-панель. Вопрос, насколько большая карта? Почему при максимальном зуме больше всего тормозит? Я немного экспериментировал с возможностями скроллинга с большим числом графических объектов. Заметил следующую закономерность - наибольшие тормоза скроллинга наблюдаются при одновременном перемещении ВИДИМЫХ объктов (альфа=0 тоже считается) в окне плейера. Если то же самое количество объектов смещать за пределами флеш-плейера, то на скорость это практически не влияет. Наверняка, до какого-то предела - я до него не доходил (перемещал одновременно скроллингом до тысячи ПРОСТЫХ объектов). При увеличении масштаба отображения карты уменьшалось, соответственно, число одновременно находящихся в видимой части клипа объектов, скорость-плавность скроллинга возрастала. Почему у тебя наоборот?
Парни, похоже правы, не бит-мап не порезать программно. Но можно нарезать и не программно, я так понимаю - это единый клип?

Король
02.03.2006, 08:57
Я делал тестовый вариант карты города, тоже использовал скролл-панель. Вопрос, насколько большая карта? Почему при максимальном зуме больше всего тормозит? Я немного экспериментировал с возможностями скроллинга с большим числом графических объектов. Заметил следующую закономерность - наибольшие тормоза скроллинга наблюдаются при одновременном перемещении ВИДИМЫХ объктов (альфа=0 тоже считается) в окне плейера. Если то же самое количество объектов смещать за пределами флеш-плейера, то на скорость это практически не влияет. Наверняка, до какого-то предела - я до него не доходил (перемещал одновременно скроллингом до тысячи ПРОСТЫХ объектов). При увеличении масштаба отображения карты уменьшалось, соответственно, число одновременно находящихся в видимой части клипа объектов, скорость-плавность скроллинга возрастала. Почему у тебя наоборот?
Парни, похоже правы, не бит-мап не порезать программно. Но можно нарезать и не программно, я так понимаю - это единый клип?
у этого есть очень простое объяснение:
больше всего тормозов приходится на отрисовку объектов на сцене. соответственно, что, чего не видим - не отрисовывается и не тормозит

meiciuc
02.03.2006, 09:37
у этого есть очень простое объяснение:
больше всего тормозов приходится на отрисовку объектов на сцене.
соответственно, что, чего не видим - не отрисовывается и не тормозит


именно это объяснение я и дал.

valvika
02.03.2006, 10:28
Резать на квадраты бесполезно. Только усложнит код.
Надо смотреть его графику - там по-видимому контуров нев..ное кол-во.
Не хочу по н-тому разу рассказывать. Пусть делает поиск по форуму. Уже обсуждалось. Не хочет - "ГоуТу раздел работа". Там я его встречу.:)

valvika
02.03.2006, 13:39
... Есть огромная swf-карта, которую засунули в библиотеку клипа.....Упорный парень. С Августа 2005 ( судя по топикам ) эту СкроллПанель и карты мучает. :)
Тебе за это время зарплату платили? или ты на общественных началах? :)

AxelRB
02.03.2006, 15:36
2 K.A.T.A.F.A.L.K.E.R
В фотошопе видимо не поканает, так как у человека клип swf резать надо.
2 Король
1) Это не битмап
2) У него 1 объект тормозит секунд на 30, а тут куча таких объектов да еще и с масками!

Надо резать этот клип, но только ручками во флэше, и загонять в либу кусочками... %(

AxelRB
02.03.2006, 15:40
у этого есть очень простое объяснение:
больше всего тормозов приходится на отрисовку объектов на сцене. соответственно, что, чего не видим - не отрисовывается и не тормозит
Допустим у человека карта 10000х10000 размером, а окно 1024х768. В любом случае отображаемая область не больше 1024х768, независимо от зума.
Тем не менее сообщается, что при зуме тормоза сильнее, значит дело не в отображаемой области...

Король
02.03.2006, 22:42
"У него 1 объект тормозит секунд на 30, а тут куча таких объектов да еще и с масками!"

попробуй проведи простой эксперимент - сделай огромную карту и двигай ее - увидишь тормоза. потом положи карту под маску небольшого размера - тормоза исчезнут

nouba
03.03.2006, 17:44
2Король

Ничего подобного ... маска сути дела не меняет :)))
Что так что так тормоза будут если очень большой битмап.... и будь то маска размером 100на100 или 10на10 - от этого ничего не изменется


_root.attachMovie("maska", "maska", _root.getNextHighestDepth(), {_width:10, _height:10, _x:0, _y:0});
me.setMask("maska");
_global.FPS = 0;
function fp() { trace(_global.FPS); _global.FPS = 0;}
function mve() { me._x -= 1; me._y -= 1; _global.FPS++;}
id = setInterval(mve, 20);
id2 = setInterval(fp, 1000);


Сделай инстанс мувика с именем "me" c вложеным в него битмапом размером 4000 на 4000 пикселей и проверь ФПС... от изменеия размера маски ничего не поменяется