PDA

Volledige versie bekijken : knoppen disabled na gotoAndStop


larz
%Europe/Berlin %604 %2010, 15:29
ik heb een .swf file met verschillende layers
layer1 : mijn AS3 code
layer2 : knoppen voor play/pause/mute/sluiten

layer 2 is opgedeeld in verschillende delen, voor de verschillende weergaves ( muted aan het spelen, non-muted aan het spelen, muted pause, non-muted pause)
deze layer eindigt op frame 40.

layer1 loopt verder door.

bij het begin van de video roep ik frame 41 aan (omdat ik niet wil dat de buttons dan al zichtbaar zijn).
dan roep ik via een javascript het begin van mijn video op, de video begint dan te spelen en de knoppen worden zichtbaar. echter deze knoppen werken dan niet meer...

als ik begin met bv naar frame 2 te gaan (hier zijn de buttons wel zichtbaar) werken de knoppen wel.

mijn buttons worden niet aangemaakt in AS3 maar heb ik gewoon met tekeningetjes en tekst gemaakt.
wel maak ik de buttons clickable via addEventListener, dit gebeurd allemaal in layer1

als ik de player 1x stop met de JS Stop knop en dan terug op play druk werken de buttons WEL ...

ps: nog niet de X button van de flashplayer gebruiken want hier zit nog een bug in (zie deze post: http://www.flashfocus.nl/forum/showthread.php?p=403838)

vb te zien op : http://www.stream-unlimited.be/isv/aegon/buttons/hypotheken3.html

as3 code:

import flash.system.fscommand;
import flash.external.ExternalInterface;
import flash.display.Sprite;
import flash.events.TimerEvent;
import flash.utils.Timer;
Security.allowDomain("*");

stop();

var nc:NetConnection = new NetConnection();

nc.connect(null);

var ns:NetStream = new NetStream(nc);

//make vars to check playing/muted
var playingVar:int = new int();
var mutedVar:int = new int();
//playingVar = 0;
//mutedVar = 0;

var klantnrassist="1";
var movienrassist="1";

//can also be ns.play("http://dl1.stream-unlimited.be/...");
ns.play("http://www.stream-unlimited.be/isv/fitce_isv_01.flv");

if (checkPlayAgain != 5){
ns.togglePause();
}

var checkPlayAgain;
var checkFirstPlay=0;

//create video
var vid1:Video;
vid1=new Video();

addChild(vid1);
//set video parameters
vid1.x=0;
vid1.y=0;
//change resolution for larger movies //also change video properties of the movie
vid1.width=20;
vid1.height=20;

//attach netstream to video
vid1.attachNetStream(ns);

//move video to back
setChildIndex(vid1,0);

//set volume to 1
var st:SoundTransform=new SoundTransform();
st.volume=1;
ns.soundTransform=st;

//make buttons clickable
playButton1.addEventListener(MouseEvent.CLICK,onRe leasePlayButton1);
soundButton1.addEventListener(MouseEvent.CLICK,onR eleaseSoundButton1);
closeButton1.addEventListener(MouseEvent.CLICK,onR eleaseCloseButton1);
buttonTextVideo.addEventListener(MouseEvent.CLICK, myBtnClicked);

//function to go to iSpeakVideo website
function myBtnClicked(e:MouseEvent):void {
var url:String = "http://www.ispeakvideo.com/slml/bel/dth/";
var request:URLRequest = new URLRequest(url);
try
{
navigateToURL(request, '_blank');
}
catch (e:Error)
{
trace("Error occurred!");
}
}




//toggle pause
function onReleasePlayButton1(e:MouseEvent){
ns.togglePause();
if(playingVar==0 && mutedVar==0) {
playingVar=1;
gotoAndStop("playingStart");
}
else if(playingVar==0 && mutedVar==1) {
playingVar=1;
gotoAndStop("mutedPlaying");
}
else if(playingVar==1 && mutedVar==0) {
playingVar=0;
gotoAndStop("pausedStart");
}
else if(playingVar==1 && mutedVar==1) {
playingVar=0;
gotoAndStop("mutedPause");
}
}

//close the .swf
function onReleaseCloseButton1(e:MouseEvent){
totalTimeVid="0";
timePassed="0";
playerStop(buttonDiv2, movieDiv2, movieObject2);
}

//toggle mute
function onReleaseSoundButton1(e:MouseEvent):void {
if(st.volume==0){
st.volume=1;
ns.soundTransform=st;
mutedVar=0;
if(playingVar==0) {
gotoAndStop("pausedStart");
}
if(playingVar==1) {
gotoAndStop("playingStart");
}
}
else {
st.volume=0;
ns.soundTransform=st;
mutedVar=1;
if(playingVar==0) {
gotoAndStop("mutedPause");
}
if(playingVar==1) {
gotoAndStop("mutedPlaying");
}
}
}

//------------- START: remove movie after end of movie ------------------//
var totalTimeVid:String = new String();
var timePassed:String = new String();
var customClient:Object = new Object();
customClient.onMetaData = onMetaData;
ns.client = customClient;

function onMetaData(data:Object):void {
trace(data.duration);
//to check this, make a dynamic text object with name totalTimeText
//totalTimeText.text = Math.round(data.duration).toString();
totalTimeVid = Math.round(data.duration).toString();

}
//start timer
ShortTimer();

//timer to time the movie
function ShortTimer()
{
// creates a new timer which ticks every second
var minuteTimer:Timer = new Timer(1000);

// designates listeners for the interval and completion events
minuteTimer.addEventListener(TimerEvent.TIMER, onTick);
minuteTimer.addEventListener(TimerEvent.TIMER_COMP LETE, onTimerComplete);

// starts the timer ticking
minuteTimer.start();
}
//timer to do a 1second delay
function SecondTimer()
{
// creates a new 1 second timer
var secondTimer:Timer = new Timer(1000,1);

// designates listeners for the interval and completion events
secondTimer.addEventListener(TimerEvent.TIMER, onTick2);
secondTimer.addEventListener(TimerEvent.TIMER_COMP LETE, onTimerComplete2);

// starts the timer ticking
secondTimer.start();
}

function onTick(event:TimerEvent):void
{
// displays the tick count so far
// The target of this event is the Timer instance itself.
//trace("tick " + event.target.currentCount);
//to check this, make a dynamic text object with name passedTimeText
//passedTimeText.text = Math.round(ns.time).toString();
timePassed = Math.round(ns.time).toString();
if(timePassed==totalTimeVid) {
//build in a 1 second delay before the .swf disappears
SecondTimer();
}
}

function onTimerComplete(event:TimerEvent):void
{
//this one will never become complete, this is just dummy text
trace("Time's Up!");
//to check this, make a dynamic text object with name passedTimeText
//passedTimeText.text = "time's up " + event.target.currentCount;
}

function onTick2(event:TimerEvent):void
{
//this will only tick once, dummy text
var t:int = new int();
}

function onTimerComplete2(event:TimerEvent):void
{
totalTimeVid="0";
timePassed="0";
playerStop(buttonDiv2, movieDiv2, movieObject2);
}
//------------- END: remove movie after end of movie ------------------//

//------------- START: allow javascript start/stop -----------//

ExternalInterface.addCallback("playerPlay", playerPlay);
ExternalInterface.addCallback("playerStop", playerStop);

var checkTest;
if (checkTest!=5){
var buttonDiv2:String;
var movieDiv2:String;
var movieObject2:String;
gotoAndStop(41);
}

playingVar=1;
//gotoAndStop("playingStart");


function playerPlay(buttonDiv, movieDiv, movieObject)
{
gotoAndStop(1);
gotoAndStop("playingStart");
buttonDiv2=buttonDiv;
movieDiv2=movieDiv;
movieObject2=movieObject;

checkTest=5;
if (checkFirstPlay!=0)
{
gotoAndStop(1);
checkFirstPlay=3;
checkPlayAgain=5;
}
else
{
ns.togglePause();
}

}

function playerStop(buttonDiv, movieDiv, movieObject)
{
checkFirstPlay = 5;
st.volume=0;
ns.soundTransform=st;
removeChild(vid1);
gotoAndStop(41);
ExternalInterface.call("removeContainer", buttonDiv, movieDiv, movieObject);
}

//------------- END: allow javascript start/stop -----------//


iemand enig idee?

thanks

sidar
%Europe/Berlin %838 %2010, 21:06
Zit in elke frame de knoppen?
Of loopt de layer van je knoppen door

en dan bedoel ik:

[0][0][0][0][0][0][0][0] <-- per frame of

[0-------------------] < een doorlopend frame

Het kan zo zijn dat de knoppen op elk nieuwe frame een nieuw referentie krijgen toegewezen.
Het is maar idee, ik weet het niet zeker

Aduen
%Europe/Berlin %158 %2010, 04:47
wat sidar zegt, of er is nog niks gedeclareerd aan knoppen of listeners wanneer je nog niet langs jouw framescript bent gekomen.

pas nadat je het framescript hebt uitgevoerd zijn alle listeners en dergelijke aangemaakt.


bij het begin van de video roep ik frame 41 aan

als ik begin met bv naar frame 2 te gaan (hier zijn de buttons wel zichtbaar) werken de knoppen wel.

larz
%Europe/Berlin %967 %2010, 00:12
dit probleem is opgelost via een omweg, mag gesloten worden.

heb via een javascript onpageload de swf niet zichtbaar gemaakt bij opstarten van de page.
maar de swf zit wel op de correcte frame te wachten dus alles wordt wel geload