﻿var movie, timer, step, total, state = null, delay = 100
var ratex;
function init() {//在 Flash 加载完成后初始化相关变量的函数 
    /*捕获 id 为 movie 的对象，若要兼容NS， 
    可用 window.document.movie 代替*/
    movie = document.getElementById("flashMovie")
    //每 delay 毫秒执行一次 showStatus() 函数 
    timer = setInterval("showStatus()", delay)
    total = movie.TotalFrames            //获取 Flash 的总帧数 
    step = total / 50 | 0                    //快进快退时的步长 
    buttonState(false) //调用 buttonState() 函数，设置控制按钮可用 
    movie.width = Math.min(movie.TGetProperty("_level0", 8), 500)//设置 Flash 的宽 
    //设置 Flash 的高
    movie.height = Math.min(movie.TGetProperty("_level0", 9), 400)
    ratex = movie.TGetProperty("_level0", 8) / movie.TGetProperty("_level0", 9);
}

function Rewind() {
    movie.Rewind()    //使 Flash 返回到第一帧 
}

function Back() {//控制快退的函数 
    //如果当前帧数不为 0 并且 Flash 不处于快进状态 
    if (movie.FrameNum != 0 && state != "forward") {
        state = "back"      //设置状态变量为 back 
        Quick()           //调用实现快进快退的 Quick() 函数 
        // delay 毫秒后再次执行 Back() 函数，以实现不断快退的效果 
        setTimeout("Back()", delay)
    }
    else state = null   //快退完成后设置状态变量 state 为 null 
}

function Play() {
    var btnPlay = document.getElementById("play");

    /*如果 Flash 正在播放，就调用 Flash 的 StopPlay() 方法使之停止播放， 
    否则调用 Flash 的 Play() 方法使之播放*/
    //with (movie) IsPlaying() ? StopPlay() : Play()
    if (movie.IsPlaying()) {
        movie.StopPlay();
        btnPlay.innerHTML = "4";
        btnPlay.title = "播放";
    }
    else {
        movie.Play();
        btnPlay.innerHTML = ";";
        btnPlay.title = "暂停";
    }
}

function Forward() {
    //如果当前帧数不在最后一帧并且 Flash 不处于快退状态 
    if (movie.FrameNum != total - 1 && state != "back") {
        state = "forward"   //设置状态变量为 back 
        Quick()           //调用实现快进快退的 Quick() 函数 
        // delay 毫秒后再次执行 orward() 函数，以实现不断快进的效果 
        setTimeout("Forward()", delay)
    }
    else state = null   //快进完成后设置状态变量 state 为 null 
}

function GoToEnd() {
    movie.GoToFrame(total - 1) //跳到 Flash 的最后一帧       
}

function Replay() {
    Rewind()   //使 Flash 返回到第一帧 
    Play()     //播放 Flash 
    /*因为多数 Flash 都有一个停止的画面，让用户点击播放按钮后再播放，在  
    delay*5 毫秒后执行 Play()，可以跳过那个画面(仅适用于部分 Flash)*/
    setTimeout("Play()", delay * 5)
}
function showStatus() {
    var N = movie.FrameNum + 1   //取得 Flash 当前播放到的帧数 
    //根据 Flash 的播放进度设置 id 为 bar 的表格的宽度 
    bar.style.width = Math.round(N * 100 / total) + "%"
    //在 id 为 frameCount 的对象中显示当前帧数和总帧数 
    //frameCount.innerText = N + "/" + total
}

function Quick() {
    //根据当前状态，计算快进或快退时将要跳转到的目标帧 
    var targetFrame = movie.FrameNum + step * { back: -1, forward: 1}[state]
    movie.GoToFrame(targetFrame)    //跳到目标帧 
}

function selectMovie() {
    /*触发 id 为 moviefile 的上传控件的 Click (单击)事件， 
    使之弹出"选择文件"对话框*/
    document.getElementById("moviefile").click()
}

function loadMovie() {
    //取得触发本事件的对象的值(上传控件的内容) 
    var file = event.srcElement.value
    //通过判断所选择文件的扩展名是否为".swf"以实现简单的过滤 
    if (/\w\.swf$/.test(file)) {
        movie.LoadMovie(0, file)  //加载 Flash 文件 
        loaded()                 //调用下载进度显示的函数 
    }
    //如果文件名为".swf"以外的，弹出警告说明 
    else alert("文件格式错误，请重新选择")
}

function buttonState(de) {
    //捕获 id 为 ctlButtons 的对象内的所有标签名为 "button" 的对象 
    var buttons = ctlButtons.document.all.tags("BUTTON")
    //设置除"打开 Flash 文件"按钮以外的所有控制按钮的禁用状态 
    for (var i = 0; i < buttons.length - 1; i++)
        buttons[i].disabled = de
}

function loaded() {
    //捕获 id 为 movie 的对象
    var movie = document.getElementById("flashMovie")
    if (movie.PercentLoaded() == 100)//如果 Flash 下载完成 
        init()        //调用初始化有关变量的函数 init() 
    //否则在 delay 毫秒后再次执行 loaded() 函数 
    else setTimeout("loaded()", delay)
    //根据下载量显示 id 为 bar 的表格的宽度 
    bar.style.width = movie.PercentLoaded() + "%"
    //frameCount.innerText = bar.style.width   //显示下载百分比 
} 
