Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.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 完成后的闪存重启功能_Actionscript 3_Flash_Timer_Reset - Fatal编程技术网

Actionscript 3 完成后的闪存重启功能

Actionscript 3 完成后的闪存重启功能,actionscript-3,flash,timer,reset,Actionscript 3,Flash,Timer,Reset,我已经编写了这段代码,它工作得很好——我的问题是,最后我希望重新开始 当我开始制作这部电影时,我的意图是,当它结束时,.swf电影会循环播放——但这并没有发生。 然后我想我会尝试在代码中创建一种“重启”函数,重置计时器和字符串。。 我在谷歌上搜索过,自己也尝试过一些东西,但一点运气都没有 首先,我尝试重置变量i。然后我尝试删除计时器事件侦听器。但是没有成功 让代码重新开始的最佳方式是什么 import flash.utils.Timer; import flash.events.TimerEve

我已经编写了这段代码,它工作得很好——我的问题是,最后我希望重新开始

当我开始制作这部电影时,我的意图是,当它结束时,.swf电影会循环播放——但这并没有发生。 然后我想我会尝试在代码中创建一种“重启”函数,重置计时器和字符串。。 我在谷歌上搜索过,自己也尝试过一些东西,但一点运气都没有

首先,我尝试重置变量i。然后我尝试删除计时器事件侦听器。但是没有成功

让代码重新开始的最佳方式是什么

import flash.utils.Timer;
import flash.events.TimerEvent;
import com.greensock.*;
import com.greensock.easing.*;

var str_one:String = 'På fredag udkommer metroXpress, som du kender den, for sidste gang... ';
var i:uint = 0;
var timer_one:Timer = new Timer(50);
timer_one.start();
timer_one.addEventListener(TimerEvent.TIMER, goTime);

var str_two:String = 'På fredag udkommer metroXpress, som du kender den, for sidste gang... Fra 2. april bliver du mødt af en helt ny avis, med det bedste fra den gamle, tilsat en masse nyt.';
var timer_two:Timer = new Timer(50);
timer_two.addEventListener(TimerEvent.TIMER, goTime_two);

var str_three:String = 'På fredag udkommer metroXpress, som du kender den, for sidste gang... Fra 2. april bliver du mødt af en helt ny avis, med det bedste fra den gamle, tilsat en masse nyt.Sådan vil vi skabe en endnu bedre avis til dig, der er på farten. Glæd dig – det gør vi!';
var timer_three:Timer = new Timer(50);
timer_three.addEventListener(TimerEvent.TIMER, goTime_three);

function goTime(e:TimerEvent) {
    tekstbox1_txt.appendText(str_one.charAt(i));
    i++;
    if (i>=str_one.length) {
        timer_one.stop();
        TweenLite.to(hand, 1, {y:175, onComplete:ripwhite});
        }
    }

function ripwhite():void {
    TweenLite.to(hand, 1, {y:405});
    TweenLite.to(white_mask, 1, {y:320, onComplete:fadetekst1ud});
}

function fadetekst1ud():void {
    TweenLite.to(tekstbox1_txt, 1, {alpha:0, onComplete:tekstnr2});
    }

function tekstnr2():void {
timer_two.start();
}

function goTime_two(e:TimerEvent) {
    tekstbox2_txt.appendText(str_two.charAt(i));
    i++;
    if (i>=str_two.length) {
        timer_two.stop();
        TweenLite.to(tekstbox2_txt, 1, {alpha:1, onComplete:forsinkelse});
        }
    }

function forsinkelse():void {
    TweenLite.to(tekstbox2_txt, 1, {alpha:0, onComplete:tekstnr3});
    }

function tekstnr3():void {
timer_three.start();
}

function goTime_three(e:TimerEvent) {
    tekstbox3_txt.appendText(str_three.charAt(i));
    i++;
    if (i>=str_three.length) {
        timer_three.stop();
        TweenLite.to(tekstbox3_txt, 1, {alpha:1, onComplete:sidstefunktion});
        }
    }

function sidstefunktion():void {
    TweenLite.to(tekstbox3_txt, 1, {alpha:0});
    TweenLite.to(rippedpic, 1, {alpha:0});
    }
编辑:

当设置重置功能,然后使其循环回初始功能时,如下所示:

function nulstil():void {
    i = 0;
    TweenLite.killTweensOf(hand);
    TweenLite.killTweensOf(tekstbox1_txt);
    TweenLite.killTweensOf(tekstbox2_txt);
    TweenLite.killTweensOf(tekstbox3_txt);
    timer_one.addEventListener(TimerEvent.TIMER, goTime);
    timer_two.addEventListener(TimerEvent.TIMER, goTime_two);
    timer_two.addEventListener(TimerEvent.TIMER, goTime_three);
    TweenLite.to(white_mask, 0.1, {onComplete:goTimeAgain});
    }
我在输出中得到以下结果:

ArgumentError:Error#1063:Untitled_fla::MainTimeline/GoTimeReach()上的参数计数不匹配。预期为1,得到0。 在功能上/ 在com.greensock.core::TweenCore/complete()上 在com.greensock::TweenLite/renderTime()上 在com.greensock.core::SimpleTimeline/renderTime()上
在com.greensock::TweenLite$/updateAll()

上,我在评论中建议您使用TimelineMax。以下是我认为应该有效的完整代码。请仔细注意我在哪里使用
append
offset
参数,在哪里不使用。您需要填写
resetEverything
函数,将所有视觉元素设置为正确的起始位置、字母等

