PDA

Volledige versie bekijken : vreemd probleem


FredericCox
%Europe/Berlin %661 %2005, 16:52
Ik heb een vreemd probleem:

Als ik mijn flash opstart laad hij een XML

bij de functie OnLoad gaat hij het eigenlijke script uitvoeren.

Nu heb ik met setInterval die functie laten herhalen elke minuut. Volgens de trace doet ie dat goed maar hij past mijn MC's niet aan, als ik daarna mijn flash opnieuw opstart staat alles wel goed.

Opbouw: 1 frame met code en bovenopde laye rmet de MC's

TheDutch
%Europe/Berlin %662 %2005, 16:54
Ik denk dat het zal helpen als je wat code laat zien, denk je ook niet? ;)

FredericCox
%Europe/Berlin %666 %2005, 16:59
Ik denk dat het zal helpen als je wat code laat zien, denk je ook niet? ;)



worldXML = new XML()
worldXML.load("http://www.nastjaceh.com/Hattrick2Day/xml.php?page=worldDetails.asp&outputType=XML&actionType=leagues")
worldXML.ignoreWhite = true
worldXML.onLoad = GetWorldInfo

function GetWorldInfo(success){

trace(" ")
trace("Currently happening in Hattrick:");
trace("------------------------------------");
trace(" ")
var p
p=0
TotalCountries = worldXML.firstChild.childNodes[5].attributes.Count ;
leaguesXML = worldXML.firstChild.childNodes[5]
for(i=-1;i<TotalCountries;i++) {

Check("league",i,1,45)
Check("cup",i,2,15)
Check("training",i,1,30)
///TOT HIER OK 13:20

Check = function(Soort,i,PlusHour,PlusMin) {
// Start van match,cup,training ophalen van elk land(Naam + ID verkrijgen)
LeagueID = leaguesXML.childNodes[i].childNodes[0].childNodes
EnglishLeagueName = leaguesXML.childNodes[i].childNodes[7].childNodes
NativeLeagueName = leaguesXML.childNodes[i].childNodes[8].childNodes[1].childNodes
CupMatchDate = leaguesXML.childNodes[i].childNodes[14].childNodes
LeagueMatchDate= leaguesXML.childNodes[i].childNodes[15].childNodes
TrainingDate = leaguesXML.childNodes[i].childNodes[12].childNodes
//Bepalen op welke datum gecheckt moet worden deze keer
if(Soort=="cup"){
MatchDate = CupMatchDate
}

if(Soort=="league"){
MatchDate = LeagueMatchDate
}
if(Soort=="training"){
MatchDate = TrainingDate
}
// Datum splitsen
matchYear = MatchDate.toString().substr(0,4)
matchMonth = MatchDate.toString().substr(5,2)
matchDay = MatchDate.toString().substr(8,2)
matchHour = MatchDate.toString().substr(11,2)
matchMin = MatchDate.toString().substr(14,2)
//Probleem met brazilië oplossen, geen tijd omdat match op 00:00 begint
if(matchHour == ""){
matchHour = "00"
matchMin = "00"
}
// Starttijd van het event en eindtijd, huidige datum,
var matchStart = new Date(matchYear, matchMonth - 1, matchDay, matchHour, matchMin, 0, 0);
var matchStartvw = new Date(matchYear, matchMonth - 1, matchDay - 7, matchHour, matchMin, 0, 0);
var matchEnd = new Date(matchYear, matchMonth - 1, matchDay, matchStart.getHours() + PlusHour, matchStart.getMinutes() + PlusMin, 0, 0);
var matchEndvw = new Date(matchYear, matchMonth - 1, matchDay -7, matchStart.getHours() + PlusHour, matchStart.getMinutes() + PlusMin, 0, 0);
var nu = new Date();
var uur = nu.getHours();
var min = nu.getMinutes();

if(min < 15){
uur--;
min = 60 - (15 - min);
}else min -= 15;

var DeltaStart = new Date(matchYear, matchMonth - 1, matchDay, matchHour, matchMin - 30, 0, 0);

LeagueIDadj = LeagueID
if(LeagueID.toString()=="1"){
LeagueIDadj = "One"
}
//trace(" ")
//trace(EnglishLeagueName)
//trace("nu: " +nu)
//trace("matchStart: " + matchStart)
//trace("matchStartvw: " + matchStartvw)
//trace("matchEnd: " + matchEnd)
//trace("matchEndvw: " + matchEndvw)

if(nu < matchStart && nu > DeltaStart){
diff = new Date(matchStart - nu)
diffUur = diff.getHours() - 1
diffMin = diff.getMinutes()
trace(LeagueID + ". " + EnglishLeagueName + ":" + Soort + " starting in " + diffUur + ":" + diffMin + " at " + matchStart)
_root.world["country" + LeagueIDadj].gotoAndStop(2);
_root.world["country" + LeagueIDadj].details.Type = "To start"
setProperty(_root.world["country" + LeagueIDadj],_alpha,50)
}

if(nu.getDay()<matchStart.getDay()){
//Matchen zijn nu gedaan
//trace(EnglishLeagueName + " has all " + Soort + " played")
}


if(nu >= matchStartvw && nu <= matchEndvw){
p++
TimePlayed = new Date(nu - matchStartvw)
MinsPlayed = TimePlayed.getMinutes()
trace("Mins played: " + MinsPlayed)

diff = new Date(matchEndvw - nu)
diffUur = diff.getHours() - 1
diffMin = diff.getMinutes()
trace(EnglishLeagueName + "Remaininge "+ diffUur + ":" + diffMin)
_root.world.activeCount = "Leagues active: " + p
_root.world["country" + LeagueIDadj].gotoAndStop(2);
_root.world["country" + LeagueIDadj].details.LeagueID = LeagueID
_root.world["country" + LeagueIDadj].details.NativeLeagueName = NativeLeagueName
_root.world["country" + LeagueIDadj].details.EnglishLeagueName = EnglishLeagueName

setProperty(_root.world["country" + LeagueIDadj],_alpha,100)
_root.world["country" + LeagueIDadj].swapDepths(1000);

if(Soort=="cup"){
_root.world["country" + LeagueIDadj].details.Type = "Cup games"
trace(LeagueID + ". " + EnglishLeagueName + "(Cup matches)")
}
if(Soort=="league"){
_root.world["country" + LeagueIDadj].details.Type = "League games"
trace(LeagueID + ". " + EnglishLeagueName + "(League matches) started at " + matchStartvw)
}
if(Soort=="training"){
_root.world["country" + LeagueIDadj].details.Type = "Training"
trace(LeagueID + ". " + EnglishLeagueName + "(Training)")
}


}; //Wordt true op het moment van posten
if((_root.world["country" + LeagueIDadj].details.Type)==undefined){
_root.world["country" + LeagueIDadj].gotoAndStop(1);
}



}


}//end for

}//end function GetWorldInfo
//update every 5 mins
setInterval(GetWorldInfo,30000);

