Flashhilfe.de - Flash Community

drunter liegende swf entladen [Flash 10]

 


AntwortenRegistrieren Seite1  

Consilium#1
Benutzerbild von Consilium
Beiträge: 31
Registriert: Jan 2011

05.03.2011, 12:31

Hallo :-)
ich mache meine ersten Schritte mit flash und as 3.0 und habe folgendes Problem:

Im Hauptfilm lade ich mit einem Button externe swf`s in ein MovieClip (Box1) :
z.B.:
var swfLoader:Loader = new Loader();
Sehen.addEventListener (MouseEvent.CLICK, loadProdComplete);
Box1.addChild(swfLoader);
function loadProdComplete(Event:MouseEvent):void {
   var request:URLRequest = new URLRequest("Film_1.swf");
   swfLoader.load(request);
   addChild(swfLoader);
   removeChild(Box1);
}

Ich möchte, wenn ich nun z.B. nach Film_1 auch Film_2 in Box1 geladen habe, im letzten Frame von Film_2 ein AS ausgeführt wird, welches den "darunter liegenden" Film oder Filme in dieser Box1 entlädt.

Kann mir jemand vielleicht da weiter helfen, mir das AS schreiben?
Sleepingbeast#2
Benutzerbild von Sleepingbeast
Beiträge: 579
Wohnort: Halle
Registriert: Apr 2005

05.03.2011, 13:25

Hallo,

ich mache es immer so, indem ich vor dem Laden neuer Inhalte mit einer while-Schleife alles aus dem jeweiligen Container-Movieclip lösche.

ActionScript:
1
2
3
4
5
6
7
8
function ladenKomplett(e:MouseEvent):void
{
    while(container_mc.numChildren > 0)
    {
      container_mc.removeChildAt(0);
    }
    // hier kommt der Rest des Scripts, der nach dem Laden ausgeführt werden soll
}



Liebe Grüße
Patrick
_________________________________________________________
Um Rekursion wirklich zu verstehen, muss man zuerst Rekursion verstehen.
null != 'null' != 0 != '0'
Consilium#3
Benutzerbild von Consilium
Beiträge: 31
Registriert: Jan 2011

Themenautor/in

05.03.2011, 15:17

Hallo Patrik,
vorweg mal danke! dass Du dich meiner Unwissenheit annimst.
Also, ich habe das unten stehende AS auf die Zeitleiste gesetzt und beim ausführen passiert,- außer das Film_2 in die Box1 geladen wird - nichts.
___________________________________________________________
var swfLoader:Loader = new Loader();
btn1.addEventListener (MouseEvent.CLICK, ladenKomplett);
Box1.addChild(swfLoader);
function ladenKomplett(e:MouseEvent):void
{
    while(Box1.numChildren > 0)
    {
      Box1.removeChildAt(0);
    }
 function loadProdComplete(Event:MouseEvent):void {
   var request:URLRequest = new URLRequest("Film_2.swf");
   swfLoader.load(request);
   addChild(swfLoader);
   removeChild(Box1);
}
}
___________________________________________________________
.... allerdings auch keine Fehlermeldung.
Ups,- eben gehe ich die fla nochmal durch und erkenne, das durch das AS die swf`s gar nicht in BOX1 geladen werden sondern einfach "nur drauf".
Patrik, kannst du mir sagen, wo in diesen AS der "Fehler" liegt bzw. wie es richtig geschrieben wird, um die Filme ins MovieClip: Box1 zu bekommen?
Consilium#4
Benutzerbild von Consilium
Beiträge: 31
Registriert: Jan 2011

Themenautor/in

05.03.2011, 16:03

Habe nun mein AS so umgeschrieben:
_______________________________________________________________________
var swfLoader:Loader = new Loader();
Sehen.addEventListener (MouseEvent.CLICK, ladenKomplett);
Box1.addChild(swfLoader);
function ladenKomplett(e:MouseEvent):void
{
    while(Box1.numChildren > 0)
    {
      Box1.removeChildAt(0);
    }
 function loadProdComplete(Event:MouseEvent):void {
   var request:URLRequest = new URLRequest("Film_2.swf");
   swfLoader.load(request);
   Box1.addChild(swfLoader);
   }
}
________________________________________________________________________

