Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 19-07-2006, 09:59   #1 (permalink)
FireBall
 
Benutzerbild von chrrillo
 
Registriert seit: Jan 2005
Beiträge: 361
getBytesTotal()>12 warum?

HI

ich hab einen kleinen bildfader gemacht der mit xml gefütterwird. ganz einfach erstes bild wird geladen faded rein bleib 4 sekunden in der ziwischen zeit wird das nächste geladen und das neue faded rein und das alte raus. das funktioniert eigentlich auch recht gut nur beim ersten bild haut was mit meinem getBytesTotal nicht hin. es gibt mir nämlich 12 aus und nicht eine vernünftige zahl. ich hab eben in ein paar preload scripts die zeile "getBytesTotal()>12" gefunden aber klar ist mir leider nicht warum.

das komische ist eben dass es nur beim ersten bild ist. wennd die schleife durchläuft dann gehts einwand frei

hier der code vielleicht sieht da wer meinen fehler.

PHP-Code:
this._lockroot=true
stop
()
pics_xml=new XML()
pics_xml.ignoreWhite=true
current_pic
=0
stat_txt
.text="idle"
timer=10
pics_xml
.onLoad=function(success){
    
pics_total=pics_xml.firstChild.childNodes.length
    one
=true
    make_pic
()
}
function 
make_pic(){
    
current_pic++
    
trace("make_pic"+current_pic)
    if(
current_pic==pics_total){current_pic=0}
    
duplicateMovieClip(stage_mc,"stage_"+current_pic+"_mc",current_pic)
    
path="stage_"+current_pic+"_mc"
    
_root[path].pic_holder_mc.loadMovie(pics_xml.firstChild.childNodes[current_pic].attributes.url,_root[path].pic_holder_mc)
    
_root[path]._y=20
    _root
[path]._x=0
    _root
[path]._alpha=0
    
if(one==true){
    
_root[path].onEnterFrame=function(){
        
trace(this.pic_holder_mc.getBytesTotal()) // hier um diesen getBytestotal gehts, alles ander funktinoiert
        
if(this.pic_holder_mc.getBytesLoaded()==this.pic_holder_mc.getBytesTotal()){
                
                
one=false
                delete this
.onEnterFrame
                fade_in
(this._name)
        }
        }
    }
}
function 
fade_in(x){
    
_root[x].onEnterFrame=function(){
    
this._alpha+=10
    
if(this._alpha>=100){this._alpha=100;delete this.onEnterFrame ;count(this._name)}
    }
}
function 
count(x){
    
_root[x].count=0
    make_pic
()
    
_root[x].onEnterFrame=function(){
        
this.count++
        if(
this.count>timer and _root["stage_"+current_pic+"_mc"].pic_holder_mc.getBytesLoaded()==_root["stage_"+current_pic+"_mc"].pic_holder_mc.getBytesTotal()){
            
trace("crossfade")
            
delete this.onEnterFrame
            fade_out
(this._name)
            
fade_in(["stage_"+current_pic+"_mc"])
        }
        }
}
function 
fade_out(x){
    
trace("out")
    
_root[x].onEnterFrame=function(){
        
this._alpha-=10
        
if(this._alpha<=0){delete this.onEnterFrame;this.removeMovieClip(this)}
    }
}
pics_xml.load("../pics/pics.xml"
bitte bitte erkläre mir wer das. ich hab jetzt schon eine stunde gesucht und komm auf nix
__________________
...mag Schlichtheit

www.chrillo.at

ChRillo nur mit einem R - der Nick war leider schon vergeben
chrrillo ist offline   Mit Zitat antworten
Alt 19-07-2006, 10:02   #2 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
Ich weiß nicht wie es mittlerweile ist und hab mir den Code auch nicht
genau angeguckt, das mit dieser zusätzlichen Abfrage kommt aber wohl
daher, dass am Anfang eines Ladevorgangs (zumindest früher) die Werte
nicht stimmen und man somit sicherstellen will, dass die Datei auch richtig
geladen wird.
sebastian ist offline   Mit Zitat antworten
Alt 19-07-2006, 10:06   #3 (permalink)
FireBall
 
Benutzerbild von chrrillo
 
Registriert seit: Jan 2005
Beiträge: 361
das kommt hin, ich hab eine kleine verzögerung in die abfrage eingebaut und jetzt gehts eigentlich auch wenns nicht sehr eleangt ist. hab einfach eine variable bis 10 hochzählen lassen und er dann die if abfrage gemacht. schräg schräg
__________________
...mag Schlichtheit

www.chrillo.at

ChRillo nur mit einem R - der Nick war leider schon vergeben
chrrillo ist offline   Mit Zitat antworten
Alt 19-07-2006, 10:30   #4 (permalink)
Euer Nuser
 
Benutzerbild von ~pyropete~
 
Registriert seit: Apr 2004
Ort: Sand-City
Beiträge: 3.483
Nettes Script, mach doch mal'n Tut draus

Beim Macplayer braucht(e) man diesen Zusatz eigentlich immer, weil es einem sonst den Ladebalken bzw. die Prozentanzeige zerriss/zerreisst, aufgrund der falschen Werte von getBytesLoaded() (-1212243141234 für ein paar ms ).-
Beim Windowsplayer war mir das nie aufgefallen...

Scheint mir als wäre dieser Bug bis heute nicht behoben worden ... aber wozu hat man denn diese reichen Flasherfahrungen gesammelt ...

Das mit der Variable zum Hochzählen brauchts eigentlich gar nicht ... eben diesen Zusatz mit >10 oder mehr bei jeder Preloaderschleife.

--pp

Geändert von ~pyropete~ (19-07-2006 um 10:31 Uhr)
~pyropete~ ist offline   Mit Zitat antworten
Alt 19-07-2006, 10:32   #5 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
Also ich kenne von Windows ähnliches

Ach zum Script:
this._lockroot=true

Autsch
sebastian ist offline   Mit Zitat antworten
Alt 19-07-2006, 10:34   #6 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
wie du auf die 12 kommst weiss ich nicht, aber das da
if ( getBytesLoaded()==getBytesTotal() )
langt jedenfalls nicht. weil das onEnterFrame ausgeführt werden kann, noch bevor es kontakt zum server gegeben hat. und dann ist
getBytesLoaded()==0 und getBytesTotal()==0 mithin die bedingung erfüllt; aber nicht im sinne des programmierers.

also ein
if ( getBytesLoaded() && getBytesLoaded()==getBytesTotal() )
sollte es schon sein
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 19-07-2006, 10:41   #7 (permalink)
FireBall
 
Benutzerbild von chrrillo
 
Registriert seit: Jan 2005
Beiträge: 361
hi gut ich glaub das beantwortet meine frage im grossen und ganzen. vielen dank.
__________________
...mag Schlichtheit

www.chrillo.at

ChRillo nur mit einem R - der Nick war leider schon vergeben
chrrillo ist offline   Mit Zitat antworten
Alt 19-07-2006, 13:32   #8 (permalink)
FireBall
 
Benutzerbild von chrrillo
 
Registriert seit: Jan 2005
Beiträge: 361
HI eines beschäftigt mich aber jetzt doch noch auch wenns ein bissi off topic is, und zwar mit dem _lookroot. ich weiß das immer alle sagen das is pfui pfui aber warum eigentlich und vorallem wie umgeh ich dass wenn ich jetzt sagen wir mal meinen kleinen bilder-slider da in einen anderen mc reinlade, alles vor die hunde geht. ich könnte mit this und _parent herumwerken aber warum nicht das nehmen wenns doch einfacher is.

...für das krieg ich sicher eins aufs dach aber wenn ich nicht frage werd ichs nie wissen.
__________________
...mag Schlichtheit

www.chrillo.at

ChRillo nur mit einem R - der Nick war leider schon vergeben
chrrillo ist offline   Mit Zitat antworten
Alt 19-07-2006, 13:35   #9 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
Nein, die Frage ist in Ordnung und nicht verwerflich, keine Angst

Also natürlich ist das eine willkommene Möglichkeit um Probleme zu
umgehen, aber wenn man etwas neues anlegt, sollte man eben
relative Pfade benutzen, denn die stimmen immer, egal ob die Datei
dann wo reingeladen wird oder so.

Warum nicht immer lockroot: Irgendwann kommt der Fall, dass du
von deinem Submovie wirklich mal auf die richtige Root zugreifen
möchtest und dann hast du ein Problem.

lg
sebastian ist offline   Mit Zitat antworten
Alt 19-07-2006, 13:41   #10 (permalink)
FireBall
 
Benutzerbild von chrrillo
 
Registriert seit: Jan 2005
Beiträge: 361
klingt logisch, das problem hatte ich sogar schon mal. bin nur damals dann eben einfach mit this._parent._parent...aus dem sub in den container_mc. ist wie so oft ansichts sache nehm ich an.
__________________
...mag Schlichtheit

www.chrillo.at

ChRillo nur mit einem R - der Nick war leider schon vergeben
chrrillo ist offline   Mit Zitat antworten
Alt 19-07-2006, 13:41   #11 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
"..richtige Root zugreifen möchtest und dann hast du ein Problem.."
nö, das ist eindeutig _level0

habe noch nie gehört, das die benutzung von _lockroot nicht in ordnung wäre. wer sagt denn sowas? und _parent._parent._parent._parent._parent geht auch nicht immer und ist überhaupt nicht 'schöner' als _root.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 19-07-2006, 13:44   #12 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
Na gut, mit dem Level0 hast du sicherlich recht, aber nach wie vor
die Aussage, dass relative Pfade auf jeden Fall besser sind und
wenn ich 5000x _parent habe.

(Ich nutze übrigens nie Levels)
sebastian ist offline   Mit Zitat antworten
Alt 19-07-2006, 13:55   #13 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
a)
man weiss nicht immer, ob man ein swf doch mal als mc einbindet.

