Greetings,
Off of a tut on actionscript.org, I learned how to construct a Photoshop style zoom tool for my portfolio, and have successfully been able to implement it in my burgeoning website…kind of. Here’s the problem: when the first clip in the portfolio series loads, I get a null-object reference error, and the ability to take the zoom area in the navigator and move it around my piece is not functioning. As soon as I go on to the next portfolio slide, the zoom navigator works exactly as it should (zooms in and zoom area is draggable), and the zoom navigator on the first slide works if I navigate back to it.
To sum up, I am only getting the null object ref the first time the movie loads, but not thereafter. I am using the same code (with different symbols in my library) for each of my portfolio slides, so I can’t figure out why it won’t work the first time, but each subsequent slide works properly. Here is my code…any help or insight is appreciated.
One more point of note is that I am loading this movie clip into another swf with the Loader method, and this error only occurs when it is loaded into another movie clip…when I test it on its own, it works fine. Thanks!!!
//packages//
import flash.display.*;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.events.*;
import fl.transitions.TweenEvent;
import fl.transitions.Tween;
import fl.transitions.easing.*;
var zoom:zoomButton = new zoomButton();
zoom.x = 680;
zoom.y = 335;
addChild(zoom);
var zoomB:simpleB = new simpleB();
zoomB.x = 680;
zoomB.y = 335;
zoomB.scaleX = 97.4/45.4;
zoomB.alpha = 0;
zoomB.buttonMode = true;
zoomB.addEventListener(MouseEvent.MOUSE_UP, zoomIn);
addChild(zoomB);
var zTool:zoomTool = new zoomTool();
zTool.x = 691+(.25*zTool.width);
zTool.y = 245;
zTool.scaleX = 97.4/150;
zTool.scaleY = zTool.scaleX;
var textAlpha:Tween = new Tween(myText, "alpha", Strong.easeOut, 1,.25,.5,true);
textAlpha.stop();
var zToolScaleX:Tween = new Tween(zTool, "scaleX", Strong.easeOut, 0,1,1,true);
zToolScaleX.stop();
var zToolScaleY:Tween = new Tween(zTool, "scaleY", Strong.easeOut, 0,1,1,true);
zToolScaleY.stop();
var zToolAlpha:Tween = new Tween(zTool, "alpha", Strong.easeIn, 0,1,1,true);
zToolAlpha.stop();
function zoomIn(e:Event):void{
addChild(zTool);
textAlpha.continueTo(.25,1);
zToolScaleX.continueTo(97.4/150,1);
zToolScaleY.continueTo(97.4/150,1);
zToolAlpha.continueTo(1,.5);
zTool.closeB.addEventListener(MouseEvent.MOUSE_UP, blankZTool);
stage.addEventListener(Event.ENTER_FRAME, EnterFrame);
}
function blankZTool(e:Event):void{
zTool.slider.x = zTool.sliderLine.x;
zToolScaleX.continueTo(0,1);
zToolScaleY.continueTo(0,1);
zToolAlpha.continueTo(0,.5);
textAlpha.continueTo(1,1);
zToolScaleX.addEventListener(TweenEvent.MOTION_FINISH, removeZTool);
}
function removeZTool(e:Event):void{
zToolScaleX.removeEventListener(TweenEvent.MOTION_FINISH, removeZTool);
removeChild(zTool);
}
var sliderDrag:Boolean = false;
function slide(e:Event):void{
var sliderLimits:Rectangle = new Rectangle(zTool.sliderLine.x, zTool.sliderLine.y, zTool.sliderLine.width,0);
zTool.slider.startDrag(false,sliderLimits);
sliderDrag = true;
}
zTool.slider.addEventListener(MouseEvent.MOUSE_DOWN, slide);
function endDrag(e:Event):void{
zTool.slider.stopDrag();
sliderDrag = false;
}
zTool.slider.addEventListener(MouseEvent.MOUSE_UP, endDrag);
stage.addEventListener(MouseEvent.MOUSE_UP, endDrag);
function EnterFrame(e:Event):void{
var smallRectScale = (zTool.slider.x - zTool.sliderLine.x);
if (smallRectScale>100){
smallRectScale = 100;
} if (smallRectScale<1){
smallRectScale=1;
}
this.zTool.targetArea.scaleX = (smallRectScale-117)/117;
this.zTool.targetArea.scaleY = (smallRectScale-117)/117;
var scaleFactor = zTool.image.width/zTool.targetArea.width;
image.width = viewArea.width*scaleFactor;
image.height = viewArea.height*scaleFactor;
var targetLimits:Rectangle = new Rectangle(zTool.image.x-((zTool.image.width-zTool.targetArea.width)/2), zTool.image.y-((zTool.image.height-zTool.targetArea.height)/2), zTool.image.width - zTool.targetArea.width, zTool.image.height - zTool.targetArea.height);
if(zTool.targetArea.x <= targetLimits.x){
zTool.targetArea.x = targetLimits.x;
} if (zTool.targetArea.y <= targetLimits.y){
zTool.targetArea.y = targetLimits.y;
}if (zTool.targetArea.x>=targetLimits.x+targetLimits.width){
zTool.targetArea.x = targetLimits.x+targetLimits.width;
}if (zTool.targetArea.y >= targetLimits.y+targetLimits.height){
zTool.targetArea.y = targetLimits.y+targetLimits.height;
}
image.x = this.viewArea.x - ((zTool.targetArea.x - zTool.image.x)*(image.width/zTool.image.width));
image.y = this.viewArea.y - ((zTool.targetArea.y - zTool.image.y)*(image.height/zTool.image.height));
}
function reTargetOn(e:Event){
var targetLimits:Rectangle = new Rectangle(zTool.image.x-((zTool.image.width-zTool.targetArea.width)/2), zTool.image.y-((zTool.image.height-zTool.targetArea.height)/2), zTool.image.width - zTool.targetArea.width, zTool.image.height - zTool.targetArea.height);
zTool.targetArea.startDrag(true, targetLimits);
}
zTool.targetArea.addEventListener(MouseEvent.MOUSE_DOWN, reTargetOn);
function endTargetDrag(e:Event){
zTool.targetArea.stopDrag();
}
zTool.targetArea.addEventListener(MouseEvent.CLICK, endTargetDrag);
zTool.targetArea.addEventListener(MouseEvent.ROLL_OUT, endTargetDrag);
thanks,
varPBR