also, anstatt "addChild(swfLoader);" nun "Box1.addChild(swfLoader);" -- vorherige in Box1 eingeladene swf`s werden entladen aber der neue Film (in diesen Fall: Film_2.swf) wird nicht geladen.

pff ich geh am Stock, was schreibe ich falsch?
Consilium#5
Benutzerbild von Consilium
Beiträge: 31
Registriert: Jan 2011

Themenautor/in

05.03.2011, 19:02

Hallo,
Ich habe nun meine fla zum Teil anders strukturiert. Im Hauptfilm lade ich in MC1 den Film_A
In diesem Film_A sind mehrer MC`s (MC2, MC3 usw.) in denen ich swf`s lade (swf2, swf3 usw)

Meine Frage:

Wie lautet das AS von swf2 (film liegt in MC2), welches den MovieClip MC3 entlädt?

Bitte helft mir, bei mir in der Birne dreht sich schon alles
micB#6
Benutzerbild von micB
Beiträge: 186
Registriert: Jun 2009

06.03.2011, 12:05

ich glaube,mit deinem letzten ansatz verläufst du dich. geh lieber nochmal einen schritt zurück...
du hast einen button, der anscheinend "Sehen" heisst und der immer ein neues swf laden soll.
da bietet es sich an, alle swf-namen, die du hast, in einen array zu stopfen:
ActionScript:
1
2
filmArray:Array = new Array();
filmArray = ["Film_1.swf","Film_2.swf","Film_3.swf","Film_4.swf"];

dazu dann eine variable, die hochzählen kann
ActionScript:
1var arrayNummer:Number = 0

die variable fängt bei 0 an, da das der erste eintrag im array ist, also "Film_1.swf"

dein button bekommt einen EventListener, der das laden initiiert und die entsprechende funktion dazu:
ActionScript:
1
2
3
4
5
6
Sehen.addEventListener(MouseEvent.Click,starteLaden);
function starteLaden(e:MouseEvent):void{
     var request:URLRequest = new URLRequest(filmArray[arrayNummer]);
     swfLoader.load(request);
    filmNummer += 1; //hier zählst du die Variable hoch für das nächste swf
}


dein Loader hat auch einen EventListener für den completeEvent und die entsprechende funktion:
ActionScript:
1
2
3
4
5
6
7
8
9
10
swfLoader.contentLoaderInfo.addEventListener (Event.COMPLETE, loadProdComplete);
function loadProdComplete(e:Event)
{
       while(Box1.numChildren > 0)
      {
        Box1.removeChildAt(0);
      }
      var nextChild = e.target.content;
      Box1.addChild(nextChild);
}


ich habe es nicht ausprobiert, denke aber, das das die richtige richtung sein könnte.
gruss
michael
Geändert von micB am 06.03.11 um 12:23 Uhr
Consilium#7
Benutzerbild von Consilium
Beiträge: 31
Registriert: Jan 2011

Themenautor/in

07.03.2011, 19:30

Hallo micB
danke für dein feedback und die Mühe die du dir gemacht hast!!

Ich habe deine Anregung nachvollzogen und mich aber letztendlich doch für eine andere Variante entschieden:
________________________

import flash.display.MovieClip;
import flash.events.Event;
stop ();
var tweenControlMC:MovieClip = new MovieClip();
var memoContainer:MovieClip;
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener (Event.COMPLETE, completeHandler);
Sehen.addEventListener (MouseEvent.CLICK, Film1rufen);
Hören.addEventListener (MouseEvent.CLICK, Film2rufen);
Lachen.addEventListener (MouseEvent.CLICK, Film3rufen);
Kennen4.addEventListener (MouseEvent.CLICK, Film4rufen);
Aerger5.addEventListener (MouseEvent.CLICK, Film5rufen);
function Film1rufen (Event:MouseEvent):void {
    loader.load (new URLRequest("Film_1.swf"));
}
function Film2rufen (Event:MouseEvent):void {
    loader.load (new URLRequest("Film_2.swf"));
}
function Film3rufen (Event:MouseEvent):void {
    loader.load (new URLRequest("Film_3.swf"));
}
function Film4rufen (Event:MouseEvent):void {
    loader.load (new URLRequest("Film_4.swf"));
}
function Film5rufen (Event:MouseEvent):void {
    loader.load (new URLRequest("Film_5.swf"));
}
function completeHandler (e:Event):void {
    var mc:MovieClip = e.target.content as MovieClip;
    addChild (mc);
    tweenControl (mc);
}
function tweenControl (mc):void {
    tweenControlMC.addEventListener (Event.ENTER_FRAME, oEF);
    function oEF (e:Event):void {
        if(mc.currentFrame >= mc.totalFrames){
            tweenControlMC.removeEventListener (Event.ENTER_FRAME, oEF);
            if(memoContainer != null){
                removeChild(memoContainer);
            }
            memoContainer = mc;
        }
    }


_______________

nochmals danke! micB

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-2022 Sebastian Wichmann - Flashhilfe.de