Volledige versie bekijken : Flash Movie stop + replay na 10s
dylan1234
%Europe/Berlin %896 %2009, 21:30
Hallo,
Ik vraag me af hoe ik d.m.v. AC3 te gebruiken een flash movie kan laten stoppen (Voor 10 seconden) En hem vervolgens weer opnieuw af laten spelen.
Ik weet dat je je movie kunt stoppen door stop(); op de laatste frame te zetten.
Maar ik vraag me dus af hoe ik ervoor zorg dat hij na 10s weer opnieuw afgespeeld wordt.
B-Mantis
%Europe/Berlin %898 %2009, 21:34
dan maak je een functie aan die later wordt aangeroepen door een timerEvent:
stop();
const NUMBER_OF_TIMES:int = 1; //hoe vaak de timer herhaalt
const TIMER_DELAY:int = 10 * 1000; // = 10 seconden
var timer:Timer = new Timer(TIMER_DELAY, NUMBER_OF_TIMES);
timer.addEventListener(TimerEvent.TIMER, resume);
timer.start();
function resume():void {
play();
}
dylan1234
%Europe/Berlin %876 %2009, 21:01
Na 10 seconde krijg ik dan de volgende error:
ArgumentError: Error #1063: Argument count mismatch on flashheader_fla::MainTimeline/resume(). Expected 0, got 1.
at flash.utils::Timer/_timerDispatch()
at flash.utils::Timer/tick()
B-Mantis
%Europe/Berlin %911 %2009, 21:52
oh, sorry, dat klopt:
function resume(e:TimerEvent):void {
play();
}
Elke aan een event listener gebonden functie heeft immers een referentie naar de event als argument.
dylan1234
%Europe/Berlin %979 %2009, 23:30
erg bedankt.
Kan ik deze code ook op een eerdere keyframe zetten zodat ook deze even stopt en later weer verder speelt?
B-Mantis
%Europe/Berlin %985 %2009, 23:38
Ik zou persoonlijk ten zeerste afraden uberhaubt code op frames te zetten. Dit is alleen maar onoverzichtelijk, moeilijk bij te houden waar code staat.
Ik begrijp niet helemaal wat je precies wilt.. Wat moet ook stoppen en later verder spelen?
dylan1234
%Europe/Berlin %378 %2009, 09:04
Ik heb meerdere gebieden in mijn flash movie die ik even wil laten stoppen en na een x aantal seconden verder af wil laten spelen. Is het niet zo dat door het gebruik van code, je flash movie minder groot zal zijn?(hij gaat gepubliceerd worden op het web).
B-Mantis
%Europe/Berlin %444 %2009, 10:39
je kunt het best een extern .as bestand gebruiken, en daar deze functies definieren. Je kunt dan gewoon een enterFrame event listener maken die op bepaalde frames de pause functie aanroept:
/**
* @param timeOut - The time to wait, in seconds
*/
public function pause(timeOut:int):void {
stop();
const NUMBER_OF_TIMES:int = 1; //hoe vaak de timer herhaalt
var timer:Timer = new Timer(timeOut * 1000, NUMBER_OF_TIMES);
timer.addEventListener(TimerEvent.TIMER, resume);
timer.start();
}
private function resume(e:TimerEvent):void {
play();
}
Nu kun je bijv. op frames pause(10); aanroepen, om je movieclip 10 seconden te laten wachten.
dylan1234
%Europe/Berlin %456 %2009, 10:57
/** * @param timeOut - The time to wait, in seconds */
function pause(timeOut:int):void {
stop();
const NUMBER_OF_TIMES:int = 1;//hoe vaak de timer herhaalt var
timer:Timer = new Timer(timeOut * 1000, NUMBER_OF_TIMES);
timer.addEventListener(TimerEvent.TIMER, resume);
timer.start();
addEventListener(Event.ENTER_FRAME, stopframe); }
function resume(event:TimerEvent):void {
play();
}
function stopframe(event:Event):void {
if (frame == 50) {
pause(10);
}
}
Ik ben tot dit gekomen, ga ik al redelijk in de goede richting?
B-Mantis
%Europe/Berlin %471 %2009, 11:18
ja, maar je moet de enterFrame event listener niet in de pause functie zetten, want dan kan ie pas beginnen te pauzeren, als ie al gepauseerd is geweest. Werk je niet met .as bestanden? Je kunt beter een classe aanmaken en daar wat methods definieren.
dylan1234
%Europe/Berlin %477 %2009, 11:27
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.utils.Timer;
import flash.display.MovieClip
import flash.display.FrameLabel;
public class Main extends MovieClip {
// eigenschappen
public var mc1:MovieClip;
// constructor
public function Main() {
addEventListener(Event.ENTER_FRAME, stopframe);
}
// overige functies
public function pause(timeOut:int):void {
mc1 = new MovieClip;
mc1.stop();
const NUMBER_OF_TIMES:int = 1;//hoe vaak de timer herhaalt
var timer:Timer = new Timer(timeOut * 1000, NUMBER_OF_TIMES);
timer.addEventListener(TimerEvent.TIMER, resume);
timer.start();
}
private function resume(e:TimerEvent):void {
mc1.play();
}
public function stopframe(event:Event):void {
if (mc1.frame == 50) {
pause(10);
}
}
}
}
Ik heb al wel eens voor school met actionscript gewerkt, maar ben er nog geen ster in.
Ik krijg nu verschillende errors.
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.