move 2 object at the same time while using eBlock [solved]

Started by arj0n, Sat 18/08/2012 01:38:31

Previous topic - Next topic

arj0n

Is it possible to move two object at the same time while also using eBlock and if yes, how?

Khris

Sure:
Code: ags
  oObject1.Move(200, 50, 3, eNoBlock);
  oObject2.Move(200, 150, 3, eBlock);

cat

Just make sure that the moving that takes longer is the blocking one.

arj0n

Quote from: Khris on Sat 18/08/2012 01:58:50
Sure:
Code: ags
  oObject1.Move(200, 50, 3, eNoBlock);
oObject2.Move(200, 150, 3, eBlock);


Thanx Khris, the problem was when I use eNoBlock twice (as shown below) the mouse cursor is shown and I can't seem to hide it.
I hide it in the function room_Load() and the move command is in the room_AfterFadeIn()
A little qustion: why, once the objects starts moving using eNoBlock for both, is the hidden mouse cursor shown again?

Code: ags

oObject1.Move(200, 50, 3, eNoBlock);
oObject2.Move(200, 150, 3, eNoBlock);


But using your version the mouse cursor isn't shown anymore.
'Problem' solved, thanx.

Quote from: cat on Sat 18/08/2012 11:23:22
Just make sure that the moving that takes longer is the blocking one.
No problem Catgasmask, but thanx ;)

Khris

I'm guessing you're turning the mouse cursor back visible right after moving the objects, right?
If both objects are moved non-blocking, AGS continues executing the subsequent commands immediately after having started the movement, as opposed to waiting until it's finished. That's exactly why the need arises to use eBlock in the first place...

arj0n

Quote from: Khris on Sat 18/08/2012 12:52:07
I'm guessing you're turning the mouse cursor back visible right after moving the objects, right?
If both objects are moved non-blocking, AGS continues executing the subsequent commands immediately after having started the movement, as opposed to waiting until it's finished. That's exactly why the need arises to use eBlock in the first place...
Ah yes, thanx. That was the problem.
The RepExec which I use for a transparency changing of a gui was causing the mouse to be visible again.
I now added a check to the RepExec if the gui is 100% visible or not and now it works well, also with both object moving using eNoBlock:
Code: ags

function room_AfterFadeIn()
{
gMenu.Transparency = 100;
gMenu.Visible=true;
Wait(180);
oCoverLeft.Move(-513, 768, 2, eNoBlock, eAnywhere);
oCoverRight.Move(1025, 768, 2, eNoBlock, eAnywhere);
}

function room_RepExec()
{
 if (oCoverRight.X>1020)
   {
    int trans = gMenu.Transparency;
    while (trans > 0) 
     {
      trans--;
      gMenu.Transparency = trans;
      Wait(1);
     }
   }
if (gMenu.Transparency == 0)
 {
  mouse.Visible=true;   
 }
 else if (gMenu.Transparency > 0)
 {
  mouse.Visible=false;   
 }
}

function room_Load()
{
mouse.Visible=false;
}

SMF spam blocked by CleanTalk