Flashhilfe.de - Flash Community

Preloader Problem in Frame 1 [Flash 10]

 


AntwortenRegistrieren Seite1  

mikemike#1
Benutzerbild von mikemike
Beiträge: 125
Registriert: Jan 2010

09.09.2010, 16:25

Hallo,
Ich habe einen Preloader erstellt, welcher auch funktioniert. Sobald ich ihn aber in mein derzeitiges Projekt einsetze und in flash probiere es als download zu simulieren, kommen bloß drei Punkte, welche Flash von aleine erzeugt.
Mein Preloader in Frame1
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
stop();

loaderInfo.addEventListener( ProgressEvent.PROGRESS, loading );
loaderInfo.addEventListener( Event.COMPLETE, completed );
loaderInfo.addEventListener( Event.INIT, init );


function init ( event : Event ) : void {
      preload_txt.text = "0%";
}

function completed ( event : Event ) : void {
      removeChild(preload_txt);
      loaderInfo.removeEventListener( ProgressEvent.PROGRESS, loading );
      loaderInfo.removeEventListener( Event.COMPLETE, completed );
      loaderInfo.removeEventListener( Event.INIT, init );
      nextFrame();
}

function loading ( progressEvent : ProgressEvent ) : void {
      var precent:Number = Math.floor( progressEvent.bytesLoaded * 100/ progressEvent.bytesTotal);
      preload_txt.text = precent.toString() + " %";
}


der Anfang von Frame2 sieht so aus:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import Catcher; //Der Catcher
import FallingObject;
import Star;
import StarTime;
import flash.utils.Timer;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.ui.Keyboard;
import flash.events.KeyboardEvent;
import flash.media.SoundChannel;

stop();

var catcher:Catcher = new Catcher();
addChildAt(catcher, getChildIndex(specialText) - 1);

var score:int = 0;
var combo:uint = 0;
var scoreMulti:uint = 1;

var nextObjectTimer:Timer;
var nextObjectSpeed:Number = 400;

var objectContainer:Sprite = new Sprite();

var time:Number = 0; //akltuelle Spielzeit
var gameTime:uint = 20; //Spieldauer in Sekunden
var startPos:int = timeAnzeige.anzeige.x;
var gamePause:Boolean = false;

var redStar:Boolean = false;
var blueStar:Boolean = false;
var starTimer:Number = 0;

var magnetAn:Boolean = false;
var magnetTime:Number = 0;
var endPosMagnet:Number = startPos;

var keyIsDown:Boolean = false;

var background_snd:BackgroundSound = new BackgroundSound();
var backgroundChannel:SoundChannel = background_snd.play(0);

var cheat:Array = new Array(false, false, false, false); //EINGABE : "BLUE"

addEventListener(Event.ENTER_FRAME, onEnter);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDown);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUp);

setNextObject();

Wie ihr vielleicht seht handelt es sich hier um ein Spiel, bei dem am Anfang direkt mehrere Funktionen gestartet werden. Könntet ihr mir vielleicht helfen?
Treffen sich ein Stein und ein Brett.
Der Stein: "Hi, Ich bin ein Stein"
Das Brett: "Wenn du Einstein bist, bin ich Brett Pitt"
Schlagwörter: Frame, Laden, loader, preloader, problem, Spiel
Geändert von mikemike am 09.09.10 um 16:26 Uhr
RustyCake#2
Benutzerbild von RustyCake
Beiträge: 1776
Wohnort: Laimbach 6 1/2
Registriert: Nov 2002

09.09.2010, 18:22

Des ganze Import-Zeugs, erkennt Dein Loader nicht, würde ich mal vermuten.
Mach mal in der Testumgebung, den Bandbreiten-Profiler an (Ansicht-> Bandbreiten-Profiler ), da siehst Du was alles an kb im ersten Frame hängt!
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muss erst gehen lernen"
mikemike#3
Benutzerbild von mikemike
Beiträge: 125
Registriert: Jan 2010

Themenautor/in

09.09.2010, 19:29

Ich weiß jetzt nicht genau was du meinst, aber im ersten bild waren es 9 kb und im zweiten 480 kb
Treffen sich ein Stein und ein Brett.
Der Stein: "Hi, Ich bin ein Stein"
Das Brett: "Wenn du Einstein bist, bin ich Brett Pitt"
mikemike#4
Benutzerbild von mikemike
Beiträge: 125
Registriert: Jan 2010

Themenautor/in

28.09.2010, 14:52

Ich habe jetzt den Preloader vereinfacht:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
stop();


addEventListener(Event.ENTER_FRAME, timer);

function timer(evt:Event) {
     if (loaderInfo.bytesLoaded == loaderInfo.bytesTotal) {
        removeEventListener(Event.ENTER_FRAME, timer);
        nextFrame();
     } else {
        trace(loaderInfo.bytesLoaded / loaderInfo.bytesTotal * 100);
     }
}


So funktioniert es in normalen Flas super, aber sobald ich es in Projekte einfüge welche viele Klassen haben und Ähnliches, gehts plötzlich nicht mehr.
Treffen sich ein Stein und ein Brett.
Der Stein: "Hi, Ich bin ein Stein"
Das Brett: "Wenn du Einstein bist, bin ich Brett Pitt"
Geändert von mikemike am 28.09.10 um 14:53 Uhr
mikemike#5
Benutzerbild von mikemike
Beiträge: 125
Registriert: Jan 2010

Themenautor/in

28.09.2010, 15:29

Ich habe das Problem endlich gelöst...
Die bytesLoaded waren im ersten Frame fast gleich dem bytesTotal, da im zweiten Frame nichts auf der Bühne war sondern alles mit addChild hinzugefügt wurde. Also sobald Frame 1 angezeigt wird, ist schon fast alles geladen! Dadurch konnte er auch nichts angezeigen, weil ja schon alles geladen war. Wenn man jetzt bei Frame 2 oder dahinter z.B. eine Video einfügt, funktioniert der Preloader, weil er ja dadurch wieder mehr zu laden hat!
Treffen sich ein Stein und ein Brett.
Der Stein: "Hi, Ich bin ein Stein"
Das Brett: "Wenn du Einstein bist, bin ich Brett Pitt"

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2021 Sebastian Wichmann - Flashhilfe.de