Перейти к содержанию
Fire Monkey от А до Я
  • 0

Неправильно работает case


Jeysi Z

Вопрос

Здравствуйте, для проекта понадобилось рисовать разные 3d линии в зависимости от значения переменной, сначала решил проверить на совсем простом примере, но сразу возникли проблемы. В общем, в процедуре render организован case для переменной stage, в зависимости от её значения должны рисоваться разные линии, но этого не происходит, рисуется только первоначальная линия. 

Вот код процедуры :

procedure TForm2.Dummy1Render(Sender: TObject; Context: TContext3D);
var i:integer;
begin
       case stage of
             1:begin
              if Context.BeginScene then
                 try
                    Context.Clear(TAlphaColorRec.White);
                    Context.DrawLine(TPoint3D.Create(3,3,0),TPoint3D.Create(3,-3,0),1,TAlphaColorRec.Black);
                  finally
                  Context.EndScene;
                  end;
              end;
              2:begin
                  if Context.BeginScene then
                  try
                    Context.Clear(TAlphaColorRec.White);
                    Context.DrawLine(TPoint3D.Create(-3,3,0),TPoint3D.Create(-3,-3,0),1,TAlphaColorRec.Black);
                  finally
                  Context.EndScene;
                  end;
              end;
        end;
end;

 Вот скрины работы программы. Снизу отображается значение переменной stage.

5a420791531a2_.PNG.2891de7392208a0f80440ec2b4e86d9d.PNG5a42079735611_1.PNG.dae9a7828a0d89da2fc1cd7d6f7751c1.PNG

Заранее спасибо.

Изменено пользователем Jeysi Z
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Чудес не бывает, либо в отладчике смотрите какое значение stage, либо в render выводите stage на экран.

И не видно кода, как происходит перерисовка после изменения stage, думаете изменение переменной автоматически перерисует сцену?

Изменено пользователем Alexander
Ссылка на комментарий
  • 0

Значение stage меняется нажатием на кнопки, одна уменьшает на 1, другая увеличивает, в процедуре нажатия я вызываю render.

Вот код

procedure TForm2.Button2Click(Sender: TObject);
begin
  stage:=stage+1;
  if stage>1 then
  begin
    Button3.Visible:=true;
    Label1.Margins.Left:=0;
  end;
  if stage=laststage then
  begin
    Button2.Visible:=false;
    Label1.Margins.Right:=65;
  end;
  Dummy1Render(sender,Dummy1.Context);
  Label1.Text:=IntToStr(stage);
end;

procedure TForm2.Button3Click(Sender: TObject);
begin
  stage:=stage-1;
  if stage=1 then
  begin
    Button3.Visible:=false;
    Label1.Margins.Left:=65;
  end;
  if stage<laststage then
  begin
    Button2.Visible:=true;
    Label1.Margins.Right:=0;
  end;
  Dummy1Render(sender,Dummy1.Context);
  Label1.Text:=IntToStr(stage);
end;

 

Изменено пользователем Jeysi Z
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...