您好!欢迎您光临自设倒计时器的制作原理与方法_迎客松B站!

体育

I

交友

I

论坛

I

会员注册

I

本站搜索

I

收藏本站

当前位置:首页 >>>进阶教程>>>自设倒计时器的制作原理与方法
自设倒计时器的制作原理与方法
发表日期:2015/10/31 17:22:00 出处:迎客松 作者:翠柏 发布人:hsb345 已被访问 1010

 

 

自设倒计时器的制作原理与方法

 

 

    教学目的:通过本节教学了解和熟悉影片剪辑元件及其实例名称的创建应用,按钮的指令语句的编写,通过巧妙的设计与制作,进而实现自设倒计时器之动画效果。

    教学对象:本教材是针对有一定动画制作基础和对属性面板、工具箱,动作面板、as语句及相关界面有所了解的朋友们编写的,因此省略了一些步骤,还望谅解。

    教学重点:影片剪辑、动态文本、实例名称、按钮、动作面板、as语句。

     

   

    作前准备

    下载一首缓冲效果较好的mp3的铃声声效,保存到指定的文件夹待用。

    制作过程

    1.启动flash8软件。

    2.确立文档属性 设置动画尺寸为550*400,背景颜色深绿,帧频12,其它默认,点击确定,进入场景1。如图1所示:

图1

    3.首选将准备好的铃声mp3声效导入库中,待用。

    4.创建图形元件

    选择“插入-新建元件”,建立一个名为“底板”的图形元件,点击确定,进入元件编辑区。就一个图层。

    选择图层1第1帧,用矩形工具在舞台拖一个,笔触高度为2,笔触颜色红色,填充色为浅粉色的,规格470*130的矩形,全居中。如图2所示:


图2

    5.创建按钮元件

    选择“插入-新建元件”,建立一个名为“隐钮”的按钮元件,点击确定,进入元件编辑区。就一个图层。

    选择图层1第4帧(点击),插入空白关键帧,用矩形工具在舞台拖一个规格为17*35的无边线的矩形,颜色随意,全居中。上锁。如图3所示:


图3

    6.创建影片剪辑元件

    (1)选择“插入-新建元件”,建立一个名为“计时”的影片剪辑元件,点击确定,进入元件编辑区。添加两个图层,共三个图层。自下而上命名为文本、按钮。

    A.选择文本图层第1帧,用文本工具在舞台输入“计时/暂停”,全居中。在第3幀插入幀,上锁。如图4所示:


图4

    B.选择按钮图层第1帧,从库中拖出“隐钮”按钮元件到舞台,改规格为覆盖文字,全居中。在第2、第3幀插入关键帧。如图5所示:


 

图5

点击第1幀上舞台按钮,按f9,打开动作面板,在as编辑区输入,如下指令语句:

on (press)
{
    _root.startClock();
    _root.startbutton.gotoAndStop(2);
}

点击第2幀上的舞台按钮,按f9,打开动作面板,在as编辑区输入,如下指令语句:

on (press)
{
    _root.pauseClock();
    gotoAndStop(3);
}

点击第2幀上的舞台按钮,按f9,打开动作面板,在as编辑区输入,如下指令语句:

on (press)
{
    _root.unpauseClock();
    gotoAndStop(2);
}

锁定该图层。

    D.本环节完成后的时间轴,如图6所示:


图6

    (2)选择“插入-新建元件”,建立一个名为“设定”的影片剪辑元件,点击确定,进入元件编辑区。添加三个图层,共四个图层。自下而上命名为时间、文本、按钮、as。

    A.选择时间图层第1帧,用动态文本分别依次输入六个零,每两个一组,共三组。颜色、规格、字体自定。如图7所示:


图7

自右向左,点击右1实例,在属性面板填写其实例名称为:t1 。如图8所示:


图8

同理同种方法,完成“右2-右6”动态文本0的操作。其实例名称依次为:t2t3t4t5t6。上锁。

    B.选择文本图层第1帧,用静态文本分别依次输入除动本以外的以下内容。如图9所示:


