0

I'm making a video player in actionscript 3, I'm quite new to it so.. Anyhow, what I'm trying to do now is to make the application auto click on the first thumbnail,

Heres some code from my application:

function createThumbs():void{
    var i:Number = 0;
    //For loop that iterates through all of the videos in an XML file that has a list of videos in it
    for each (var videoEntry:XML in videosList) {
        i++;
        var thumbnail:MovieClip = new thumb_mc;
        thumbnail.name = "thumb"+i;
        thumbnail.addEventListener(MouseEvent.MOUSE_UP,thumb_click);
        thumbs_container.addChild(thumbnail);

        //Now attempting to simulate a click if it's the first thumbnail
        if(i == 1){
            thumbnail.dispatchEvent( new MouseEvent( MouseEvent.MOUSE_UP ) );
        }
    }

}

I've been trying to google it and found that maybe I'll have to add an event listener to know when the thumbnail is actually being added to the stage, and just then click on it.

I don't know how to do that though, and would be grateful if you guys could help me. Thanks in advance!

EDIT: According to Ascension Systems' answer, I tried to edit my if statement to this:

    if(i == 1){
        thumbnail.addEventListener(Event.ADDED_TO_STAGE, function clipAdded(e:Event):void {
        MovieClip(e.currentTarget).dispatchEvent( new MouseEvent( MouseEvent.MOUSE_UP ) );

        });
    }

I did that just to see if anything happens and if it's really clicking on the thumbnail, but it isn't.

EDIT: I just found out that the code that Ascension Systems provided worked, but it didn't work at first because of a different error I had, the thing is, I'm working with the youtube API, FLVPlayback and such, And Each one of them is in a different movieclip, In the youtube movieclip I added this function:

function destroyPlayer():void {
    player.destroy();
}

But apparently it caused this warning that I haven't noticed before: TypeError: Error #1009: Cannot access a property or method of a null object reference. at FLVTOO_fla::YT_mc_4/destroyPlayer()

I am setting the player as an object in the beginning of the script like so: var player:Object;

Any idea why this warning is popping up?

Radicate
  • 2,934
  • 6
  • 26
  • 35
  • I removed the Flex tag b/c this question does not have anything to do with Flex. I'm not sure why your code is not working. Do you need to simulate the mouse up event, or can you just call the thumb_click method directly? – JeffryHouser Apr 10 '12 at 14:00
  • @www.Flextras.com I thought that some flex programmers had some AS knowledge as I heard it's similar, but maybe I was wrong, anyhow about the code, the method has to be called from a thumbnail as it gets the values from the target and such – Radicate Apr 10 '12 at 14:04
  • Flex is an ActionScript framework; so just about every Flex programmer should have some AS3 knowledge. However, this question has nothing to do with the Flex Framework. I recommend tagging questions based on relevant topics. A lot of Flash programmers also use PHP; but you wouldn't tag this as PHP would you? – JeffryHouser Apr 10 '12 at 14:18
  • 1
    @www.Flextras.com True. gotcha buddy. won't do that again, thanks for correcting me :) – Radicate Apr 10 '12 at 14:32
  • @Don can you add the event handler `thumb_click()` to your question. – Taurayi Apr 10 '12 at 14:41
  • 1
    @Taurayi Hi, I've been trying to make this code work, and I just found out that it does work, but something else is causing the problem, I'll edit my question in a second and would be glad to know if you could help with it :) – Radicate Apr 10 '12 at 14:53

1 Answers1

1
thumbnail.addEventListener(Event.ADDED_TO_STAGE, function clipAdded(e:Event):void {
    MovieClip(e.currentTarget).dispatchEvent(new MouseEvent(MouseEvent.MOUSE_DOWN, ... rest of arguments);

    //Remove the listener when done
    (e.target as EventDispatcher).removeEventListener(e.type, arguments.callee);
});

This code is untested and note that the dispatchEvent code is pseudo code. The way that I've dropped an anonymous function here into the event listener... is kinda lazy and some might not like it but there is code within the callback to clean up the event listeners and since it's a function that will only ever run once, well I think it's okay for this purpose. For more info on what exactly this is, see this question and answer.

I'm not sure however that this will solve your issue. Like I said this is not tested and it's done on the assumption that dispatching the event prior to having the object actually be on the stage is the issue here. Let me know if this works out for you.

Also, as a side note, if you're new to flash/AS3 then you definitely need this website: http://gotoandlearn.com/

Community
  • 1
  • 1
  • Thanks for that, I edited my question with what I've tried, but it still didn't work, I'd be happy to hear if that's how I was supposed to do it – Radicate Apr 10 '12 at 14:27
  • Yep, the problem was quite different though, it was saying that Player wasn't defined in another movieclip, I solved it in a bad way but at least it works now, I'd still be really glad to know why I had this problem though, I edited the question so you can see what my problem is – Radicate Apr 10 '12 at 18:22