b)
dann löse das mal mit _parent (und erzähle mir dann, das 'durch die brust ins auge' eine elegante lösung ist):
Code:
extremwichtig = 13;
//
sub = function () {
	this._x += 1;
	if (this._x>_root.extremwichtig) {
		trace(this+" ist fertig");
		delete this.onEnterFrame;
	}
};
//
createEmptyMovieClip('aaa', 1);
aaa.onEnterFrame = sub;
aaa.createEmptyMovieClip('bbb', 1);
aaa.bbb.onEnterFrame = sub;
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (19-07-2006 um 13:56 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 19-07-2006, 13:58   #14 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
Pfad weglassen?

Wie auch immer: Wohl auch eine Geschmackssache, mein Fall ist
lockroot nicht

lg
sebastian ist offline   Mit Zitat antworten
Alt 19-07-2006, 14:00   #15 (permalink)
faulancer
 
Benutzerbild von zerlettino
 
Registriert seit: Feb 2003
Beiträge: 281
am komfortabelsten ist es mit referenzen zu arbeiten.
dann ist man schön unabhängig von _root.
einfach in die "start-funktion" den gewünschten "ausgangs-movieclip" übergeben und schon kann alles ganz leicht global geändert werden.

Code:
function startApp(timeline:MovieClip) {}

startApp(_root);
startApp(_level425); 
startApp(whatever);
getBytesLoaded() und getBytesTotal() liefern ganz am Anfang wenn noch nichts gecached wurde meines Wissens -1.

grüße
zerlettino ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 14:32 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele