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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 31.03.2015, 18:32
a7s1h1 вне форума Посмотреть профиль Отправить личное сообщение для a7s1h1 Найти все сообщения от a7s1h1
  № 1  
Ответить с цитированием
a7s1h1

Регистрация: Oct 2013
Сообщений: 126
По умолчанию чёрный прямоугольник в месте скопления изображений

Здравствуйте! Проблема такая: когда в одном месте собирается более 22 юнитов (экземпляры класса с ребёнком-анимацией, взятой при загрузке игры из библиотеки swc и растрированной), то изображение некоторых из них превращается в чёрный прямоугольник по границам кадра. Судя по тому, что этот прямоугольник никогда не перекрывает "передних" юнитов, можно сделать вывод, что в прямоугольник превращаются те юниты, у которых глубина меньше (т.е. которые появились раньше). Если "лишних" юнитов убрать (например, убив), то чёрный прямоугольник пропадает. Таким образом, "новоприбывшие" в точку юниты заставляют "старичков" в порядке появления (т.е. по порядку, начиная с наименьшего по глубине) превращаться в чёрные прямоугольники. Я, правда, не уверен, что юниты превращаются в прямоугольники полностью, возможно, чёрным закрашивается лишь прозрачная область кадра, но из-за обилия изображений не разобрать.
Фуф... Постарался описать проблему максимально подробно, а теперь вопрос: почему появляется чёрный прямоугольник и как с ним бороться?

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

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
Вы называете это максимально подробно??? Выложите проект возпроизводящий описанную проблему, тогда можно будет о чем нибудь говорить.

Старый 31.03.2015, 18:46
a7s1h1 вне форума Посмотреть профиль Отправить личное сообщение для a7s1h1 Найти все сообщения от a7s1h1
  № 3  
Ответить с цитированием
a7s1h1

Регистрация: Oct 2013
Сообщений: 126
Боюсь, что выдёргивать из общей структуры отдельный кусок, чтобы он был ещё и работоспособен, я буду очень-очень долго. Я надеялся, что, мало ли, кто-то уже сталкивался с такой проблемой, что когда в одном месте собирается много изображений, то некоторые из них начинают отображаться неправильно...

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Насколько я помню, вы использовали классы для растеризации мувиклипов. Косяк или у вас, или в них.
__________________
There is no thing in this world that is not simple.

Старый 31.03.2015, 19:02
a7s1h1 вне форума Посмотреть профиль Отправить личное сообщение для a7s1h1 Найти все сообщения от a7s1h1
  № 5  
Ответить с цитированием
a7s1h1

Регистрация: Oct 2013
Сообщений: 126
Попробовал поставить в одну точку 23 мувика. Вариант с растеризацией:
Код AS3:
for (var j:int = 0; j < 23; j++) {
				var yyy:AntActor = new AntActor();
				yyy.addAnimFromCache('Enemy01Action_mc');
				yyy.play();
				addChild(yyy);
				yyy.x = W * .5;
				yyy.y = H * .5;
			}
22 отображаются нормально, начиная с 23го пошли прямоугольники.
А это вариант без растеризации:
Код AS3:
for (var j:int = 0; j < 69; j++) {
				var yyy:Enemy01Action_mc = new Enemy01Action_mc();
				//yyy.addAnimFromCache('Enemy01Action_mc');
				//yyy.play();
				addChild(yyy);
				yyy.x = W * .5;
				yyy.y = H * .5;
			}
Без растеризации даже при наличии 69 экземпляров всё нормально. Т.е. проблема в классе для растеризации?

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Выложите код, или попробуйте последнюю версию класса(с гитхаба Антона Карлова).
__________________
There is no thing in this world that is not simple.

Старый 31.03.2015, 19:13
a7s1h1 вне форума Посмотреть профиль Отправить личное сообщение для a7s1h1 Найти все сообщения от a7s1h1
  № 7  
Ответить с цитированием
a7s1h1

Регистрация: Oct 2013
Сообщений: 126
У Антона теперь этот класс отдельно взять проблематично, он все классы в движок связал, и теперь они там все друг на друга ссылаются. Попробую сам поковыряться. Спасибо за оперативные ответы

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Этот баг флеш плеера давно существует, уже года 4 назад обсуждался, если не больше. Проблема в наложении альфаканалов. Кто-то даже решение предлагал положить на самый нижний слой картинку без альфаканала, например загруженный jpeg

Старый 31.03.2015, 19:24
a7s1h1 вне форума Посмотреть профиль Отправить личное сообщение для a7s1h1 Найти все сообщения от a7s1h1
  № 9  
Ответить с цитированием
a7s1h1

Регистрация: Oct 2013
Сообщений: 126
Нашёл тему, про которую вы говорите. Там написано: Но как только на задний фон флешки положил картинку в формате jpg, а не в png, то баг исчез. Я попробовал так:
Код AS3:
// добавляем подложку для исправления бага с альфа-каналами
			[Embed(source = "back.jpg")] var Back:Class;
			var backMain:Bitmap = new Back;
			addChild(backMain);
но не получилось. Может, как-то по-другому надо эту картинку на фон добавлять? Подскажите, пожалуйста, как правильно "класть картинку на задний фон"?


Последний раз редактировалось a7s1h1; 31.03.2015 в 19:46.
Старый 31.03.2015, 20:12
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 10  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Код AS3:
stage.addChildAt(image, 0);

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

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

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


 


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


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