i've amended my code as follows - seems to have sorted the problem out
in a nutshell, i multiplied the y axis by 83.333 percent (or the
actual rectangle height / square height) and sorted out the way the
last frame is chosen (which turned out to be a lot simpler than i
originally did it)
//variables
var originX:Number = 200; // middle of x axis when not expanded
var originY:Number = 225; // middle of y axis when not expanded
var visibleClip = "people17"; // initialised at people17
var clip:MovieClip = content_mc; // clip reference
var blurDifference:Number = 13; // between 1 and 13 - 1 is the
most, 13 the least
var degreesPerSlice:Number = 360/8; // 45 degrees
var centerArea:Number = 40; // centre area for the people to look
directly at the user
//mouse listener object
mouseListener.onMouseMove = function () {
mouseMoved = true; // stop randomly looking
if (mouseMoveEnabled) {
lookAt(clip, originX, originY, _root._xmouse, _root._ymouse);
}
//rollover on whole movie
if (!expandTime && roll_mc.hitTest(_root._xmouse, _root._ymouse)) {
expandTime = getTimer() + expandTimeToWait;
}
updateAfterEvent();
}
Mouse.addListener(mouseListener);
//maths to find where mouse pointer is in relation to the origin
function lookAt (clip:MovieClip, originX:Number, originY:Number,
watchX:Number, watchY:Number):Void {
var adjside:Number = a = watchX - originX;
var b:Number = watchY - originY;
var oppside:Number = -1*b;
var angle:Number = Math.atan2(oppside, adjside); // in radians
var angle:Number = Math.round(angle/Math.PI*180); // convert to
degrees
var angle:Number = -1*(angle); // invert
//REMOVED
//var angle:Number = angle + (degreesPerSlice/2); // add half of
degreesPerSlice to correct eye level - will probably be removed
when maths is corrected
var c:Number = Math.sqrt((a*a)+(b*b)); // pythagoras a2+b2=c2 to
find distance of mouse cursor from origin
changeFrame(clip, angle, c);
}
//image frame selector
function changeFrame(clip:MovieClip, angle:Number,
distance:Number):Void {
idleChangeTime = getTimer() + idleChangeRate;
for (var i:Number=1; i<18; i++) {
clip["people"+i]._visible = false;
}
if (distance>centerArea) {
if (angle<0) {
angle = 360+angle;
}
var degreesPerSlice:Number = degreesPerSlice;
var halfDegreesPerSlice:Number = degreesPerSlice/2;
var blurDifference:Number = blurDifference;
var frame:Number = Math.ceil(angle/halfDegreesPerSlice);
var frameEdges:Number = Math.ceil(angle/degreesPerSlice); //
looks for edges of (non-blurred) frames
var distanceFromEdge:Number = (frameEdges*degreesPerSlice) -
(angle); // find distance from edge of slice
/* REPLACED
if (distanceFromEdge < blurDifference) {
if (frame % 2 == 0) {
if (frame<16) frame++;
}
} else if ((degreesPerSlice - distanceFromEdge) <
blurDifference) {
if (frame % 2 == 0) {
if (frame>1) frame--;
}
}
*/
if (distanceFromEdge < blurDifference) {
if (frame % 2 == 0) {
frame++;
if (frame == 17) frame = 1;
}
}
clip["people"+frame]._visible = true;
visibleClip = ["people"+frame];
} else {
clip.people17._visible = true;
visibleClip = "people17";
}
}
_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders