Hello Nick,

The question is, what would you do if they stop ? Currently, you just set
them to stay at the same position.

For example, let's say object mcs number 0 (arrayOf3DAssets[0]), at frame n,
it's absolute value of deltaX, deltaY and deltaZ are less than 0.1, and you
set :
arrayOf3DAssets[0].x = newPosX = changingArrayOfXYZLocations[0][0];
arrayOf3DAssets[0].y = newPosY = changingArrayOfXYZLocations[0][1];
arrayOf3DAssets[0].z = newPosZ = changingArrayOfXYZLocations[0][2];

Next Frame, at frame n+1,
deltaX =  arrayOf3DAssets[0].x - changingArrayOfXYZLocations[0][0];
deltaY =  arrayOf3DAssets[0].y - changingArrayOfXYZLocations[0][1];
deltaZ =  arrayOf3DAssets[0].z - changingArrayOfXYZLocations[0][2];

Obviously, deltaX, deltaY and deltaZ are 0. Why ?
Because x,y,z value of arrayOf3DAssets[0] has the same value with [0], [1]
and [2] of changingArrayOfXYZLocations[0]. And because 0 is less than
0.1, arrayOf3DAssets[0] will do this again :
arrayOf3DAssets[0].x = newPosX = changingArrayOfXYZLocations[0][0];
arrayOf3DAssets[0].y = newPosY = changingArrayOfXYZLocations[0][1];
arrayOf3DAssets[0].z = newPosZ = changingArrayOfXYZLocations[0][2];

again, again and again in the next frames. arrayOf3DAssets[0] will never
move, until you change the value in :
changingArrayOfXYZLocations[0][0];
changingArrayOfXYZLocations[0][1];
changingArrayOfXYZLocations[0][2];


-- 
Aji Pamungkas

On Wed, Nov 3, 2010 at 7:18 AM, Nick <[email protected]> wrote:

> I'm having a similar issue with MovieClipSprite in v3.6.0 They move
> initially, but as soon as they get to where they're going, they won't
> move anymore. As long as they keep moving, they'll continue to accept
> a new location (from changingArrayOfXYZLocations) and move to it. But
> as soon as they stop moving, that's it, they refuse to move anymore.
> There will be a few assets on stage and some will move while the
> others stop. If I take out the lines that set the assets specifically
> to where they're going when they get close and instead never let them
> get to their destination, then they keep working as expected.
>
>        var mcs:MovieClipSprite;
>
>        var deltaX:Number;
>        var stepX:Number;
>        var newPosX:Number;
>        var deltaY:Number;
>        var stepY:Number;
>        var newPosY:Number;
>        var deltaZ:Number;
>        var stepZ:Number;
>        var newPosZ:Number;
>
>        for (i = 0; i < arrayOf3DAssets.length; i++)
>        {
>                mcs = arrayOf3DAssets[i];
>
>                deltaX =  mcs.x - changingArrayOfXYZLocations[i][0];
>                stepX = deltaX / SPEED;
>                newPosX =  mcs.x - stepX;
>                deltaY =  mcs.y - changingArrayOfXYZLocations[i][1];
>                stepY = deltaY / SPEED;
>                newPosY =  mcs.y - stepY;
>                deltaZ =  mcs.z - changingArrayOfXYZLocations[i][2];
>                stepZ = deltaZ / SPEED;
>                newPosZ =  mcs.z - stepZ;
>
>                if (Math.abs(deltaX) < .1) newPosX =
> changingArrayOfXYZLocations[i]
> [0];
>                if (Math.abs(deltaY) < .1) newPosY =
> changingArrayOfXYZLocations[i]
> [1];
>                if (Math.abs(deltaZ) < .1) newPosZ =
> changingArrayOfXYZLocations[i]
> [2];
>
>                mcs.x = newPosX;
>                mcs.y = newPosY;
>                mcs.z = newPosZ;
>        }
>
>        _camera3D.hover();
>        _view.render();
>
> Any thoughts or suggestions?
>
> Thanks, Nick

Reply via email to