• beyond tellerrand – play. Register Now!
Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 02-09-2010, 09:45   #1 (permalink)
m9k
Neuer User
 
Registriert seit: May 2006
Beiträge: 16
stagewidth / stageHeight in ext. geladener SWF

Hallo,

ich habe folgendes Szenario:
Eine swf, die nur einen Preloader beinhaltet und eine swf, die in die erste swf hineingeladen wird.

Nun benutze ich in der externen swf an mehreren Stellen stage.stageWidth bzw. stage.stageHeight.

Beim testen der externen swf funktioniert das auch. Nur leider funktionieren die Stage-Parameter nicht mehr, wenn der Film in die erste swf geladen wird.


Hat einer einen Tipp, wie ich in der externen swf auf die Stage-Parameter zugreifen kann?

Vielen Dank
Manuel
m9k ist offline   Mit Zitat antworten
Alt 02-09-2010, 17:05   #2 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.238
hi manuel,

du kannst erst auf stage zugreifen, wenn deine swf auf der bühne ist. daher schlägt dein aufruf im constructor fehl (ich geh davon aus, dass dies das problem ist). daher musst du deine listener und anderes, was die stage betrifft später ausführen, als sonst.

ein beispiel:

Preloader.as
PHP-Code:
package {
    
import flash.display.Loader;
    
import flash.display.Sprite;
    
import flash.events.*;
    
import flash.net.URLRequest;
    
import flash.display.LoaderInfo;
    
import flash.display.MovieClip;

    public class 
Preloader extends Sprite {
        private var 
url:String "ToLoad.swf";
        
        var 
loader:Loader = new Loader();    
        public function 
Preloader() {
            
configureListeners(loader.contentLoaderInfo);
            
loader.addEventListener(MouseEvent.CLICKclickHandler);

            var 
request:URLRequest = new URLRequest(url);
            
loader.load(request);
            
addChild(loader);
            
            
/*
            //schlägt fehl, da es noch keinen content gibt
            var mc:MovieClip = loader.content as MovieClip;
            mc.init();
            */
        
}

        private function 
configureListeners(dispatcher:IEventDispatcher):void {
            
dispatcher.addEventListener(Event.COMPLETEcompleteHandler);
            
dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUShttpStatusHandler);
            
dispatcher.addEventListener(Event.INITinitHandler);
            
dispatcher.addEventListener(IOErrorEvent.IO_ERRORioErrorHandler);
            
dispatcher.addEventListener(Event.OPENopenHandler);
            
dispatcher.addEventListener(ProgressEvent.PROGRESSprogressHandler);
            
dispatcher.addEventListener(Event.UNLOADunLoadHandler);
        }

        private function 
completeHandler(event:Event):void {
            
trace("completeHandler: " event);
            var 
l:LoaderInfo event.currentTarget as LoaderInfo;
            var 
mc:MovieClip l.content as MovieClip;
            
mc.init();//gibt die stage zurück
        
}

        private function 
httpStatusHandler(event:HTTPStatusEvent):void {
            
trace("httpStatusHandler: " event);
        }

        private function 
initHandler(event:Event):void {
            
trace("initHandler: " event);
            
            var 
l:LoaderInfo event.currentTarget as LoaderInfo;
            var 
mc:MovieClip l.content as MovieClip;
            
mc.init();//gibt die stage zurück
            
        
}

        private function 
ioErrorHandler(event:IOErrorEvent):void {
            
trace("ioErrorHandler: " event);
        }

        private function 
openHandler(event:Event):void {
            
trace("openHandler: " event);
        }

        private function 
progressHandler(event:ProgressEvent):void {
            
trace("progressHandler: bytesLoaded=" event.bytesLoaded " bytesTotal=" event.bytesTotal);
        }

        private function 
unLoadHandler(event:Event):void {
            
trace("unLoadHandler: " event);
        }

        private function 
clickHandler(event:MouseEvent):void {
            
trace("clickHandler: " event);
            var 
loader:Loader Loader(event.target);
            
loader.unload();
        }
    }

ToLoad.as
PHP-Code:
package 
{
    
import flash.display.MovieClip;
    
import flash.events.Event;
    public class 
ToLoad extends MovieClip
    
{


        public function 
ToLoad():void
        
{
            
// constructor code
            
trace(">>consturctor Stage:"stage);//null
            
addEventListener(Event.INITinitHandler);//kommt nie zum tragen, da das event nur von LoaderInfo genutzt wird!!
            
addEventListener(Event.ADDEDaddedHandler);
            
addEventListener(Event.ADDED_TO_STAGEaddedToStageHandler);
        }
        private function 
initHandler(e:Event):void{
            
trace(">>initHandler Stage"stage);//wird so nie ausgelöst
        
}
        private function 
addedHandler(e:Event):void{
            
trace(">>addedHandler Stage:"stage);// kommt zweimal
            //erstes mal, wenn es dem loader zugefügt wird -> stage = null;
            //zweites mal, als child von loader gleich hinterher: stage wird zurückgegeben, wenn loader bereits auf der bühne ist
        
}
        private function 
addedToStageHandler(e:Event):void{
            
trace(">>addedToStageHandler Stage:"stage);//gibt die stage zurück
        
}
        public function 
init():void
        
{
            
trace(">>init Stage:"stage);//gibt die stage zurück, wenn schon auf der bühne vorhanden
        
}

    }


swf direkt
Zitat:
>>consturctor Stage: [object Stage]
>>addedHandler Stage: [object Stage]
>>addedToStageHandler Stage: [object Stage]
swf im preloader
Zitat:
openHandler: [Event type="open" bubbles=false cancelable=false eventPhase=2]
progressHandler: bytesLoaded=0 bytesTotal=977
progressHandler: bytesLoaded=977 bytesTotal=977
>>consturctor Stage: null
>>addedHandler Stage: null
>>addedHandler Stage: [object Stage]
>>addedToStageHandler Stage: [object Stage]
initHandler: [Event type="init" bubbles=false cancelable=false eventPhase=2]
>>init Stage: [object Stage]
httpStatusHandler: [HTTPStatusEvent type="httpStatus" bubbles=false cancelable=false eventPhase=2 status=0 responseURL=null]
completeHandler: [Event type="complete" bubbles=false cancelable=false eventPhase=2]
>>init Stage: [object Stage]
folglich gibt es etwa 2 1/2 mehr oder weniger sinnvolle möglichkeiten. ADDED_TO_STAGE ist aber mit sicherheit das event, mit dem du am wenigsten probleme haben sollest.

mfg

sx
__________________

flintfabrik.de
shin10 ist offline   Mit Zitat antworten
Alt 06-09-2010, 08:20   #3 (permalink)
m9k
Neuer User
 
Registriert seit: May 2006
Beiträge: 16
Danke!

Hi,

vielen Dank für deine Mühe, die vielen Hinweise und ausführlichen Beispiele!

Ich werde mir das mal näher anschauen und mir damit eine Lösung erarbeiten.
AddedToStage kannte ich übrigens noch gar nicht. Danke sehr!

Viele Grüße
m9k 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
stage.stageHeight _chris_ ActionScript 3 6 28-01-2010 15:37
AS3 rockt: stageHeight jav666 ActionScript 3 3 03-11-2009 00:48
stage.StageHeight ist 100 zu klein EiKei ActionScript 3 1 02-09-2008 11:14
stageHeight in externen Datei Paeddl ActionScript 3 8 04-07-2008 11:56
Stage, stageWidth, stageHeight, Resize cezar ActionScript 3 2 05-06-2008 00:34


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:59 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele