The latter is cleaner and better, IMO.

Write a function that your event handler calls. Then, you can call it from elsewhere and from your button click handler.

function onThumbClick(event:MouseEvent):void
{
    loadImage(event.target.name);
}
function loadImage(num:int):void
{
   // loadImage(num);
}

Juan Pablo Califano wrote:
You have a couple of options:

You could add an optional parameter to the function that handles the click,
like this:

function clickThumb(e:MouseEvent,index:int = 0):void{

}

Setting a default value for the index parameter allows the function to be
called without passing it. That's what will happen when a thumb is clicked.

When you want to call the function directly, you'd do:

clickThumb(null,image_num + 1);

In clickThumb, check whether the event object is null or not. If it's not,
do what you're currently doing. If it's null, use the index parameter as the
index into my_images.


Another thing you could do is a bit of refactoring.

Have the click handler only resolve the index and calling another function
to actually load the image.

function clickThumb(e:MouseEvent):void {
     loadImage(e.target.name);
}

function loadImage(index:int):void {
    if (my_full_images[index] == undefined){
   var full_url = my_images[inde...@full;
   ... etc ...
}

Then, from your other button's handler, call loadImage(image_num + 1);


Cheers
Juan Pablo Califano

2009/5/23 Isaac Alves <isaacal...@gmail.com>

Hello!
In my code there's a function that shows an image on the screen (or load
the
image and show a progress bar) that is called by clicking on a thumbnail,
and uses a parameter [e.target.name] refering to the property "name" of
the
thumbnail clicked, which is an integer. The thumbnails are placed inside
the
cointaner_mc MovieClip.

container_mc.addEventListener(MouseEvent.CLICK, clickThumb);

function clickThumb(e:MouseEvent):void{
if (my_full_images[e.target.name] == undefined){
var full_url = my_images[e.target.nam...@full;

etc...

but I want to call this function by clicking on a button, which would need
to pass another type of parameter, in this case, a variable which refers to
the number of the image displayed on the screen plus one.

I tried this:

clickThumb(image_num + 1)

But it doesn't work, I get the following error:

1067: Implicit coercion of a value of type Number to an unrelated type
flash.events:MouseEvent.

How could I call the function clickThumb and make it use "image_num + 1"
instead of "e.target.name" ?

Could I dispatch the event (MouseEvent.CLICK, clickThumb), passing this
value  "image_num + 1" ?

Thanks in advance !!
Isaac
_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to