header
ask question
Click here to ask Question Now Its free No registration required. Flash, Flex, Flash Media Server, ActionScript,Adobe Air. Most questions receive a response in an hour.
zarif
Points:10
Posts:0

7/24/2011 6:52:05 AM

Title: How to add a TextField to a loader in Flash AS3 ?


Hi all ,

I have a loader that is loading thumbs using an xml file.This loader is being added to a movieclip called container_mc.The problem is that i want to add a textfield to be like a caption on every thumb.So iam adding it to the container_mc,but it is generating an error to me when calling this:

container_mc.addEventListener(MouseEvent.MOUSE_OVER, onOver);

function onOver(e:MouseEvent):void {
var my_thumb:Loader=Loader(e.target);
my_thumb.alpha=0.5;


}

and the error is that i cannot convert textfield to loader .So how can i solve this ?

this is my complete code :




import fl.controls.ProgressBar;
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;
var full_caption:TextField ;

var fullcontainer:MovieClip;
fullcontainer=new MovieClip();
fullcontainer.x=0;
fullcontainer.y=0;
var passedUpperLimit:Boolean=false;
var prevX:int=0;
var dirX:String="";
var speed:Number;
var padding:Number = 20;

function GetHorizontalDirection():String {
	prevX=curX;
	curX=stage.mouseX;

	if (prevX>curX) {
		dirX="left";
	} else if (prevX < curX) {
		dirX="right";
	} else {
		dirX="none";
	}

	return dirX;
}
var curX:int=0;
stage.addChild(fullcontainer);

var columns:Number;
var my_x:Number;
var my_y:Number;
var my_thumb_width:Number;
var my_thumb_height:Number;
var my_images:XMLList;
var my_total:Number;

var container_mc:MovieClip;
var preloaders_mc:MovieClip;
var full_mc:MovieClip;

var y_counter:Number=0;
var x_counter:Number=0;

var my_tweens:Array=[];
var container_mc_tween:Tween;
var full_tween:Tween;

var myXMLLoader:URLLoader = new URLLoader();
myXMLLoader.load(new URLRequest("gallery.xml"));
myXMLLoader.addEventListener(Event.COMPLETE, processXML);

function processXML(e:Event):void {
	var myXML:XML=new XML(e.target.data);

	columns=myXML.@COLUMNS;
	my_x=myXML.@XPOSITION;
	my_y=myXML.@YPOSITION;
	my_thumb_width=myXML.@WIDTH;
	my_thumb_height=myXML.@HEIGHT;
	my_images=myXML.IMAGE;
	my_total=my_images.length();

	createContainer();
	callThumbs();

	myXMLLoader.removeEventListener(Event.COMPLETE, processXML);
	myXMLLoader=null;
}

function createContainer():void {
	container_mc = new MovieClip();
	container_mc.x=my_x;
	container_mc.y=my_y;
	addChild(container_mc);
	//var myColor:ColorTransform = fullcontainer.transform.colorTransform;
	//myColor.color = 0xFF0000;
	//container_mc.transform.colorTransform = myColor;
	//container_mc.transform.colorTransform = myColor;
	container_mc.addEventListener(MouseEvent.CLICK, callFull);
	container_mc.addEventListener(MouseEvent.MOUSE_OVER, onOver);
	container_mc.addEventListener(MouseEvent.MOUSE_OUT, onOut);
	container_mc.buttonMode=true;

	preloaders_mc = new MovieClip();
	preloaders_mc.x=container_mc.x;
	preloaders_mc.y=container_mc.y;
	addChild(preloaders_mc);
}

function callThumbs():void {
	for (var i:Number = 0; i < my_total; i++) {

		var thumb_url=my_images[i].@THUMB;

		var thumb_loader = new Loader();
		thumb_loader.load(new URLRequest(thumb_url));
		thumb_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, thumbLoaded);

		thumb_loader.name=i;

		thumb_loader.y = (my_thumb_width+10)*y_counter;
		thumb_loader.x = (my_thumb_height+10)*x_counter;

		if (y_counter+1<columns) {
			y_counter++;
		} else {
			y_counter=0;
			x_counter++;
		}
		var preloader_pb:ProgressBar = new ProgressBar();
		preloader_pb.source=thumb_loader.contentLoaderInfo;
		preloader_pb.x=thumb_loader.x;
		preloader_pb.y=thumb_loader.y;
		preloader_pb.width=my_thumb_width;
		preloader_pb.height=my_thumb_height;
		preloaders_mc.addChild(preloader_pb);

		preloader_pb.addEventListener(Event.COMPLETE, donePb);
	}
	
}

function thumbLoaded(e:Event):void {
	var my_thumb:Loader=Loader(e.target.loader);
	container_mc.addChild(my_thumb);
	full_caption=new TextField();
						full_caption.text="hello";
						container_mc.addChild(full_caption);
	fullcontainer.addChild(container_mc);
	
	//fullcontainer.addEventListener(MouseEvent.MOUSE_MOVE,MoveGalleryLeft);
fullcontainer.addEventListener(Event.ENTER_FRAME, movefullcontainerThumbs);

	my_tweens[Number(my_thumb.name)]=new Tween(my_thumb,"alpha",Strong.easeIn,0,1,0.5,true);

	my_thumb.contentLoaderInfo.removeEventListener(Event.COMPLETE, thumbLoaded);
	
}

function callFull(e:MouseEvent):void {
	var full_loader:Loader = new Loader();
	var full_url=my_images[e.target.name].@FULL;
	full_loader.load(new URLRequest(full_url));
	full_loader.contentLoaderInfo.addEventListener(Event.INIT, fullLoaded);

	var full_pb:ProgressBar = new ProgressBar();
	full_pb.source=full_loader.contentLoaderInfo;
	full_pb.x = (stage.stageWidth - full_pb.width)/2;
	full_pb.y = (stage.stageHeight - full_pb.height)/2;
	preloaders_mc.addChild(full_pb);

	full_pb.addEventListener(Event.COMPLETE, donePb);

	container_mc.removeEventListener(MouseEvent.CLICK, callFull);
	container_mc.buttonMode=false;
	container_mc.removeEventListener(MouseEvent.MOUSE_OVER, onOver);
	container_mc.removeEventListener(MouseEvent.MOUSE_OUT, onOut);

	container_mc_tween=new Tween(container_mc,"alpha",Strong.easeIn,1,0.5,0.5,true);

// full_caption.text = my_images[e.target.name].@CAPTION;
}
function fullLoaded(e:Event):void {
	full_mc = new MovieClip();
	full_mc.buttonMode=true;
	addChild(full_mc);
	var my_loader:Loader=Loader(e.target.loader);
	full_mc.addChild(my_loader);
	full_tween=new Tween(my_loader,"alpha",Strong.easeIn,0,1,0.5,true);
	my_loader.x = (stage.stageWidth - my_loader.width)/2;
	my_loader.y = (stage.stageHeight - my_loader.height)/2;
	my_loader.addEventListener(MouseEvent.CLICK,removeFull);

	my_loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, fullLoaded);
	
}
function removeFull(e:MouseEvent):void {
	var my_loader:Loader=Loader(e.currentTarget);
	full_tween=new Tween(my_loader,"alpha",Strong.easeOut,1,0,0.5,true);
	full_tween.addEventListener(TweenEvent.MOTION_FINISH, tweenFinished);

	container_mc_tween=new Tween(container_mc,"alpha",Strong.easeOut,0.5,1,0.5,true);
}

function donePb(e:Event):void {
	var my_pb:ProgressBar=ProgressBar(e.target);
	preloaders_mc.removeChild(my_pb);
	my_pb.removeEventListener(Event.COMPLETE, donePb);
}

function tweenFinished(e:TweenEvent):void {
	var my_loader:Loader=Loader(e.target.obj);
	my_loader.unload();
	full_mc.removeChild(my_loader);// This line was removeChid(my_loader), just add full_mc before it.
	removeChild(full_mc);
	full_mc=null;

	container_mc.addEventListener(MouseEvent.CLICK, callFull);
	container_mc.buttonMode=true;
	container_mc.addEventListener(MouseEvent.MOUSE_OVER, onOver);
	container_mc.addEventListener(MouseEvent.MOUSE_OUT, onOut);

	var my_tween:Tween=Tween(e.target);
	my_tween.removeEventListener(TweenEvent.MOTION_FINISH, tweenFinished);
}
function onOver(e:MouseEvent):void {
	var my_thumb:Loader=Loader(e.target);
	my_thumb.alpha=0.5;
	
	
}
function onOut(e:MouseEvent):void {
	var my_thumb:Loader=Loader(e.target);
	my_thumb.alpha=1;
}

//function MoveGalleryLeft(e:MouseEvent) {
//	
//	
//	var xDirection:String=GetHorizontalDirection();
//	var startDragPosition=((my_thumb_width*5)+40);
//	var horizantalThumbs=(my_thumb_width)*(Math.floor(my_total/columns)-1);
//	var space=10*(Math.floor(my_total/columns)-1);
//	var upperLimit=(horizantalThumbs+space);
//
//	if ((fullcontainer.mouseX)>upperLimit) {
//		passedUpperLimit=true;
//		//trace('ok');
////		trace(fullcontainer.mouseX);
////		trace(upperLimit);
////		fullcontainer.removeEventListener(MouseEvent.MOUSE_MOVE,MoveGalleryLeft);
//
//	}
//	
//
//	if ((fullcontainer.mouseX>startDragPosition&&fullcontainer.mouseX<=upperLimit)&&passedUpperLimit==false&&xDirection=='right') {
//
//		fullcontainer.x-=10;
//
//	}
//	var downlimit=fullcontainer.x;
//	if(xDirection=='left'&&fullcontainer.mouseX>fullcontainer.x&&mouseX<=(stage.stageWidth/2)-600)
//	{
//		
//		fullcontainer.x+=10;
//	}
//
//}
function movefullcontainerThumbs(event:Event):void
{
	if ( mouseY > fullcontainer.y && mouseY < fullcontainer.y + fullcontainer.height)
	{//vertically over fullcontainer
		if (mouseX < stage.stageWidth / 2 - padding * 2 && mouseX > 0)
		{//left of stage explicitly
			speed = -(mouseX - (stage.stageWidth / 2 - padding * 2)) / 8;
		}
		else if (mouseX > stage.stageWidth / 2 + padding * 2 && mouseX < stage.stageWidth)
		{//right of stage explicitly
			speed = -(mouseX - (stage.stageWidth / 2 + padding * 2)) / 8;
		}
		else
		{
			speed = 0;
		}
		fullcontainer.x += speed;

		//fullcontainer limits
		if (fullcontainer.x < - fullcontainer.width + stage.stageWidth - padding)
		{//if scrolled too far left
			fullcontainer.x = - fullcontainer.width + stage.stageWidth - padding;
		}
		else if (fullcontainer.x > padding)
		{//if scrolled to far right
			fullcontainer.x = padding;
		}
	}
}





1
Rayan
Points: 700
Posts:0
7/24/2011 7:16:46 AM



try the following code and it should work. I have added another movie in the container movie so that loader does not replace its root.


function thumbLoaded(e:Event):void {  
    var my_thumb:Loader=Loader(e.target.loader);  

//new code this will add another movie for loader 
var loader_mc:MovieClip = new MovieClip();
container_mc.addChild(loader_mc);
loader_mc.addChild(my_thumb);  
//
    full_caption=new TextField();  
    full_caption.text="hello";  
    container_mc.addChild(full_caption);  
    fullcontainer.addChild(container_mc);  


2
zarif
Points: 10
Posts:0
7/24/2011 10:02:56 AM



Thanks Rayan but it is still generating the same error.


Post your Reply
Name  

Email

Type your Reply or Answer

Are you human? What is 8+8 



Members Login

Email  
Password
Forgot Password





This website focus on: Flash | Flex | FMS | RED5 | WOWZA | Flash Media Server | Adobe AIR | ActionScript,Flash Solutions | Flash Question | Flash Answers | Flash Developers | Flash Problem, Flash Help, Flash bugs, Flash workaround | Flash Blog | Flex Question Answers | Flash Forum | Flex Development | Actionscript development | Flash development | Adobe AIR development
Copyright © 2008 AskMeFlash.com. All rights reserved. Privacy Policy | Terms & Conditions