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

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

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

Регистрация: Jan 2012
Сообщений: 832
По умолчанию Привязать время к двигающемуся объекту

Есть объект который двигается по сцене. В общем то всё нормально, если играть в обычном окне. Но если увеличить окно, то начинается проблема с производительностью. Читал что нужно создать что-то вроде тика, который отсчитывает кадры в секунду и нужно умножить это время на скорость.

Код AS3:
object.x += 3;
Подскажите как создать это время)

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

Регистрация: Dec 2014
Сообщений: 312
Код AS3:
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;
    }
}

Старый 04.02.2015, 19:05
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 3  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 832
Не, что-то не то. У меня теперь объект двигается с нереальной скоростью

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

Регистрация: Dec 2014
Сообщений: 312
speed сделай поменьше

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

Регистрация: Jan 2012
Сообщений: 832
Сделал на единицу -все равно слишком быстро получается. А ниже единицы если поставить, примерно 0,5 то объект вообще не двигается

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

Регистрация: Dec 2014
Сообщений: 312
Код AS3:
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;
    }
}

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

Регистрация: Jan 2012
Сообщений: 832
у меня двигается объект, а не x, поэтому когда я подставляю

Код AS3:
 override public function get object():Number
        {
            return _x;
        }
 
        override public function set object(value:Number):void
        {
            _x = value;
            super.object = _x;
        }
Выдаёт ошибку

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

Регистрация: Dec 2014
Сообщений: 312
Код AS3:
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;
    }
}

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

Регистрация: Jan 2012
Сообщений: 832
Не, все равно объект быстро двигается, ничего не изменилось

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

Регистрация: Dec 2014
Сообщений: 312
Потести вот этот код. Если все равно быстро, сделай _speed = 0.001

Код AS3:
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:16.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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