Laiverd
%Europe/Berlin %693 %2005, 17:39
Het lijkt logisch dat je iedere keer je XML ook opnieuw laadt, toch? Anders wordt iedere keer het zelfde XML-object gebruikt. In dat geval zou ik wel een check inbouwen dat de vorige call en parse van de XML helemaal is uitgevoerd.

Dus volgens mij moet je worldXML.load in de setInterval worden aangeroepen en niet de functie getWorldInfo().

Overigens begrijp ik niet waarom je twee verschillende soorten syntax door elkaar gebruikt_root.world["country" + LeagueIDadj].details.Type = "To start"
setProperty(_root.world["country" + LeagueIDadj],_alpha,50)Je maakt jezelf het leven er niet per se gemakkelijker mee. Kies een syntax en stick to it, zou ik zeggen.

En nog wat vreemds//update every 5 mins
setInterval(GetWorldInfo,30000);Da's toch echt elke 30 seconden hoor; niet elke minuut en zeker niet elke 5 minuten. En als je dan een xml aanroept die eerst nog door een script gegenereerd moet worden ... kan me voorstellen dat dat wat krap is. En dan komt m'n suggestie van hierboven weer in beeld.

P.s. gebruik de volgende keer even een meer beschrijvende topictitel, zodat posts ook in de toekomst teruggevonden kunnen worden. Hebben anderen er later ook nog wat aan.

John

TheDutch
%Europe/Berlin %694 %2005, 17:39
Tot waar in de code voert hij de acties goed uit?

TheDutch
%Europe/Berlin %695 %2005, 17:41
Het lijkt logisch dat je iedere keer je XML ook opnieuw laadt, toch? Anders wordt iedere keer het zelfde XML-object gebruikt. In dat geval zou ik wel een check inbouwen dat de vorige call en parse van de XML helemaal is uitgevoerd.

P.s. gebruik de volgende keer even een meer beschrijvende topictitel, zodat posts ook in de toekomst teruggevonden kunnen worden. Hebben anderen er later ook nog wat aan.

John
Scherp opgemerkt :)

FredericCox
%Europe/Berlin %707 %2005, 17:58
Tot waar in de code voert hij de acties goed uit?

In de trace doet ie alles goed, maar bvb movieclip.gotoAndStop(1) doet ie soms niet
in de herhaling zit het probleem

TheDutch
%Europe/Berlin %711 %2005, 18:05
Heb je geprobeerd de currentframe te tracen wanneer een gotoAndStop heeft plaats gevonden?

FredericCox
%Europe/Berlin %732 %2005, 18:35
Heb je geprobeerd de currentframe te tracen wanneer een gotoAndStop heeft plaats gevonden?


Maar als hij dat fout doet, waarom doet hij het de eerste keer wel goed?

Je moet denk ik niet op de code letten, gewoon waarom doet de functie de eertse keer alles goed, maar na de setInterval niet meer

FredericCox
%Europe/Berlin %749 %2005, 18:59
Maar als hij dat fout doet, waarom doet hij het de eerste keer wel goed?

Je moet denk ik niet op de code letten, gewoon waarom doet de functie de eertse keer alles goed, maar na de setInterval niet meer

Ik heb nu alles in een functie gezet en kijken of dat lukt