Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Привязка к часам(времени) (http://www.flasher.ru/forum/showthread.php?t=206940)

cvasy 14.03.2014 17:10

Привязка к часам(времени)
 
Как мне привязать движение во времени?
Вот мне нужно, чтобы картинка сдвигалась с определенной скоростью - ну например 1 пиксель в секунду
Как мне это правильно сделать?
Код AS3:

import flash.display.Bitmap; 
import flash.display.BitmapData;
import flash.events.Event;
import flash.display.Loader;
 
const IMAGE_URL:String = "img/001.jpg";
 
var ldr:Loader = new Loader();
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, ldr_complete);
ldr.load(new URLRequest(IMAGE_URL));
 
var myBitmap:Bitmap = new Bitmap;
 
function ldr_complete(event:Event):void {
 
        myBitmap = new Bitmap( (ldr.content as Bitmap).bitmapData );
        addChild(myBitmap);
        addEventListener(Event.ENTER_FRAME, scrollBitmap);
}
 
function scrollBitmap(event:Event):void {
        myBitmap.bitmapData.scroll(-2,0);
}


Carbon 14.03.2014 21:21

мб без битмапа?

KumoKairo 14.03.2014 22:19

Цитата:

мб без битмапа?
WTF?! O_o

Для привязки ко времени обычно запоминают время предыдущего кадра, находят разницу (в миллисекундах) с текущим кадром и по простой формуле механики находят новое положение.
Код AS3:

import flash.utils.getTimer;

И потом использовать эту функцию как
Код AS3:

var previousFrameTime:int; // Где-нибудь инициализируется
// новый кадр
{
    var passedTime:int = getTimer() - previousFrameTime;
    // Делаем с этим временем что нужно
    ...
    // Конец кадра
    previousFrameTime = getTimer();
}

Функция возвращает количество миллисекунд, прошедшее с начала ролика. Соответственно если в конце текущего кадра запоминать это значение в переменной, а в начале следующего вычитать эту переменную из getTimer(), получим прошедшее с последнего кадра время.
Разделить на 1000, умножить на скорость - получим перемещение в пикселях на текущий кадр. Прибавить перемещение нужному объекту, сохранить текущее значение getTimer() в переменную и ждать следующий кадр. И так до посинения.


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

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