Reputation: 3054
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?
Upvotes: 0
Views: 499
Reputation:
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/
Upvotes: 1