图9

*红色字为:点选下方的时间数值。上锁。

    C.选择按钮图层第1帧,分别依次从库里拖出“隐钮”按钮元件12个到舞台,将其放置在“0-9,确定、重新设定”之上,调整好规格、位置。如图10所示:


图10

为按钮添加指令语句:

点击“0”上的按钮,按f9,打开动作面板,在as编辑区输入,如下语句:

on (release)
{
    updatescreen(0);
}

点击“1”上的按钮,按f9,打开动作面板,在as编辑区输入,如下语句:

on (release)
{
    updatescreen(1);
}

同理同种方法,完成“3-9”上的按钮语句的添加。语句的格式内容相同,只是将语句中红色数字分别依次换成相对应的“39”即可。

点击“确定”上的按钮,按f9,打开动作面板,在as编辑区输入,如下语句:

on (release)
{
    if (!(t6.text == "0" && t5.text == "0" && t4.text == "0" && t3.text == "0" && t2.text == "0" && t1.text == "0"))
    {
        hrs = t6.text + t5.text;
        mins = t4.text + t3.text;
        secs = t2.text + t1.text;
        tempsec1 = hrs * 60 * 60;
        tempsec2 = mins * 60;
        tempsec3 = Number(tempsec1) + Number(tempsec2) + Number(secs);
        _root.time = tempsec3;
        trace ("here:" + tempsec3);
        _root.secsToTime(_root.time);
    }
}

再点击“重新设定”上的按钮,按f9,打开动作面板,在as编辑区输入,如下语句:

on (release)
{
    reset_sts();
}

锁定该图层。

    D.选择AS图层第1帧,按f9,打开动作面板,在as编辑区输入,如下幀语句:

function reset_sts()
{
    t1.text = "0";
    t2.text = "0";
    t3.text = "0";
    t4.text = "0";
    t5.text = "0";
    t6.text = "0";
    st1 = "na";
    st2 = "na";
    st3 = "na";
    st4 = "na";
    st5 = "na";
    st6 = "na";
    st7 = "na";
}
function updatescreen(keypress)
{
    if (st1 == "na")
    {
        t1.text = keypress;
        st1 = "tkn";
    }
    else if (st2 == "na")
    {
        t2.text = t1.text;
        t1.text = keypress;
        st2 = "tkn";
    }
    else if (st3 == "na")
    {
        t3.text = t2.text;
        t2.text = t1.text;
        t1.text = keypress;
        st3 = "tkn";
    }
    else if (st4 == "na")
    {
        t4.text = t3.text;
        t3.text = t2.text;
        t2.text = t1.text;
        t1.text = keypress;
        st4 = "tkn";
    }
    else if (st5 == "na")
    {
        t5.text = t4.text;
        t4.text = t3.text;
        t3.text = t2.text;
        t2.text = t1.text;
        t1.text = keypress;
        st5 = "tkn";
    }
    else if (st6 == "na")
    {
        t6.text = t5.text;
        t5.text = t4.text;
        t4.text = t3.text;
        t3.text = t2.text;
        t2.text = t1.text;
        t1.text = keypress;
        st6 = "tkn";
    }
    else if (st7 == "na")
    {
        reset_sts();
    }
}
win = "00:00:00";
operator = "";
val1 = "";
val2 = "";
reset_sts();

锁定该图层。

    E.本环节完成后的时间轴,如图11所示:


图11

    7.编辑制作场景

    返回场景1,添加五个图层,共六个图层。自下而上命名为底板、动本、按钮、文本、设定、as。

    (1)选择底板图层第3帧插入空白关键帧,从库中拖出“底板”图形元件到舞台,规格不变,将其放置在舞台的中上位置,水平中齐。上锁。如图12所示:


图12

    (2)选择动本图层第3帧插入空白关键帧,用动态文本一次输入六个0,每两个一组,共三组。中间用隔点分开。颜色、规格、字体自定。调整好位置。如图13所示:


