Тема: iCarDS+Foobar2000
Показать сообщение отдельно
Старый 24.08.2015, 17:23   #1941
kgena_ua
Пользователь
 
Регистрация: 14.02.2015
Возраст: 61
Регион: Украина
Машина: subaru forester
Сообщений: 54
kgena_ua is on a distinguished road
По умолчанию

Цитата:
получается такая бяка...
duzzy, в какой момент это происходит. У меня пока такое не наблюдается (изменил цвет фона, тягаю туда - сюда).
Немного поменял (старое заремил):
Код:
function move_panel() {
	if (!move) {
	
		n_panel = panel;

		n_ww = ww; 
		c_ww = ww; 

		if (dir_move == "right" ? n_x = 0 - n_ww : n_x = c_ww);

		move = true;
	
		window.SetProperty("Toolbar_status",0);
		toolbar_open = window.GetProperty("Toolbar_status");
		window.Repaint(); 

		pss.GetPanel(n_panel).Show();

		timer_anim = window.CreateTimerInterval(a_timer);
	}
}

//===============

function on_timer(id) {
//====================ANIM n_x < 0 : n_x > 0 n_x >= 0 : n_x <= 0
	if (timer_anim  &&  id==timer_anim.ID){
		if (dir_move == "left") {
			c_x = c_x - step_c;
			n_x = n_x - step_n;
		}
		
		if (dir_move == "right") {
			c_x = c_x + step_c;
			n_x = n_x + step_n;
		}
		
//		window.Repaint(); 
		window.RepaintRect(0, y, ww, wh - y - 90);
			
//		pss.GetPanel(c_panel).Show();
		pss.GetPanel(c_panel).Move(c_x, y, ww, wh - y-90, true);
		
//		pss.GetPanel(n_panel).Show();
		pss.GetPanel(n_panel).Move(n_x, y, n_ww, wh - y-90, true);
		
		if (dir_move == "right" ? n_x >= 0 : n_x <= 0) {
			pss.GetPanel(c_panel).Show(false);
			c_panel = n_panel;
			c_x = 0;
			n_x = 0;
			timer_anim.Dispose();
			
			CollectGarbage();
			move = false;
        }
		
		window.SetProperty("panel",  panel);
	}
.
.
.
.
.
и нужно, чтобы step_c был на единицу больше чем step_n, тогда нет эффекта "цепляния панели за панель".

Последний раз редактировалось kgena_ua; 24.08.2015 в 17:55.
kgena_ua вне форума   Ответить с цитированием