Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   "Вибрирование" детей, при смещении родителя. Кто-нибудь сталкивался? (http://www.flasher.ru/forum/showthread.php?t=149704)

goodguy 30.01.2011 10:37

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

Кто-нибудь сталкивался с такой проблемой? Как решали?
Я уже всю голову сломал, пытаясь найти решение..

mooncar 30.01.2011 10:45

Я конечно с т.зр. AS3 не знаю, но в проектах на AS2 такое наблюдал, когда дети слишком перегружены разнообразным графическим контентом. Решал так - отрисовывал содержимое контейнера в битмапу и аттачил на то же место, а у исходного содержимого скрывал видимость до момента, когда вдруг понадобится использовать какие-то активные элементы и перерисовать заново.

mikhailk 30.01.2011 11:12

Можно попробовать поставить детям cashAsBitmap=true и круглые координаты.

f.g.programmer 30.01.2011 11:42

Похоже, что внутри контейнера лежат битмапы и они выравниваются до ближайшего пикселя.
Можно или задавать только целые координаты и детям и контейнеру. Или битмапам задавать параметр pixelSnapping = PixelSnapping.NEVER, и присваивать скалирование отличное от 1 (это вроде баг плеера, что при скалировании 1 параметр не действует)

mooncar 30.01.2011 11:46

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

goodguy 30.01.2011 12:13

Цитата:

Либо перегруз контента, либо автору нужно проверить скорость побыстрее. Если рывков контента не будет, значит дело в выравнивании битмапы по целым координатам, незаметному при больших скоростях.
На таких скоростях, на которых вообще можно наблюдать движение объекта, он всегда вибрирует.

Цитата:

Можно попробовать поставить детям cashAsBitmap=true и круглые координаты.
cacheAsBitmap стоит, но круглые координаты, никак не поставить. В данном случае, контейнер содержит игровую карту, и персонажей. При движении персонажей с разной скоростью, контейнер движется в противоположную. При этом скорость может быть любой, так как там есть и плавный разгон и плавное торможение.

Цитата:

Я конечно с т.зр. AS3 не знаю, но в проектах на AS2 такое наблюдал, когда дети слишком перегружены разнообразным графическим контентом. Решал так - отрисовывал содержимое контейнера в битмапу и аттачил на то же место
Слишком сложно, да и в данном случае не вариант, так как эти объекты реагируют на мышь, а битмап, на сколько я знаю, этого не позволяет.
Цитата:

Похоже, что внутри контейнера лежат битмапы и они выравниваются до ближайшего пикселя.
Можно или задавать только целые координаты и детям и контейнеру. Или битмапам задавать параметр pixelSnapping = PixelSnapping.NEVER, и присваивать скалирование отличное от 1 (это вроде баг плеера, что при скалировании 1 параметр не действует)
Так и есть. Сейчас попробую :)

Добавлено через 44 минуты
не помогло ((
Собираю объект в рантайме, назначаю
Код AS3:

pixelSnapping = "never";

И все равно он дрожит при движении.

Кстати, объект собран таким образом: сам он представляет из себя мувиклип, а уже внутрь добавляется битмапка.

При этом если добавить битмапку в тот же общий контейнер без мувиклиповой обертки, она вибрировать не будет. Похоже мувиклип как-то примагничивается к пикселям

mikhailk 30.01.2011 13:08

А как реализованы персы и карта?
Дергается, вероятно, поскольку не хватает вычислительной мощности.

1. Надо упростить карту. Какие там размеры, кстати, и как она собирается? Даже если из мувиков - ее можно катнуть в растр, а вытаскивать по частям.

2. Надо упростить персов. Тут тоже катать в растр (или изначально выполнять как секвенцию). Перс с растровым контентом на мышь реагирует нормально, это беспокоить не должно.

Добавлено через 4 минуты
Меня, кстати, сомнения посетили.

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

goodguy 30.01.2011 14:04

Цитата:

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

Цитата:

Вы часом не пишете бродилку, в которой перс висит посреди экрана, а мир под ним движется в зависимости от его направления движения?
Нет. Игра намного сложнее. Это военная стратегия, с кучей танков, джипов, вертолетов, солдат (которые могут перемещаться отрядами и по-одиночке), домов, которые можно взорвать и т.д.

Цитата:

А как реализованы персы и карта?
Дергается, вероятно, поскольку не хватает вычислительной мощности.
Вычислительной мощности более чем достаточно. Причину дерганья я нашел http://darqwan.proibito.ro/2009/07/2...ters-the-hack/

Все именно так, как описано в этой статье. Так что остается единственный вариант, пойти по сложному пути и отрисовывать не активных персонажей в битмапку

Добавлено через 2 часа 39 минут
Не помогает и отрисовка в битмап.

TanaTiX 30.01.2011 17:34

Была у меня такая же проблема. Попробовал сейчас на старом проекте - тоже отрисовка не помогла. Если есть желающие могу выложить несколько классов быдлокода для тестов. Пишите если нужно.
Сам проблему так и не решил (не было должного стимула наверное)

goodguy 30.01.2011 21:34

Блин. В целом проект получился неплохой, самому нравится :D Но какая-то ложка дегтя все-таки нашлась
Самое интересное, что сама карта, тоже представляет из себя битмап, добавленный в тот же контейнер, и двигается так же, но она не вибирирует, а мелкие объекты вибирируют
Уже весь гугл перелопатил вдоль и поперек, все предлагают отрисосвать в битмап...


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

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