![]() |
|
|
![]() |
![]() |
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
Регистрация: Nov 2011
Сообщений: 41
|
![]() Товарищи, вчера весь день лопатил и рунет и буржуйские форумы в поиске проблемы, связанной с мерцанием графического объекта при его программном движении. Эта проблема и здесь на форуме поднималась различными пользователями в нескольких темах, но нигде результирующего решения так и не было озвучено.(или я слепой).
НЕТ ПРОБЛЕМ С ПЛАВНОСТЬЮ ДВИЖЕНИЯ Есть проблема с отрисовкой объекта при его перемещении. То есть как я понимаю проблема в том Flash начинает рисовать объект на новом месте, до конца не удалив его с предыдущего, в результате на объекте видны мерцающие горизонтальные полосы. В качестве примера быстро набросал программку с вращением шара по эллипсоидной траектории (фон черный, объект белый, специально для лучшего контраста), где сами можете даже не на слишком большой угловой скорости увидеть эффект с мерцанием. http://megaswf.com/serve/2104891 Код: 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; } } }
Кто-то говорит что надо ждать новой версии флеш-плеера, кто-то что это проблема ВООБЩЕ на флеше не решается. Но может есть у кого какой-нибудь опыт в борьбе с этим эффектом ? Был бы очень признателен. Последний раз редактировалось Black Soviet; 31.01.2012 в 11:22. |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Полет нормальный (win7 x64):
Цитата:
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
Регистрация: Nov 2011
Сообщений: 41
|
i.o.
Ух ты! Ух ты! У меня уже при угловой скорости =0.12 мерцает, при 0.18 аццкие перетяжки. Спасибо, уже интереснее! |
|
|||||
Регистрация: Nov 2011
Сообщений: 41
|
Hauts
Вы хотите сказать, что и у вас шар не мерцает ? |
|
|||||
Регистрация: Nov 2011
Сообщений: 41
|
i.o.
Скачал 11 версию плеера, всё равно мерцает. Добавлено через 2 минуты Hauts Вспомните любую мало-мальскую флеш-игру в которой достаточно крупные объекты (или даже фон) двигаются по криволинейной траектории и при том не мерцают. |
|
|||||
Только недавно такая тема поднималась
|
|
|||||
Регистрация: Nov 2011
Сообщений: 41
|
fish_r
Нет, я в первом посте написал что Я НЕ ПРО ДЕРГАННОСТЬ при перемещении говорю. Шар в моём проекте движется плавно, он мерцает, Флеш не успевает отрисовать его. |
![]() |
![]() |
Часовой пояс GMT +4, время: 04:09. |
|
« Предыдущая тема | Следующая тема » |
Теги |
rendering , wmode |
Опции темы | |
Опции просмотра | |
|
|