基本工作原理:我们使用TimelineMax的
addCallback
功能,而不是使用
Timer
。回调在时间线中的“长度”为0,因此在附加回调时,以及在每批回调后添加第一个tween时,必须手动推进播放头(这就是我们使用偏移量参数的地方)。不过,tween确实有一个长度,因此后续对
append
的调用将自动将tween与构建到该点的时间线的末尾对齐

在TimelineMax的构造函数中,我们指定了
repeat:-1
,这将导致时间线永远循环。最后,我们在一开始就添加了
resetEverything
回调,这样每当时间轴重新启动时,我们就可以确保所有元素都处于正确的开始位置。其余的是完全自动的,由时间线处理

import com.greensock.*;

var str_one:String = 'På fredag udkommer metroXpress, som du kender den, for sidste gang... ';
var str_two:String = 'Fra 2. april bliver du mødt af en helt ny avis, med det bedste fra den gamle, tilsat en masse nyt.';
var str_three:String = 'Sådan vil vi skabe en endnu bedre avis til dig, der er på farten. Glæd dig – det gør vi!';

//-------- HELPER FUNCTIONS ---------//

// Set everything to start positions
function resetEverything():void {
    // Set alphas, positions, etc. 
    hand.x = <start x>;
    hand.y = <start y>;
    //
}

// Quick reusable callback
function addText(textBox:TextField, text:String):void { textBox.appendText(text); }

//-------- BUILD THE TIMELINE ---------//
var timeline:TimelineMax = new TimelineMax({repeat : -1}); //repeat = -1 --> loop forever
timeline.pause();
timeline.addCallback(resetEverything, 0);

var lng:uint = str_one.length;
var playHead:Number = 0.05;
for(var i:uint = 0; i < lng; i++) {
    timeline.addCallback(addText, playHead, [tekstbox1_txt, str_one.charAt(i)]);
    playHead += 0.05;
}
timeline.append(new TweenLite(hand, 1, {y:175}), lng * 0.05);  // !!Note the offset argument here!!
timeline.append(new TweenLite(hand, 1, {y:405}));
timeline.append(new TweenLite(white_mask, 1, {y:320}));
timeline.append(new TweenLite(tekstbox1_txt, 1, {alpha:0}));

playHead += 4;
lng = str_two.length;
for(i = 0; i < lng; i++) {
    timeline.addCallback(addText, playHead, [tekstbox2_txt, str_two.charAt(i)]);
    playHead += 0.05;
}
timeline.append(new TweenLite(tekstbox2_txt, 1, {alpha:1}), lng * 0.05); // !!Note the offset argument here!!
timeline.append(new TweenLite(tekstbox2_txt, 1, {alpha:0}));

playHead += 2;
lng = str_three.length;
for(i = 0; i < lng; i++) {
    timeline.addCallback(addText, playHead, [tekstbox3_txt, str_three.charAt(i)]);
    playHead += 0.05;
}
timeline.append(new TweenLite(tekstbox3_txt, 1, {alpha:1}), lng * 0.05); // !!Note the offset argument here!!
timeline.append(new TweenLite(tekstbox3_txt, 1, {alpha:0});
timeline.append(new TweenLite(rippedpic, 1, {alpha:0});

timeline.play();
import com.greensock.*;
var stru_one:String='Påfredag udkommer metroXpress,som du kender den,代表sidste gang…';
var str_two:String='fra2。4月,纽约阿维斯大学医学院医学院,纽约大学医学院;
变量stru_三:String='Sådan vil vi skabe en endnu bedre avis til dig,der påfarten。格劳德·迪格——德特·戈尔维!”;
//--------辅助函数---------//
//将所有设置为起始位置
函数resetEverything():void{
//设置字母、位置等。
hand.x=;
hand.y=;
//
}
//快速可重用回调
函数addText(textBox:TextField,text:String):void{textBox.appendText(text);}
//--------建立时间表---------//
var timeline:TimelineMax=新的TimelineMax({repeat:-1})//永远重复=-1-->循环
timeline.pause();
timeline.addCallback(resetEverything,0);
var lng:uint=str_一个长度;
var playHead:Number=0.05;
对于(变量i:uint=0;i
创建一个函数,该函数将在整个序列结束时调用,该函数将重置所有tha变量和掩码大小,以及您在代码中所做的任何更改。@Lukasz'Severiaan'Grela我想知道如何重置tweens的原样,以及如果被
TweenLite.to()调用,如何删除正在进行的tweens(如果有的话)
。如果没有这个,任务可能不可能完成。但是如何重置变量?@Vesper使用:TweenLite.killTweensOf(YourFuncOrObject);比如TweenLite.killTweensOf(hand);Hi steffen--由于您已经在使用GreenSock,这似乎是TimeLineSite/TimelineMax的理想应用程序。它将允许您回放并重新启动整个Tween继承权,而无需重新创建它们。函数addText(textBox:TextField,text:String):void{textBox.appendText(text);}使用分号给出错误,第22行也是如此:-)第28行返回此错误无效的XML名称-加上4个其他错误,所有这些错误都连接到XML标记..嗯,是的,您必须替换“”和“”使用您需要的实际值!我得到了这个错误:错误1067将number类型的值隐式强制到与第34、45和54行相关的不相关类型数组-例如:timeline.addCallback(addText,[tekstbox2_txt,str_two.charAt(i)],playHead);@steffenhenriksen-Woops,我反向获得了两个参数。它应该是
addCallback(addText,playHead,[txt*,str*.charAt(i)];
。我已经相应地更新了我的代码。请参阅。它现在可以工作了-只要