Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 通过定时器停止/暂停的整个过程?是的,我在时间线上有一个动画正在播放。脚本的思想是对动画计时,并在给定的时间后停止动画。例如,我可以允许动画运行30秒。我会给第一个循环计时,看看它需要多长时间来制作动画,从第一个循环开始,我可以看看我是否有足够的时间再次循_Actionscript 3_Flash_Actionscript - Fatal编程技术网

Actionscript 3 通过定时器停止/暂停的整个过程?是的,我在时间线上有一个动画正在播放。脚本的思想是对动画计时,并在给定的时间后停止动画。例如,我可以允许动画运行30秒。我会给第一个循环计时,看看它需要多长时间来制作动画,从第一个循环开始,我可以看看我是否有足够的时间再次循

Actionscript 3 通过定时器停止/暂停的整个过程?是的,我在时间线上有一个动画正在播放。脚本的思想是对动画计时,并在给定的时间后停止动画。例如,我可以允许动画运行30秒。我会给第一个循环计时,看看它需要多长时间来制作动画,从第一个循环开始,我可以看看我是否有足够的时间再次循,actionscript-3,flash,actionscript,Actionscript 3,Flash,Actionscript,通过定时器停止/暂停的整个过程?是的,我在时间线上有一个动画正在播放。脚本的思想是对动画计时,并在给定的时间后停止动画。例如,我可以允许动画运行30秒。我会给第一个循环计时,看看它需要多长时间来制作动画,从第一个循环开始,我可以看看我是否有足够的时间再次循环,或者我是否应该停止动画。我想创建一些代码,我可以在很多不同的项目中使用。好的,我可以在第一部分帮助你。设定一个运行时间,并在倒计时结束时停止,但我不明白你在第二部分的观点。你是说动画可能是1分钟长,如果它运行30秒,那么你希望代码评估剩下的


