Компьютерный форум NoWa.cc

Компьютерный форум NoWa.cc (https://nowa.cc/index.php)
-   Java Script (https://nowa.cc/forumdisplay.php?f=310)
-   -   анимация на canvas (https://nowa.cc/showthread.php?t=299669)

hatalsky 15.09.2010 19:51

анимация на canvas
 
PHP код:

function Elevator(x,y,sx,sy,color,context) {
    
this.x;
    
this.y;
    
this.sx sx;
    
this.sy sy;
    
this.color color;
    
this.context context;
};
Elevator.prototype.show = function() {
    
this.context.clearRect(0,0,500,500);
    
this.context.fillStyle this.color;
    
this.context.fillRect(this.x,this.y,this.sx,this.sy);
    return 
0;
};
Elevator.prototype.animation_up = function() {
    if (
this.100 >= 0) {
        for (var 
0100i++) {
            
this.this.1;
            
//-------------------
            
this.show();
        };
        return 
0;
    };
    
this.show();
    return 
0;
}; 

в js я новичёк
нужно сделать анимацию на canvas
код рабочий, просто не анимирует перемещение
как я прочитал, никаких аналогов sleep() в js нет, выходит нужно применить как-то settimeout/setinterval, но я никак не могу придумать как
мб кто-нить подскажет, или предложит как реализовать анимацию по-другому.
заранее спасибо

dust999 15.07.2011 14:46

Re: анимация на canvas
 
Ты должен просто вызывать функцию отрисовки обекта через какой то интервал времени(это и есть анимация).
А параметры отображения объекта хранишь в внешней глобальной переменной height=0 там же хранишь если требуется глобальную переменную старта и конца anim=false, иначе у тебя будет бесконечная анимация

Алогритм следующий:

1. Проверяешь начата if (anim==true){
Если да то сет интервалом вызываешь функцию отрисовки туда передаёшь координаты лифта своего.

2. в конце функции увеличиваешь перемещение на 1 height+=1; или несколько пикселей (дробные лучше не использовать) и проверяешь не ушёл ли лифт за границы видимости или не достиг ли он нужной высоты

если он ещё движется то ничего не делаешь эта функция будет вызывать сама себя пока лифт не доедет.
если он в нужной точки ставишь глобальной переменной anim=false;

и он просто не будет бльше вызывать эту функцию с отрисовкой и лифт замрёт где надо.


Текущее время: 22:26. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2026, vBulletin Solutions, Inc. Перевод: zCarot
Copyright ©2004 - 2026 NoWa.cc

Время генерации страницы 0.01849 секунды с 9 запросами