图13

点击该实例,在属性面板填写其实例名称为:screen 。如图14所示:

 

图14

再用动态文本输入一个小的0,颜色、规格、字体自定。将其放置在右侧最后一个0的下方。如图15所示:



图15

点击该实例,在属性面板填写其实例名称为:screen2 。上锁。如图16所示:


图16

    (3)选择文本图层第1帧,用文本工具在舞台中间输入:“作品的题目”,字体、规格、颜色自定;在舞台的右下角输入:“进入”,字体、规格、颜色自定。如图17所示:


图17

在第3幀插入空白关键帧,在舞台的右下方分别输入:“返回重计”和“重新设定”,字体、规格、颜色自定。上锁。如图18所示:


图18

    (4)选择按钮图层第1帧,从库中拖出“隐钮”按钮元件到舞台,将其放置在“进入”之上,调整好规格位置。如图19所示:


 图19

点击该按钮,按f9,打开动作面板,在as编辑区输入,如下指令语句:

on (release)
{
    gotoAndPlay(2);
}

在第3幀插入空白关键帧,从库中拖出两个“隐钮”按钮元件到舞台,分别将其放置在“返回重计,重新设定”之上,调整好规格位置。如图20所示:


图20

点击“返回重计”上的按钮,按f9,打开动作面板,在as编辑区输入,如下指令语句:

on (press)
{
    _root.startbutton.gotoAndStop(1);
    _root.clearClock();
}

点击“重新设定”上的按钮,按f9,打开动作面板,在as编辑区输入,如下指令语句:

on (release)
{
    gotoAndPlay(2);
}

锁定该图层。

    (5)选择设定图层第2帧插入空白关键帧,从库中拖出“设定”影片剪辑元件到舞台,规格改为490*327,全居中。如图21所示:


 图21

点击该实例,在属性面板填写其实例名称为:calc 。如图22所示:


图22

在第3幀插入空白关键帧,从库中拖出“计时”影片剪辑元件到舞台,将其放置在舞台左下方适当位置,调整好规格。如图23所示:


图23

点击该实例,在属性面板填写其实例名称为:startbutton 。如图24所示:


图24

锁定该图层。

    (6)选择as图层第1帧,按f9,打开动作面板,在as编辑区输入,如下幀语句:

fscommand("fullscreen", true);
stop ();
System.useCodepage = true;
myData = new LoadVars();
myData.load("lang.txt");
myData.onLoad = function (succes)
{
    if (succes)
    {
        _root.txt_stopwatch = this.stopwatch;
        _root.txt_countdown = this.countdown;
        _root.txt_returnShoWText = this.sett;
        _root.txt_bigClear = this.clearr;
        _root.txt_backbutton = this.back;
        _root.txt_clearbutton = this.clearr;
        _root.startTextT = this.startt;
        _root.pauseTextT = this.pausee;
        _root.continueTextT = this.continuee;
        gotoAndStop(2);
    }
    else
    {
        trace ("Error loading data");
    }
};

在第2幀插入空白关键帧,点击该幀,按f9,打开动作面板,在as编辑区输入,如下幀语句:

