Link to home
Start Free TrialLog in
Avatar of turpya
turpya

asked on

ActionsScript 3:0: Mouse event listeners not firing second time

I have some ActionScript I have spent the weekend working on (I am a relative newbie to actionscript), and have come stuck with mouse event listeners.

The first listener fires when an imported bitmap is clicked on. When clicked, a motion moves the bitmap to an area centre of stage. Then a second listener is setup so that when the image is clicked on, it returns to it's original position.

After this, if you click on the image back in it's starting position, nothing happens.

How can I reload/reinitialise this code, so that the listener's continually fire when the image is clicked on? I have tried removeEventListener/addEventListener in the onTweenComplete function, but this appears to work sporadically (sometimes you have to click multiple times to get the image to move).

Example code would be really(!) appreciated.

Thanks.
import soulwire.display.PaperSprite;
import gs.TweenMax;
import gs.events.TweenEvent;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.*;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.net.URLRequest;
 
var myPaperSprite:PaperSprite = new PaperSprite();
var myBitmap:Bitmap = new Bitmap();
 
var url1:String="p1.png";
var url2:String="p1u.png";
var size:uint=80;
 
var finalx:Number;
var finaly:Number;
var speed:Number;
 
var originx:Number;
var originy:Number;
var originz:Number;
 
myPaperSprite.pivot=new Point(0.5,0.5);
 
LoadBitmaps();
 
addChild( myPaperSprite );
 
myPaperSprite.addEventListener(MouseEvent.CLICK, onClickHandler);
 
setupBitmapPosition();
 
 
 
function setupBitmapPosition() {
	finalx=500;
	finaly=500;
	speed=50;
 
	originx=1700;
	originy=-164;
	originz=2200;
 
	myPaperSprite.x=originx;
	myPaperSprite.y=originy;
	myPaperSprite.z=originz;
 
	
	
	
}
 
function onClickHandler(event:MouseEvent):void {
	var speed=1;
 
	var myTween:TweenMax=new TweenMax(myPaperSprite,speed,{x:finalx,y:finaly,z:-200,shortRotation:{rotationX:900,rotationY:0}});// , rotationZ:-1000
	myTween.addEventListener(TweenEvent.COMPLETE, onTweenComplete);
 
	function onTweenComplete(event:TweenEvent=null):void {
		//myTween.clear();
		//myPaperSprite.removeEventListener(MouseEvent.CLICK, onClickHandlerReturn);
		//myPaperSprite.addEventListener(MouseEvent.CLICK, onClickHandlerReturn);
		myTween.removeEventListener(TweenEvent.COMPLETE, onTweenComplete);
	}
 
	myPaperSprite.addEventListener(MouseEvent.CLICK, onClickHandlerReturn);
 
	function onClickHandlerReturn(event:MouseEvent):void {
 
		var speed=1;
 
		var myTween:TweenMax=new TweenMax(myPaperSprite,speed,{x:originx,y:originy,z:originz,shortRotation:{rotationX:0,rotationY:0}});// , rotationZ:-1000
		myTween.addEventListener(TweenEvent.COMPLETE, onTweenComplete);
 
		function onTweenComplete(event:TweenEvent=null):void {
			//myTween.clear();
			//loadMovie("products.swf",_root);
			//myPaperSprite.removeEventListener(MouseEvent.CLICK, onClickHandler);
			//myPaperSprite.addEventListener(MouseEvent.CLICK, onClickHandler);
			myTween.removeEventListener(TweenEvent.COMPLETE, onTweenComplete);
			//myPaperSprite.addEventListener(MouseEvent.CLICK, onClickHandler);
		}
		
		myPaperSprite.addEventListener(MouseEvent.CLICK, onClickHandler);
		
	}
 
}
 
function LoadBitmaps() {
	myPaperSprite.x=1;
	myPaperSprite.y=1;
	myPaperSprite.z=1;
	configureAssets1();
 
	configureAssets2();
 
	function configureAssets1():void {
		var loader:Loader = new Loader();
		loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler1);
		loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler1);
 
		var request:URLRequest=new URLRequest(url1);
		loader.x=size*numChildren;
		loader.load(request);
		addChild(loader);
 
		//myBitmap = Bitmap(loader.content);
		//addChild(myBitmap);
 
 
	}
 
	function configureAssets2():void {
		var loader:Loader = new Loader();
		loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler2);
		loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler2);
 
		var request:URLRequest=new URLRequest(url2);
		loader.x=size*numChildren;
		loader.load(request);
		addChild(loader);
 
		//myBitmap = Bitmap(loader.content);
		//addChild(myBitmap);
 
 
	}
 
	function duplicateImage(original:Bitmap):Bitmap {
		var image:Bitmap=new Bitmap(original.bitmapData.clone());
		image.x=size*numChildren;
		addChild(image);
		return image;
	}
 
	function completeHandler1(event:Event):void {
		var loader:Loader=Loader(event.target.loader);
		var image:Bitmap=Bitmap(loader.content);
 
				myPaperSprite.front=duplicateImage(image);
		removeChild(loader);
	}
 
	function completeHandler2(event:Event):void {
		var loader:Loader=Loader(event.target.loader);
		var image:Bitmap=Bitmap(loader.content);
 
				myPaperSprite.back=duplicateImage(image);
		removeChild(loader);
 
 
	}
	function ioErrorHandler1(event:IOErrorEvent):void {
		trace("Unable to load image: " + url1);
	}
	function ioErrorHandler2(event:IOErrorEvent):void {
		trace("Unable to load image: " + url2);
	}
}

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of Gary Benade
Gary Benade
Flag of South Africa image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of turpya
turpya

ASKER

You're a genius! Thanks very much - I've spent hours trying to figure this one out!