|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jan 2012
Сообщений: 836
|
Привязать время к двигающемуся объекту
Есть объект который двигается по сцене. В общем то всё нормально, если играть в обычном окне. Но если увеличить окно, то начинается проблема с производительностью. Читал что нужно создать что-то вроде тика, который отсчитывает кадры в секунду и нужно умножить это время на скорость.
Подскажите как создать это время) |
|
|||||
Регистрация: Dec 2014
Сообщений: 312
|
package { import flash.display.Sprite; import flash.events.Event; import flash.utils.getTimer; public class Main extends Sprite { public function Main() { addEventListener(Event.ENTER_FRAME, enterFrame); _time = getTimer(); } private function enterFrame(e:Event):void { var newTime:Number = getTimer(); var delta:Number = newTime - _time; _time = newTime; x += delta * speed; } private var _time:Number; } } |
|
|||||
Регистрация: Jan 2012
Сообщений: 836
|
Не, что-то не то. У меня теперь объект двигается с нереальной скоростью
|
|
|||||
Регистрация: Dec 2014
Сообщений: 312
|
speed сделай поменьше
|
|
|||||
Регистрация: Jan 2012
Сообщений: 836
|
Сделал на единицу -все равно слишком быстро получается. А ниже единицы если поставить, примерно 0,5 то объект вообще не двигается
|
|
|||||
Регистрация: Dec 2014
Сообщений: 312
|
package { import flash.display.Sprite; import flash.events.Event; import flash.utils.getTimer; public class Main extends Sprite { public function Main() { addEventListener(Event.ENTER_FRAME, enterFrame); _time = getTimer(); } private function enterFrame(e:Event):void { var newTime:Number = getTimer(); var delta:Number = newTime - _time; _time = newTime; x += delta * speed; } override public function get x():Number { return _x; } override public function set x(value:Number):void { _x = value; super.x = _x; } private var _x:Number = 0; private var _time:Number; } } |
|
|||||
Регистрация: Jan 2012
Сообщений: 836
|
у меня двигается объект, а не x, поэтому когда я подставляю
Выдаёт ошибку |
|
|||||
Регистрация: Dec 2014
Сообщений: 312
|
package { import flash.display.Sprite; import flash.events.Event; import flash.utils.getTimer; public class Main extends Sprite { public function Main() { addEventListener(Event.ENTER_FRAME, enterFrame); _time = getTimer(); } private function enterFrame(e:Event):void { var newTime:Number = getTimer(); var delta:Number = newTime - _time; _time = newTime; _x += delta * speed; x = _x; } private var _x:Number = 0; private var _time:Number; } } |
|
|||||
Регистрация: Jan 2012
Сообщений: 836
|
Не, все равно объект быстро двигается, ничего не изменилось
|
|
|||||
Регистрация: Dec 2014
Сообщений: 312
|
Потести вот этот код. Если все равно быстро, сделай _speed = 0.001
package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Sprite; import flash.events.Event; import flash.utils.getTimer; public class Main extends Sprite { public function Main() { _object = new Bitmap(new BitmapData(100, 100, false, 0xffcc33)); addChild(_object); addEventListener(Event.ENTER_FRAME, enterFrame); _time = getTimer(); } private function enterFrame(e:Event):void { var newTime:Number = getTimer(); var delta:Number = newTime - _time; _time = newTime; _x += delta * _speed; _object.x = _x; } private var _x:Number = 0; private var _time:Number; private var _speed:Number = 0.01; private var _object:Bitmap; } } |
Часовой пояс GMT +4, время: 06:57. |
|
« Предыдущая тема | Следующая тема » |
|
|