function sizeIt(word, ver, now, max)
{
    dlen = word.length;
    eval(ver).text = word;
    var sizeItd = new TextFormat();
    tosize = now;
    if (dlen > max)
    {
        if (dlen > 5)
        {
            tosize = 23;
        }
        if (dlen > 6)
        {
            tosize = 17;
        }
        if (dlen > 8)
        {
            tosize = 14;
        }
        if (dlen > 11)
        {
            tosize = 10;
        }
        if (dlen > 14)
        {
            tosize = 8;
        }
    }
    sizeItd.size = tosize;
    eval(ver).setTextFormat(sizeItd);
    thgt = tosize * 7.000000E-001;
    eval(ver)._y = eval(ver)._y + eval(ver)._height / 2 - thgt;
}
function secsToTime(s)
{
    _root.StartSecs = s;
    _root.iStartSecs = s;
    _root.StartSecs = s;
    _root.Steps = _root.StartSecs / 60;
    _root.undermin = 60 / _root.StartSecs;
    trace ("the steps..." + _root.Steps);
    var _loc2 = Math.floor(s / 3600);
    var _loc3 = Math.floor(s / 60) - _loc2 * 60;
    var _loc5 = s - _loc2 * 60 * 60 - _loc3 * 60;
    if (String(_loc2).length < 2)
    {
        _loc2 = "0" + _loc2;
    }
    if (String(_loc3).length < 2)
    {
        _loc3 = "0" + _loc3;
    }
    if (String(_loc5).length < 2)
    {
        _loc5 = "0" + _loc5;
    }
    trace (_loc2);
    _root.cntHrs = _loc2;
    _root.cntMins = _loc3;
    _root.cntSecs = _loc5;
    gotoAndStop(3);
}
clearButtonText.text = _root.txt_clearbutton;
_root.sizeIt(_root.txt_returnShoWText, "returnShowText", 27, 8);
stop ();
stop ();
stopAllSounds ();
_root.BellSound = new Sound(Bellsnd);
_root.BellSound.attachSound("alarmClock.mp3");
stopAllSounds ();

在第3幀插入空白关键帧,点击该幀,按f9,打开动作面板,在as编辑区输入,如下幀语句:

function clearClock()
{
    trace ("clear clock");
    _root.egg.falling._visible = false;
    _root.egg.sand.gotoAndStop(1);
    _root.flashit.gotoAndStop(1);
    clearInterval(_root.clockWork);
    _root.startOff = true;
    _root.secs = _root.cntSecs;
    _root.startbutton.gotoAndStop(1);
    _root.startbutton._visible = true;
    _root.mins = _root.cntMins;
    _root.hoursSS = _root.cntHrs;
    _root.screen2.text = "0";
    _root.offSetTime = 0;
    _root.screen.text = _root.hoursSS + ":" + _root.mins + ":" + _root.secs;
    _root.screen2.text = "";
    _root.StartSecs = int(_root.mins) * 60 + int(_root.hoursSS) * 60 * 60 + int(_root.secs);
    _root.barSteps = 100 / _root.StartSecs;
}
function remaining()
{
    _root.nowSecsA = int(_root.mins) * 60 + int(_root.hoursSS) * 60 * 60 + int(_root.secs);
    _root.nowSecsB = (_root.nowSecsA * 1000 + microSecs) / 1000;
    if (_root.nowSecsB > _root.nowSecsA)
    {
        nf = int(_root.barSteps * _root.nowSecsB);
        nf = 100 - nf;
        _root.bar.gotoAndStop(nf);
        _root.egg.sand.gotoAndStop(nf);
        _root.bomb.wick.gotoAndStop(nf);
    }
}
function startClock()
{
    clearClock();
    _root.egg.falling._visible = true;
    timeStarted = getTimer();
    _root.clockWork = setInterval(clockrunning, 1);
}
function pauseClock()
{
    _root.offSetTime = timeNow;
    _root.egg.falling._visible = false;
    clearInterval(_root.clockWork);
}
function unpauseClock()
{
    timeStarted = getTimer();
    _root.egg.falling._visible = true;
    _root.clockWork = setInterval(clockrunning, 1);
}
function clockrunning()
{
    trace ("running");
    trace ("t");
    timeNow = getTimer();
    timeNow = timeNow - timeStarted + _root.offSetTime;
    microSecs = 999 - timeNow;
    remaining();
    if (microSecs < 0)
    {
        microSecs = 0;
    }
    if (timeNow > 999 || _root.startOff == true)
    {
        _root.offSetTime = 0;
        _root.startOff = false;
        timeStarted = getTimer();
        _root.secs = int(_root.secs) - 1;
        if (_root.secs < 0)
        {
            if (_root.hoursSS > 0 && _root.mins == 0)
            {
                _root.hoursSS = int(_root.hoursSS) - 1;
                _root.mins = 59;
                _root.secs = 59;
            }
            else if (_root.mins > 0)
            {
                _root.mins = int(_root.mins) - 1;
                _root.secs = 59;
            }
            else if (_root.mins == 0 || _root.hoursSS == 0)
            {
                _root.secs = 0;
                clearInterval(_root.clockWork);
                done();
            }
        }
    }
    _root.secs = leadZero(_root.secs);
    _root.mins = leadZero(_root.mins);
    _root.hoursSS = leadZero(_root.hoursSS);
    _root.screen.text = _root.hoursSS + ":" + _root.mins + ":" + _root.secs;
    _root.screen2.text = leadZero(microSecs);
}
function clockRunning2()
{
    timeNow = getTimer();
    timeNow = timeNow - timeStarted + _root.offSetTime;
    microSecs = 999 - timeNow;
    if (microSecs < 0)
    {
        microSecs = 0;
    }
    if (timeNow > 999 || _root.startOff == true)
    {
        _root.offSetTime = 0;
        _root.startOff = false;
        timeStarted = getTimer();
        _root.secs = int(_root.secs) - 1;
        if (_root.secs < 0)
        {
            if (_root.hoursS > 0 && _root.mins == 0)
            {
                _root.hoursS = int(_root.hoursS) - 1;
                _root.mins = 59;
                _root.secs = 59;
            }
            else if (_root.mins > 0)
            {
                _root.mins = int(_root.mins) - 1;
                _root.secs = 59;
            }
            else if (_root.mins == 0 || _root.hoursS == 0)
            {
                _root.secs = 0;
                clearInterval(_root.clockWork);
                done();
            }
        }
    }
    _root.secs = leadZero(_root.secs);
    _root.mins = leadZero(_root.mins);
    _root.hoursS = leadZero(_root.hoursS);
    _root.screen.text = _root.hoursS + ":" + _root.mins + ":" + _root.secs;
    _root.screen2.text = leadZero(microSecs);
}
function done()
{
    trace ("done");
    _root.BellSound.start();
    _root.flashit.play();
    _root.startbutton._visible = false;
    _root.screen.text = "00:00:00";
    _root.screen2.text = "";
}
function leadZero(nip)
{
    nip = int(nip);
    if (nip < 10)
    {
        nip = "0" + nip;
    }
    return (nip);
}
_root.backButtonText = _root.txt_backbutton;
_root.sizeIt(_root.txt_bigClear, "_root.bigClearText", 27, 5);
clearClock();

锁定该图层。 

    8.本作业完成后的时间轴如图25所示:


图25

    9.设置铃声mp3声效的链接属性

    打开软件的库,右键库中铃声mp3“声效图标- 链接”,如图26所示:


图26

打开其链接属性,填写其“标识符”为:alarmClock.mp3。其它参数设置,如图27所示:  


图27 

点击确定,完成声效的链接属性设置。 

    10.测试存盘

 

    说明:

    1.倒计时时间设定的规律-顺序是:“时-分-秒”。

    2.如果不设置倒计时结束时的提示铃声,可省略第九步声效的属性链接。

   

最终效果显示效果:


http://hsb345.16789.net/domName/hsb345/201510311720936128.swf

http://www.hsb2011.com/Article/UploadFiles/201208/2012082310195391.swf

 

全屏下载

 

祝你成功

 

进入更多教程

 

双击自动滚屏 【打印本页】 【关闭窗口
 相关评论:

没有相关评论

 发表评论:

身份选择:会员 游客(游客不需要输入密码)
用 户 名: 密 码:
评论内容:
(最多评论字数:500)

迎客松B站 | 设为首页 | 加入收藏 | 联系我们 | 进入管理 | 关于站长 | 本站搜索

联系电话: 联系人:翠柏

琼icp备09005167