forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Параллельные процессы отображения графических элементов? (http://forum.boolean.name/showthread.php?t=15426)

MidletUser 05.09.2011 04:03

Параллельные процессы отображения графических элементов?
 
Параллельные процессы отображения графических элементов?

Уважаемые пользователи Midlet Pascal,

кто сталкивался с задачей одновременно показывать 2 или более анимаций с разными временными интервалами их отображения на экране в режиме showCanvas, протекающие как 2 независимых друг от друга параллельных процесса отображения графики в верхней и нижней частях экрана, отсутствие и присутствие которых, на экране проявляется с разными временными интервалами, требующие частичного очищения экрана на две части с учётом одновременности протекания данных параллельных графических процессов, выполнение которых, не приведёт к очищению всего экрана. Какие для этого есть решения в пределах синтаксиса Midlet Pascal?

С уважением, MidletUser.

Romanzes 05.09.2011 11:31

Ответ: Параллельные процессы отображения графических элементов?
 
Цитата:

Сообщение от MidletUser (Сообщение 201302)
кто сталкивался с задачей одновременно показывать 2 или более анимаций с разными временными интервалами их отображения на экране в режиме showCanvas, протекающие как 2 независимых друг от друга параллельных процесса отображения графики в верхней и нижней частях экрана, отсутствие и присутствие которых, на экране проявляется с разными временными интервалами, требующие частичного очищения экрана на две части с учётом одновременности протекания данных параллельных графических процессов, выполнение которых, не приведёт к очищению всего экрана.

Супер конструкция, я долго осиливал. Тебе бы юридические речи писать :)
По теме: не знаю, как это реализовать в Midlet Pascal, но в Java можно бы было использовать 2 буферных картинки размером в пол-экрана (или по сколько тебе там нужно). И соответственно, перерисовывать в нужный момент то верхнюю, то нижнюю часть.

Код:

public void paint(Graphics g) {
    if (needRepaintTop)
        g.drawImage(topBuffer, 0, 0, 0);
    if (needRepaintBottom)
        g.drawImage(bottomBuffer, 0, scrH, Graphics.LEFT | Graphics.BOTTOM);
    needRepaintTop = false;
    needRepaintBottom = false;
}


alexprey 05.09.2011 14:01

Ответ: Параллельные процессы отображения графических элементов?
 
MidletUser, такую технологию на мп еще никто не писал. Флаг тебе в руки

DIMMON4IK 05.09.2011 20:53

Ответ: Параллельные процессы отображения графических элементов?
 
Lib_threads тебе в руки
http://forum.boolean.name/showthread.php?t=8395

alexprey 06.09.2011 02:11

Ответ: Параллельные процессы отображения графических элементов?
 
DIMMON4IK, надеюсь ты знаешь последствия вывода граффики в разных потоках. Но походу не знаешь раз предлагаешь

Igor 06.09.2011 12:56

Ответ: Параллельные процессы отображения графических элементов?
 
Цитата:

procedure setClip(int x, int y, int width, int height);
Устанавливает регион, на который в дальнейшем влияют процедуры рисования.

Это из справки.
Параллельные процессы точно нужны? Можно написать две функции, каждая почти "процесс", запускать их поочерёдно.
Переменные сделать глобальными. Если очень хочется, можно создать тип record=first - где будут переменные для первого процесса и похожий тип для второго.


type
First=record
a,b:integer;
end;

Second=record
t:integer;
end;


procedure process1;
begin
setClip(0,0,x,y);
DrawЧтоНибудь(first.a,first.b);
end;

procedure process2;
begin
if GetRelativeTimeMS-second.t>100 then
begin
second.t:=GetRelativeTimeMS
setClip(x,y,getwidth,getHeight)
DrawЕщёЧтоНибудь;
end;
end;

repeat
process1;
process2;
repaint;
until false;


PassCall 09.09.2011 00:03

Ответ: Параллельные процессы отображения графических элементов?
 
Цитата:

Сообщение от MidletUser (Сообщение 201302)
Параллельные процессы отображения графических элементов?

Уважаемые пользователи Midlet Pascal,

кто сталкивался с задачей одновременно показывать 2 или более анимаций с разными временными интервалами их отображения на экране в режиме showCanvas, протекающие как 2 независимых друг от друга параллельных процесса отображения графики в верхней и нижней частях экрана, отсутствие и присутствие которых, на экране проявляется с разными временными интервалами, требующие частичного очищения экрана на две части с учётом одновременности протекания данных параллельных графических процессов, выполнение которых, не приведёт к очищению всего экрана. Какие для этого есть решения в пределах синтаксиса Midlet Pascal?

С уважением, MidletUser.

Для чего вообще параллельные процессы? Зачем такое шаманство? Почему не ввести 2 переменные-счетчика (например, period_one и period_two), которые перед каждой перерисовки графики будут приращиваться на 1. Когда "счетчики" достигнут определенного значения (для каждого свой), сбросить соответствующий счетчик и прорисовать нужный кадр.


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot