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