通过定时器停止/暂停的整个过程?是的,我在时间线上有一个动画正在播放。脚本的思想是对动画计时,并在给定的时间后停止动画。例如,我可以允许动画运行30秒。我会给第一个循环计时,看看它需要多长时间来制作动画,从第一个循环开始,我可以看看我是否有足够的时间再次循环,或者我是否应该停止动画。我想创建一些代码,我可以在很多不同的项目中使用。好的,我可以在第一部分帮助你。设定一个运行时间,并在倒计时结束时停止,但我不明白你在第二部分的观点。你是说动画可能是1分钟长,如果它运行30秒,那么你希望代码评估剩下的30秒并再次播放?你是否在考虑按时间顺序计算播放的帧数?我会在回答中给你一些指示,然后我们会通过评论进行改进…在发现“横幅”这个词之后,我假设你有1分钟的时间,你想在30秒的时间内插入横幅,它会运行两次,15秒的横幅将运行四次,但45秒的横幅将只运行一次,因为没有足够的时间在1分钟限制内重新启动?这就是你想要实现的吗?完全正确。这是一个横幅。这会让你开始它。它计数5秒(5000毫秒),然后停止动画。我会更新它一点,包括其他的东西,当我更明白你在上面的评论是什么意思,这是好的,但我不只是想停止动画后,一个给定的时间,我需要它停止在一个特定的帧。这就是为什么我有startFrame和endFrame函数。我的想法是,动画将只在调用endFrame函数的地方停止。我是否需要将所有内容都放在MC中?我原以为这可能是解决方案,但如果可能的话,我会尽量避免这样做。请参见编辑2——基本上,如果所有内容都在MC中,您可以更好地控制。如果你处理的是MC而不是舞台,那么从淡入/淡出到检查播放了多少帧都会变得更容易。此外,您还需要在最后一帧触发事件,通过在MC的时间线(而不是主时间线)中移动,您不会丢失主时间线(如果有)etcThanks的第1帧上的任何代码的范围,我希望不必把所有的东西都放在MC中,因为这取决于人们是否真的这么做,我无法控制他们设置文件的方式,但看起来没有其他方法可以做到。谢谢你的帮助,检查了你的代码并根据它更新了我的代码。
this.stop();
root.stop();
MovieClip(root).stop();
MainTimeLine(parent).stop();
MovieClip(parent).stop();
parent.stop();
DisplayObject(stage).stop();
MainTimeline(parent).stop();
Main(root).stop();
Object(root).stop();
this.stage.stop();
MovieClip(this).stop();
MovieClip(this.root).stop();
(root as MovieClip).stop();
package com.preview {

import flash.utils.Timer;
import flash.events.TimerEvent     
import flash.utils.getTimer;
import flash.display.MovieClip;

public class looptimer extends MovieClip
{

var startTime:int = 0;
var allowedTime:int = 5000;
var loopTime:int = 0;


    public function looptimer () 
    {
        var myTimer:Timer = new Timer(5000, 1); //count before doing function "timerListener"  the 1 means do once else it will loop forever
        myTimer.addEventListener(TimerEvent.TIMER, timerListener);
        myTimer.start();

        function timerListener (e:TimerEvent):void
        {
        trace("Timer countdown finished");
        animMC.stop(); //anim stops
        }

    }

}

}
dispatchEvent(new Event("Banner_end)")); //end frame
package com.preview 
{
    import flash.utils.*;
    import flash.events.*;
    import flash.utils.Timer;
    import flash.events.TimerEvent;
    import flash.utils.getTimer;
    import flash.display.MovieClip;
    import flash.events.Event;

    public class looptimer extends MovieClip
    {


        var allowed_playing_Time:int = 10; //time limit in seconds
        var play_Count:int = 0; //tracking number of times played
        var can_play_Amount:int = 1; //total times can be played

        var _startTime:Date;//Number;
        var _endTime:Date;//Number;

        //for time check using actual [computer] clock = more accurate than timer
        var real_Time:Date;
        var anim_start_time:int;
        var anim_end_time:int;
        var anim_play_length:int;

        public function looptimer()
        {
            //starting the Banner
            play_Banner_anim();
        }

        function play_Banner_anim():void
        {
            animMC.stop(); //set strating banner state as paused;

            _startTime = real_Time = new Date();//Real Time value initial set here
            trace("current time  at START is: " + _startTime.minutes + " mins past and " + _startTime.seconds + " secs");

            animMC.addEventListener("Banner_end", check_Time);
            animMC.addEventListener("Banner_end", calculate_Replay);
            anim_start_time = getTimer();
            animMC.play();
        }

        function check_Time(e:Event):void
        {
            animMC.stop(); trace( "Banner has reached last frame");
            animMC.removeEventListener("Banner_end", check_Time);
            play_Count = play_Count + 1;
            trace("Times banner has played / looped): " + play_Count);


            _endTime = real_Time = new Date();//new update of Real Time value
            trace("current time at END is: " + _endTime.minutes + " mins past and " + _endTime.seconds + " secs");

            anim_end_time = getTimer();
            anim_end_time = Math.ceil(anim_end_time);
            anim_play_length = Math.round(Math.floor(anim_end_time - anim_start_time) / 1000);

            anim_play_length = anim_play_length;

            trace("checking if Real Time: ");
            var date1:Date = _startTime;
            var date2:Date = _endTime;

            var elapsed1:Number = Date.UTC(date1.minutes,date1.seconds);
            var elapsed2:Number = Date.UTC(date2.minutes,date2.seconds);

            var playingTime:Number = Math.round( (elapsed2/1000) - (elapsed1/1000) );
            trace ("time elasped (delta) is "  +  playingTime );


            //check seconds elapsed in banner playback (i.e total play length)
            trace("Banner total playing length was " + anim_play_length + " seconds");

            //so how many times can banner play within allowed time limit?
            var can_fit_Num:Number = allowed_playing_Time / anim_play_length;

            trace("can fit this many plays in allowed time limit: " + can_fit_Num);
            can_play_Amount = can_fit_Num;
            trace("can_play_Amount is : " + can_play_Amount);
            if (can_play_Amount <= 0)
            {
                trace("Warning: Banner Anim is either longer than allowed time limit or has a play length of zero");
            }

        }

        function calculate_Replay(e:Event):void
        {
            trace("Calculating replay function :::::: ");
            trace("Play/looped amount is: " + play_Count);
            trace("Can play amount times is : " + can_play_Amount);

            if (play_Count < can_play_Amount)
            {
                trace("anim_play_length is:" + anim_play_length);
                replay_tings();
                trace("replaying anim");
            }
            else
            {
                animMC.stop();
                trace("reached replaying times (" + can_play_Amount + ") available within limit (" + allowed_playing_Time + " secs)");
                if (can_play_Amount <= 0)
                { trace("Warning: Banner Anim is either longer than allowed time limit or has a play length of zero"); }

                //do something else. Currently just stops since no time for replay
            }

        }

        function replay_tings():void
        {

            animMC.addEventListener("Banner_end", calculate_Replay);
            animMC.play();
            play_Count = play_Count + 1;
            trace("Play Count/loops: " + play_Count);

        }

    }

}