Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 03-07-2008, 10:18   #1 (permalink)
Neuer User
 
Registriert seit: Mar 2007
Beiträge: 29
stageHeight in externen Datei

Hallo zusammen,

ich hab noch mal eine grundsätzliche Frage worauf ich bis jetzt noch keinen passenden Beitrag gefunden habe.

Ich lade eine externe SWF-Datei mittels Loader in meine Hauptdatei. In der externen Datei werden Objekte abhängig von der Bühnengröße platziert und skaliert. Das funktioniert einzeln wunderbar, wirft mir in Kombination allerdings einen Fehler aus:

PHP-Code:
TypeErrorError #1009: Der Zugriff auf eine Eigenschaft oder eine Methode eines null-Objektverweises ist nicht möglich.
    
at test_fla::MainTimeline/test_fla::frame1()
[
object MainTimeline
Wie greife ich in meiner externen Datei, nachdem sie in die Hauptdatei geladen wurde, auf die Eigenschaft stageHeight & stageWidth zu?

Vielen Dank im Voraus für die Hilfe.

Gruß aus dem heißen Berlin.
Paeddl ist offline   Mit Zitat antworten
Alt 03-07-2008, 10:20   #2 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
Kann es sein, daß die externe Datei nach dem Laden erst
per addChild() in die DisplayList aufgenommen werden muß?

gruß, gaspode
gaspode ist offline   Mit Zitat antworten
Alt 03-07-2008, 11:24   #3 (permalink)
Neuer User
 
Registriert seit: Mar 2007
Beiträge: 29
Krass, dass du so schnell immer antwortest - Vielen Dank!

In meiner Hauptdatei habe ich auf zwei Varianten versucht die externe Datei zu platzieren:

1)

PHP-Code:
addChild(e.target.loader.content
2)

PHP-Code:
addChild(loaderObject
In beiden Fällen wird die Datei korrekt platziert, was ich daran erkenne, dass das Rechteck, was ich zeichne zumindest dargestellt wird. Es wird nur halt nicht korrekt mit stage.stageHeight angepasst.

Hier der Code der externen Datei:

PHP-Code:
//Variablen-Deklaration
var rectangle:Shape = new Shape();

//Rechteck zeichnen
rectangle.graphics.beginFill(0x0000001);
rectangle.graphics.drawRect(00100100);
rectangle.graphics.endFill();

//Position
rectangle.stage.stageHeight-300;

//Platzieren
addChild(rectangle); 
Ist das Probleme vielleicht mit "this" und "root" an der richtigen Stelle zu lösen?
Paeddl ist offline   Mit Zitat antworten
Alt 03-07-2008, 14:09   #4 (permalink)
vermisst ein e
 
Benutzerbild von kRizzl
 
Registriert seit: Oct 2007
Beiträge: 774
fuege einen eventhandler hinzu, der all die dinge macht, die von stage.* abhaengig sind. hierdurch kannst du ihn dann erst ausfuehren lassen, wenn dein objekt durch die displayliste an die stage-instanz rankommt: addEventListener(Event.ADDED_TO_STAGE, deinStageHandler);
kRizzl ist offline   Mit Zitat antworten
Alt 03-07-2008, 17:19   #5 (permalink)
Neuer User
 
Registriert seit: Mar 2007
Beiträge: 29
Also ich hab die Dateien leider gerade nicht parat, aber ich hätte halt ungern die Logik der externen Datei in der Hauptdatei, die lediglich die externe Datei lädt. Ich hätte die Logik thematisch schon ganz gern getrennt. Gibt es denn keine Möglichkeit in der "Kind"-Datei auf die Bühne der "Mutter"-Datei zuzugreifen?
Paeddl ist offline   Mit Zitat antworten
Alt 03-07-2008, 19:53   #6 (permalink)
Neuer User
 
Registriert seit: Nov 2004
Beiträge: 148
...also

wenn du die stage Dimensionen des Hauptfilms wissen willst, müsste das vom geladenen Film aus ganz normal mit stage.stageWidth + stage.stageHeight gehen.
Willst du aber die Dimensionen des geladenen Films wissen musst du das mit this.height bzw. this.width machen. Da aber der swf-Hintergrund transparent gerendert wird, wird er dir hier die maximale vertikale und horizontale Ausdehnung der Objekte im swf als Höhe und Breite angeben. Du kannst in dem Fall nen Trick anwenden, indem du im Hintergrund einen transparenten MC mit den Dimensionen deines externen swf platzierst, z.B.
Torrriate ist offline   Mit Zitat antworten
Alt 03-07-2008, 20:42   #7 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
So wie das kRizzel geschrieben hat, brauchst du keine Logik in deinem Hauptfilm, sondern nur in dem geladenen Film:
PHP-Code:
import flash.events.Event;

function 
added(e:Event):void
{
    
//Variablen-Deklaration
    
var rectangle:Shape = new Shape();

    
//Rechteck zeichnen
    
rectangle.graphics.beginFill(0x0000001);
    
rectangle.graphics.drawRect(00100100);
    
rectangle.graphics.endFill();

    
//Position
    
rectangle.stage.stageHeight-300;

    
//Platzieren
    
addChild(rectangle);
}

addEventListener(Event.ADDED_TO_STAGEadded); 
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 04-07-2008, 08:52   #8 (permalink)
Neuer User
 
Registriert seit: Mar 2007
Beiträge: 29
Vielen Dank für die Hilfe. Es funktioniert nun, aber schade ist, dass ich die externe Datei nicht mehr einzeln abspielen lassen kann um Sie auf Funktionalität zu prüfen. Mittels Loader werden später einzelne Module geladen, die ich gern checken würde, aber wir sind hier ja nicht bei "Wünsch dir was"

Dennoch danke.

EDIT: Wie kann ich im Hauptfilm eine Funktion in der externen Datei aufrufen?

Geändert von Paeddl (04-07-2008 um 09:26 Uhr)
Paeddl ist offline   Mit Zitat antworten
Alt 04-07-2008, 10:56   #9 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Möglich ist eigentlich alles
PHP-Code:
// ...

if (stage is Stage) {
    
added(null);
} else {
    
addEventListener(Event.ADDED_TO_STAGEadded);

Wenn du Funktionen aufrufen möchtest, solltest du entweder dafür sorgen, dass die Dateien von der gleichen Domain kommen, oder dich in das Security-Modell von Flash einlesen.
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp 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 16:44 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele