![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: May 2008
Сообщений: 27
|
собственно делал делал игрушку все путем
ландшафт рисуется домики строиться решил заняться техникой поставил танк прописал минимальное движение и обнаружил что анимация дергается при движение создается такое чувство что проскакивает кадр если очень быстро двигать поспрашивал сказали не пользуйся Unit.GotoAndStop(mFrame); типа раздели на кадры, Сказано сделано разделил тодже болт! начал грешить на то что где-то слишком часто обновляю экран и т.д. дошел до пустой флешки с минимальным кодом с приращением к unit.x += 4 при обновление 25 кадров в секунду все равно тормозит Флешем занялся не давно мб что прописывать надо настраивать или еще что я уже все перепробовал в чем может быть проблема картинки png размер 44Х44 код пишу в flashDevelop компиляция в Flash CS3 код: public class Main extends Sprite { /// массив слоев private var mvLayer:Array; private var mTimer:Timer; public var mUnit:MovieClip; public function Main() { mvLayer = []; mTimer = new Timer(40); mTimer.addEventListener(TimerEvent.TIMER, UpdateTime); mTimer.start(); //stage.addEventListener(Event.ENTER_FRAME, Update); onLoadComplete(); } public function onLoadComplete():void { for (var i:uint = 0; i < 1; i++ ) { mUnit = new Tank_2_1(); mUnit.y = 30*i; addChild(mUnit); mvLayer.push(mUnit); } } public function UpdateTime(e:TimerEvent) { for(var i:Number = 0; i < mvLayer.length; i++) { (mvLayer[i] as MovieClip).x += 4; } } /// функция апдейта public function Update(e:Event):void { for(var i:Number = 0; i < mvLayer.length; i++) { (mvLayer[i] as MovieClip).x += 3; } } } Последний раз редактировалось Nel; 15.01.2009 в 02:52. |
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
Я бы посоветовал не пользоваться таймером, все таки лучше enterFrame. Помимо этого в качестве оптимизации можно сохранить длину вашего списка отображения в private переменную и ее использовать для условия в циклах. Еще можно при обращении к массиву использовать вместо записи
вот так Вы ведь не используете методы, а только определяете свойство. Причем можно сделать хоть на 100 танков ваш тестовый onLoadComplete от этого скорость движения не меняется. Ну и я бы все таки менял координаты танка внутри класса танка а не из родительского объекта), это вроде разумнее что объект сам собой управляет. А то что дергано, так кадры показываются не 25 в секунду, а вроде как плеер обновление делает по необходимости. Поставьте частоту 100, а шаг 1 и будет плавно ездить) Дергано потому что объекты смещаются рывками. Добавлено через 13 минут Вот сравни оба варианта) На экране двигается реально 100 штук. Большой разницы между таймером и кадром нету, но кадр на мой взгляд и проще и предпочтительней. Только для флэшки поставь 100 кадров FPS для чистоты эксперимента) package { import flash.display.MovieClip; import flash.display.Sprite; import flash.events.Event; import flash.events.KeyboardEvent; import flash.events.MouseEvent; import flash.events.TimerEvent; import flash.utils.Timer; import flash.net.*; import flash.display.*; import flash.utils.*; public class Main extends Sprite { private var mvLayer:Array; private var lengthMV:uint; // Длина списка отображения private var mTimer:Timer; public var mUnit:MovieClip; public function Main() { mvLayer = []; onLoadComplete(); } public function onLoadComplete():void { for (var i:uint = 0; i < 100; i++ ) { mUnit = new Tank_2_1(); mUnit.y = 5*i; addChild(mUnit); mvLayer.push(mUnit); } lengthMV = mvLayer.length; addEventListener(Event.ENTER_FRAME, Update); //Закоментить для проверки с таймером // Снять коментарий для проверки с таймером /*mTimer = new Timer(10); mTimer.addEventListener(TimerEvent.TIMER, UpdateTime); mTimer.start();*/ } public function UpdateTime(e:TimerEvent) { for(var i:Number = 0; i < lengthMV; i++) { (mvLayer[i] as MovieClip).x += 2; } } public function Update(e:Event):void { for(var i:Number = 0; i < lengthMV; i++) { mvLayer[i].x += 2; } } } }
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ Последний раз редактировалось SunShadow; 15.01.2009 в 09:38. |
|
|||||
|
Регистрация: May 2008
Сообщений: 27
|
эм мб я не правельно выразился не плавность анимации глючит!
То что там mvLayer и привидение к муви клипу раньше был класс Layer и т.д. просто быстро делал минимальную флешку и не замарочился на етом суть не в етом 100 фпс выставлять не вариант процесор грузиться на много больше чем выставить 21-25-31 фпс и зачем выставлять фпс больше скажем 31 если все равно большинство анимаций делаеться с расщетом на 12 фпс. Насщет вопроса, танки если присмотреться и запустить скажем не со скоростью 3 а 10 то они тормазят, проскакивают позицию я когда замерял фпс то в етот момент фпс флешки падает в 2-4 раза, через трейс танк катился нормально и то что фпс падает и дает эфект проскакивания кадра, моргания, мерцания и т.д. вчера повысил фпс до 31 отключил таймер запустил все ок понизил фпс обратно до 25 тоже ок, Хотя я давал тогда тестировать многим людям и эфект видили все, короче хз Уличная магия какаято! P.S. эфект видин был и при 1 танки и при 400 танках Один и тодже! Добавлено через 2 часа 38 минут Хотелось бы конечно более весомой помощи кроме как поменять фпс на 100 ![]() Эфект не может иметь магические свойства и наверное с етим сталвиваюсь не 1 но решения кроме как поднять фпс мало кто мог предложить Последний раз редактировалось Nel; 15.01.2009 в 16:19. |
|
|||||
|
Регистрация: Dec 2006
Сообщений: 230
|
Ну что, кто как решает проблему? У меня щас такое же дергание как и в этом tank.rar
Как забарывать? Уже все перепробовал! И дробные координаты, и updateAfterEvent, и разные фреймрейты. Ничего не помогает! Везде нет плавности, всегда поддергивает... |
|
|||||
|
Регистрация: Mar 2009
Адрес: (0,0,0)
Сообщений: 7
|
у меня частенько бывают похожие глюки, личится перезапуском flashDevelop'a
|
|
|||||
|
Регистрация: Dec 2006
Сообщений: 230
|
Причем здесь flashDevelop?
Это работа плеера. |
|
|||||
|
честно гря попробовал обычные способы какие раньше работали типа:
public function initUnits():void { for (var i:uint = 0; i < 3; i++ ) { _units[i] = new Bitmap(new View_Tank(0, 0), "auto", true); _units[i].scaleX = _units[i].scaleY = 1.111; _units[i].cacheAsBitmap = true; _units[i].y = 45 * i; _units[i].filters = [new BlurFilter(2, 2, 3)]; addChild(_units[i]); } } |
|
|||||
|
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
прикрепите пожалуйста кто-нибудь SWF. Очень уж захотелось посмотреть, у кого что там дергается
![]()
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
|
i.o., помните тему с векторным поездом, вернее с сайтом, где этот поезд бешено ехал слева направо? Там были такие подергивания анимации. Может быть это имеется в виду? Я еще там высказал предположение, которое сейчас мне кажется глупым (:
Добавлено через 33 секунды http://www.flasher.ru/forum/showthre...E2%E0%ED%E8%FF вот она
__________________
тут я |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:28. |
|
|
« Предыдущая тема | Следующая тема » |
|
|