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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 31.01.2012, 11:09
Black Soviet вне форума Посмотреть профиль Отправить личное сообщение для Black Soviet Найти все сообщения от Black Soviet
  № 1  
Ответить с цитированием
Black Soviet
 
Аватар для Black Soviet

Регистрация: Nov 2011
Сообщений: 41
The bomb! Мерцание при движении объекта (пример внутри))

Товарищи, вчера весь день лопатил и рунет и буржуйские форумы в поиске проблемы, связанной с мерцанием графического объекта при его программном движении. Эта проблема и здесь на форуме поднималась различными пользователями в нескольких темах, но нигде результирующего решения так и не было озвучено.(или я слепой).
НЕТ ПРОБЛЕМ С ПЛАВНОСТЬЮ ДВИЖЕНИЯ Есть проблема с отрисовкой объекта при его перемещении. То есть как я понимаю проблема в том Flash начинает рисовать объект на новом месте, до конца не удалив его с предыдущего, в результате на объекте видны мерцающие горизонтальные полосы.
В качестве примера быстро набросал программку с вращением шара по эллипсоидной траектории (фон черный, объект белый, специально для лучшего контраста), где сами можете даже не на слишком большой угловой скорости увидеть эффект с мерцанием.
http://megaswf.com/serve/2104891
Код:
Код AS3:
package 
{
 
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.display.Shape;
	import flash.display.BitmapData;
	import flash.display.Bitmap;
	import flash.utils.getTimer;
	import flash.events.TimerEvent;
	import flash.utils.Timer;
 
 
	public class main extends MovieClip
	{
		var a:int=100; // горизонтальный радиус (для эллипса)
		var b:int=100; // вертикальный радиус (эллипса)
		var cx:int = 350; // Х центра точки вокруг которой вращается шар
		var cy:int = 150; // Y центра точки вокруг которой вращается шар
		var t:Number=0;      // текущий угол в радианах
		var speed:Number = 0.05; // скорость вращения в радианах
		var mc:MovieClip; // Шар
		var dx,dy:Number; // используются как вспомогательные в формуле эллипса
 
		public function main()
		{
		mc = new Planet();
		addChild(mc);
		//mc.cacheAsBitmap = true;
		//mc.scaleX=1.1;
 
		addEventListener(Event.ENTER_FRAME,Vertigo);
		upBtn.addEventListener(MouseEvent.CLICK,Up); // нажатие на поле увеличивает скорость вращения
		downBtn.addEventListener(MouseEvent.CLICK,Down); // нажатие на поле уменьшает скорость вращения
 
		}
 
		function Vertigo(e:Event):void
		{
			t +=  speed; // увеличиваем угол 
			dx = a * Math.cos(t); // определяем положение по Х на эллипсе
			dy = b * Math.sin(t); // определяем положение по Y на эллипсе
			mc.x = cx + dx; //выставляем координаты шара, учитывая центр вращения (сх, су)
			mc.y = cy + dy;
 
 
			speedBar.text=String(speed); // показываем скорость на экране
		}
		function Up(e:MouseEvent):void
		{
			speed+=0.01;	
		}
		function Down(e:MouseEvent):void
		{
			speed-=0.01;	
		}
	}
 
}
Что пробовал для решения этой проблемы:
  • запихивать в мувиклип и вектор и растр - не помогает
  • cacheAsBitmap - не помогает
  • Использовать Timer с updateAfterEvent вместо EnterFrame - не помогает
  • прямолинейное движение только по целым координатам - не помогает
  • Увеличение FPS - не помогает

Кто-то говорит что надо ждать новой версии флеш-плеера, кто-то что это проблема ВООБЩЕ на флеше не решается. Но может есть у кого какой-нибудь опыт в борьбе с этим эффектом ? Был бы очень признателен.


Последний раз редактировалось Black Soviet; 31.01.2012 в 11:22.
Старый 31.01.2012, 11:29
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 2  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Полет нормальный (win7 x64):
Цитата:
10.3.181.34 release
11.0.1.60 debug

Старый 31.01.2012, 11:39
Black Soviet вне форума Посмотреть профиль Отправить личное сообщение для Black Soviet Найти все сообщения от Black Soviet
  № 3  
Ответить с цитированием
Black Soviet
 
Аватар для Black Soviet

Регистрация: Nov 2011
Сообщений: 41
i.o.

Ух ты! Ух ты! У меня уже при угловой скорости =0.12 мерцает, при 0.18 аццкие перетяжки.
Спасибо, уже интереснее!

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

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,112
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Попробуйте поменять частоту обновления экрана
__________________
hauts.ru

Старый 31.01.2012, 12:16
Black Soviet вне форума Посмотреть профиль Отправить личное сообщение для Black Soviet Найти все сообщения от Black Soviet
  № 5  
Ответить с цитированием
Black Soviet
 
Аватар для Black Soviet

Регистрация: Nov 2011
Сообщений: 41
Hauts

Вы хотите сказать, что и у вас шар не мерцает ?

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

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,112
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Мерцает. Но я к такому эффекту давно привык и как-то не задумывался об этом.
__________________
hauts.ru

Старый 31.01.2012, 12:31
Black Soviet вне форума Посмотреть профиль Отправить личное сообщение для Black Soviet Найти все сообщения от Black Soviet
  № 7  
Ответить с цитированием
Black Soviet
 
Аватар для Black Soviet

Регистрация: Nov 2011
Сообщений: 41
i.o.

Скачал 11 версию плеера, всё равно мерцает.

Добавлено через 2 минуты
Hauts

Вспомните любую мало-мальскую флеш-игру в которой достаточно крупные объекты (или даже фон) двигаются по криволинейной траектории и при том не мерцают.

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

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Да, что-то здесь этот отвратительный эффект плеера во всей красе проявляется. Может попробовать градиент в растр загнать (научного обоснования у меня нет, но вдруг поможет)?

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

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
Только недавно такая тема поднималась

Старый 31.01.2012, 13:59
Black Soviet вне форума Посмотреть профиль Отправить личное сообщение для Black Soviet Найти все сообщения от Black Soviet
  № 10  
Ответить с цитированием
Black Soviet
 
Аватар для Black Soviet

Регистрация: Nov 2011
Сообщений: 41
fish_r

Нет, я в первом посте написал что Я НЕ ПРО ДЕРГАННОСТЬ при перемещении говорю. Шар в моём проекте движется плавно, он мерцает, Флеш не успевает отрисовать его.

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

Теги
rendering , wmode

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

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


 


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


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