使用ActionScript播放完视频后,淡出NetStream



我在一个房地产网站上工作,会有多个房产,每个都有自己的主页。每个属性主页都会有一个不同的介绍视频,在页面加载后播放。

我正在使用Flash播放视频,从flashvar中获取视频文件名。

我使用的是Flash Pro CS4和ActionScript 3.0,这是我迄今为止的代码(相当初级),目前运行良好:

//VARIABLLE DECLARATIONS
var video;
var nc;
var ns;
var video_file;
//Get Flashvar intro_video_file
video_file = root.loaderInfo.parameters.intro_video_file;
//RUN ON STARTTUP
nc = new NetConnection();
nc.connect(null);
ns = new NetStream(nc);
ns.client = this;
video = new Video(560, 315);
addChild(video);
video.attachNetStream(ns);
ns.play(video_file);

但我想在播放之前加载视频并淡出,然后在播放结束后淡出,而不是挂在上

淡入不那么重要。

我有点像Flash和ActionScript的初学者,有人能给我一些关于如何配合的建议吗?

一种可能性是调整视频的alpha属性:

video.alpha = .5;

不过,这必须通过定时事件来处理:

tmr = new Timer(500, 0);
tmr.addEventListener(TimerEvent.Timer, onTimer);
tmr.start();
.
.
.
private function onTimer(pEvent:TimerEvent):void
{
    video.alpha += .125; // or -=, case depending
    if (video.alpha == 1.0)
    {
        tmr.stop();
        tmr.removeEventListener(TimerEvent.Timer, onTimer);
    }
}

这些只是已经提供的示例int和Number值;你必须根据需要对它们进行调整。但要意识到,ActionScript3中的Timer对象往往很糟糕,每秒不超过几次,至少如果你没有以潜在的尴尬方式设置的话。因此,这在很多情况下都应该有效,但如果你想,比如说,将alpha值每秒减少.0120次,这可能是最好的选择,也可能不是最好的选择。

我错误地以另一个用户的身份发布了上面的问题,但我想分享到目前为止我得到的结果。

import flash.utils.Timer;
import flash.events.TimerEvent;
function fadeOut() {
    function onTimer(pEvent:TimerEvent):void
    {
        video.alpha -= .125; // or -=, case depending
        if (video.alpha == 0)
        {
            myTimer.stop();
            myTimer.removeEventListener(TimerEvent.TIMER, onTimer);
        }
    }
    var myTimer:Timer = new Timer(40, 0);
    myTimer.addEventListener(TimerEvent.TIMER, onTimer);
    myTimer.start();
}
function fadeIn() {
    function onTimer(pEvent:TimerEvent):void
        ns.pause();
        video.alpha += .125; // or -=, case depending
        if (video.alpha == 1.0)
        {
            myTimer.stop();
            myTimer.removeEventListener(TimerEvent.TIMER, onTimer);
            ns.resume();
        }
     }
     var myTimer:Timer = new Timer(40, 0);
     myTimer.addEventListener(TimerEvent.TIMER, onTimer);
    myTimer.start();
}

//VARIABLLE DECLARATIONS
var video;
var nc;
var ns;
var video_file;

function statusHandler(event:NetStatusEvent):void 
{ 
    switch (event.info.code) 
    { 
        case "NetStream.Play.Start": 
            fadeIn();
            break; 
        case "NetStream.Play.Stop": 
        fadeOut();
            break; 
    } 
}

//Get Flashvar video_file
video_file = root.loaderInfo.parameters.intro_video_file;
//RUN ON STARTTUP
nc = new NetConnection();
nc.connect(null);
ns = new NetStream(nc);
ns.client = this;
video = new Video(560, 315);
addChild(video);
video.attachNetStream(ns);
ns.addEventListener(NetStatusEvent.NET_STATUS, statusHandler); 
ns.play(video_file);
video.alpha = 0;

工作示例

相关内容

  • 没有找到相关文章

最新更新