在BUFFERING_STATE_ENTERED中停止按钮功能

时间:2011-12-02 15:13:31

标签: flash actionscript-3 flv

我有一个视频播放器,当按下按钮时,视频会加载并播放。每当我按下混搭时,我就可以同时播放多个视频。在加载另一个视频之前,我以为我已经设置了代码以删除所有孩子。

我觉得使用BUFFERING_STATE_ENTERED监听器可以最终解决我的问题。

当BUFFERING_STATE_ENTERED处于活动状态时,是否有一种很好的方法可以禁用屏幕上的所有按钮,并在BUFFERING_STATE_ENTERED完成后重新打开所有按钮?

//快速修复我在我的按钮区域加载透明图像并在开始时删除图像, 当用户选择一个新视频并进入BUFFER_STATE_ENTERED时,它会返回。这是从他们那里得到的 点击按钮。     这不是永久性的。**

var ButtonBlock:empty_png = new empty_png;
ButtonBlock.x = 1550;
my_player.addEventListener(VideoEvent.BUFFERING_STATE_ENTERED, bufferPlay);
function bufferPlay(e:VideoEvent):void {
        trace("IN BUFFER");
        addChild(ButtonBlock);
}   
my_player.addEventListener(VideoEvent.PLAYING_STATE_ENTERED, startPlay);
function startPlay(e:VideoEvent):void {


        if(ButtonBlock)
            {
            removeChild(ButtonBlock);
            }
}

3 个答案:

答案 0 :(得分:1)

根据您在指定时间在舞台上的按钮数量,您最好的选择可能是单独禁用每个按钮:

buttonName.mouseEnabled = false; // disable the button
buttonName.mouseChildren = false; // disable any subclips to prevent them from also receiving clicks

如果你想采取严厉禁用所有按钮的措施,你可以使用......

stage.mouseChildren = false;

答案 1 :(得分:1)

我的想法是,只要您选择另一个视频,就会禁用选择其他视频的功能,并在您准备好让用户选择另一个视频后重新启用它。我不知道你的程序是如何设置的,所以有更多的信息会有用。

如果你有几个按钮,每个视频一个按钮,那么我建议只需要一个布尔值,每个按钮在点击之前做任何事情都要检查。我们称之为loadingVideo

if(!loadingVideo) {
    loadingVideo = true;
    //(button's actions here)
} else {
    //(maybe a warning message here)
}

视频初始化后(可能是VideoEvent.PLAYING_STATE_ENTERED),您需要再次将loadingVideo设置为false。这样,如果您的用户想要更改他们可以的视频。

答案 2 :(得分:0)

听起来您正在使用多个视频资源。为什么不只是使用一个视频资产来收看所有视频?这就是为什么你不能一次玩两次。