0

我在actionscript 3中制作视频播放器,我对它很陌生,所以..无论如何,我现在要做的是让应用程序自动点击第一个缩略图,

下面是我的应用程序中的一些代码:

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 ) );
        }
    }

}

我一直在尝试用谷歌搜索它,发现也许我必须添加一个事件侦听器才能知道缩略图何时实际添加到舞台上,然后单击它。

我不知道该怎么做,如果你们能帮助我,我将不胜感激。提前致谢!

编辑:根据 Ascension Systems 的回答,我尝试将我的 if 语句编辑为:

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

        });
    }

我这样做只是为了看看是否发生了任何事情,以及它是否真的点击了缩略图,但事实并非如此。

编辑:我刚刚发现 Ascension Systems 提供的代码有效,但由于我遇到不同的错误,它一开始并没有工作,问题是,我正在使用 youtube API、FLVPlayback 等,而且每个其中一个在不同的影片剪辑中,在 youtube 影片剪辑中,我添加了此功能:

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

但显然它导致了这个我以前没有注意到的警告:TypeError:错误#1009:无法访问空对象引用的属性或方法。在 FLVTOO_fla::YT_mc_4/destroyPlayer()

我将播放器设置为脚本开头的对象,如下所示: var player:Object;

知道为什么会弹出此警告吗?

4

1 回答 1

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);
});

此代码未经测试,请注意 dispatchEvent 代码是伪代码。我在这里将匿名函数放入事件侦听器的方式......有点懒惰,有些人可能不喜欢它,但回调中有代码来清理事件侦听器,因为它是一个只会运行的函数一次,我认为这可以用于此目的。有关这到底是什么的更多信息,请参阅此问题和答案。

但是,我不确定这是否会解决您的问题。就像我说的那样,这没有经过测试,并且假设在对象实际出现在舞台上之前调度事件是这里的问题。让我知道这是否适合您。

另外,附带说明一下,如果您是 flash/AS3 的新手,那么您肯定需要这个网站: http: //gotoandlearn.com/

于 2012-04-10T14:16:00.180 回答