[AS3] load and unload external swf (how????)

ActionScript και Flex Προγραμματισμός

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
dapadoupas
Δημοσιεύσεις: 34
Εγγραφή: 29 Ιούλ 2009 16:43
Τοποθεσία: athina

[AS3] load and unload external swf (how????)

Δημοσίευση από dapadoupas » 29 Ιούλ 2009 17:16

καλησπερα... πήρα επιτέλους να κάνω το move από την AS2 στη AS3, προσπαθώ να κάνω κάτι παρόμοιο, όμως για κάποιο λόγο δεν μου κάνει unload τον Loader και εχω φρικάρει.

Σαν πρώτη σκέψη ειναι να κάνω Target τον loader για να τον κάνω close και έπειτα unload. αλλά όταν αναφέρομαι σε αυτόν πέρνω τιμή (null)

παραθέτω τον κωδικα που με απασχολεί...

Κώδικας: Επιλογή όλων

//// classes 
import flash.display.DisplayObject;
import flash.display.Sprite;
import flash.display.StageDisplayState;
import flash.display.Loader;
import flash.events.MouseEvent;
import flash.system.fscommand;
import flash.net.URLRequest;



///// edw kanw load to swf mou me vash ena var pou exw mesa se ena text
function my_text_click(evt:MouseEvent):void {

	var TxtContainer:MovieClip = new MovieClip();
	addChild(TxtContainer);
	TxtContainer.name="TxtContainer";

	var textLoader:Loader = new Loader();
		
	if (evt.target.idText.text==1) {
		textLoader.load(new URLRequest("Books/Book"+evt.target.idText.text+"/6.swf"))
	}
	if (evt.target.idText.text==2) {
		textLoader.load(new URLRequest("Books/Book"+evt.target.idText.text+"/textConteiner.swf"))
	}
	TxtContainer.addChild(textLoader)
	textLoader.name="MyInfo"
	trace("textClicked")


	var XLoader:Loader = new Loader()
	XLoader.load(new URLRequest("sharedItems/grafix/x_btn.swf"))
	
	var MyXBtn:MovieClip = new MovieClip()
	TxtContainer.addChild(MyXBtn)
	MyXBtn.name = "MyXBtn"
	
	MyXBtn.addChild(XLoader)
	
	trace(TxtContainer.getChildAt(0).name)
	MyXBtn.x = 990
	makeXButton(MyXBtn, my_X_click)	
}


////////////////// edw kalw tis functions gia na diw3w loaders kai mcs mesw enws X btn
function my_X_click(evt:MouseEvent):void {
	var TxtContainer = this.getChildByName("TxtContainer")
	
	removeLoader ("textLoader");
	removeLoader ("XLoader");
	
	trace("this :"+this.getChildByName("textLoader"))
	
	removeChildWithRef("MyInfo",TxtContainer)
	removeChildWithRef("MyXBtn",TxtContainer)
	removeChildWithRef("TxtContainer",this)	
}


//////////////// edw einai h function pou kanei close kai unload tous Loader

function removeLoader (loader:*):void{

try {	
	loader.close();
}
catch (e:*){}


try
{
    if (loader.content!=null)
    {
        loader.unload ();
        trace ("unloaded");
    }
}
catch (e:*){} 
}



* το *.swf που κάνω Load είναι σε Actionscript 2 έχει onEnterFrame Events και είναι προφανές οτι όταν κανω για δεύτερη φορά το *.swf Load, το πρώτο instance τρέχει στο Background αφου οι μεταβλητές του μπερδεύονται.

Κάθε ιδέα ευπροσδεκτη, καλός σας βρήκα παρεπιπτόντως.

Άβαταρ μέλους
HeRu
Flash Moderator
Δημοσιεύσεις: 800
Εγγραφή: 16 Αύγ 2004 10:49
Επικοινωνία:

[AS3] load and unload external swf (how????)

Δημοσίευση από HeRu » 29 Ιούλ 2009 17:41

Καλώς ήρθες!

Το πιο πιθανό πρόβλημα είναι ότι περνάς τους loader σαν string στο removeLoader.
Βγάλε τα var που δηλώνεις τους loader έξω από τις function για να γίνουν global και πέρνα τους loader κανονικά.

Κώδικας: Επιλογή όλων

//...
var textLoader:Loader;
var XLoader:Loader;
///// edw kanw load to swf mou me vash ena var pou exw mesa se ena text
function my_text_click(evt:MouseEvent):void {
	//...
	textLoader= new Loader();
	//...
	XLoader= new Loader()
	//...
} 
////////////////// edw kalw tis functions gia na diw3w loaders kai mcs mesw enws X btn
function my_X_click(evt:MouseEvent):void {
	//...
	removeLoader (textLoader);
	removeLoader (XLoader);
	//...
}


//////////////// edw einai h function pou kanei close kai unload tous Loader

function removeLoader (loader:Loader):void
{
	if(loader.contentLoaderInfo.bytesLoaded != loader.contentLoaderInfo.bytesTotal)
		loader.close();
	if (loader.content)
		loader.unload();
}
Τελευταία επεξεργασία από το μέλος HeRu την 29 Ιούλ 2009 20:10, έχει επεξεργασθεί 1 φορά συνολικά.

Άβαταρ μέλους
dapadoupas
Δημοσιεύσεις: 34
Εγγραφή: 29 Ιούλ 2009 16:43
Τοποθεσία: athina

[AS3] load and unload external swf (how????)

Δημοσίευση από dapadoupas » 29 Ιούλ 2009 18:29

Σε ευχαριστω πολύ - δούλεψε αλλά χτυπισε στο ...

Κώδικας: Επιλογή όλων

 loader.close(); 
... γιατι, είχε προλάβει να το φορτώσει (offline) και δεν είχε stream , προφανός χρειάζομαι εναν defend code να αναγνωρίζει αν έχει stream ο loader.

Άβαταρ μέλους
HeRu
Flash Moderator
Δημοσιεύσεις: 800
Εγγραφή: 16 Αύγ 2004 10:49
Επικοινωνία:

[AS3] load and unload external swf (how????)

Δημοσίευση από HeRu » 29 Ιούλ 2009 19:52

Μπορείς να ελέγξεις αν φορτώνει data.

Κώδικας: Επιλογή όλων

if(loader.contentLoaderInfo.bytesLoaded != loader.contentLoaderInfo.bytesTotal)
   loader.close(); 

Άβαταρ μέλους
dapadoupas
Δημοσιεύσεις: 34
Εγγραφή: 29 Ιούλ 2009 16:43
Τοποθεσία: athina

[AS3] load and unload external swf (how????)

Δημοσίευση από dapadoupas » 31 Ιούλ 2009 15:20

thanx! i do it, works perfect on XP.

το έκανα x-port σε player 10 με windows projector. το μόνο πρόβλημα μου τώρα είναι οτι σε vista τα FPS είναι τραγικά. Ψάχνω λύση.

Άβαταρ μέλους
HeRu
Flash Moderator
Δημοσιεύσεις: 800
Εγγραφή: 16 Αύγ 2004 10:49
Επικοινωνία:

[AS3] load and unload external swf (how????)

Δημοσίευση από HeRu » 31 Ιούλ 2009 15:39

dapadoupas έγραψε:thanx! i do it, works perfect on XP.

το έκανα x-port σε player 10 με windows projector. το μόνο πρόβλημα μου τώρα είναι οτι σε vista τα FPS είναι τραγικά. Ψάχνω λύση.
Αν παίζει κανονικά σε XP, τότε δεν πρέπει να έχει πρόβλημα στα Vista.

Το πιο πιθανόν είναι ότι το μηχάνημα με τα Vista σου έχει κάποιο θέμα. Δοκίμασε να κάνεις uninstall & reinstall τον flash player.

Άβαταρ μέλους
dapadoupas
Δημοσιεύσεις: 34
Εγγραφή: 29 Ιούλ 2009 16:43
Τοποθεσία: athina

[AS3] load and unload external swf (how????)

Δημοσίευση από dapadoupas » 31 Ιούλ 2009 17:33

το δοκίμασα σε 3 μηχανήματα και είμαι πλέον σίγουρος οτι πρέπει να κάνω κάτι στο δικό μου end.



δοκίμασα να το τρέξω σε μικρότερη ανάληση και έτρεξε καλά. Το σίγουρο είναι οτι ο windows projector lagarei περισότερο στα vista για κάποιο λόγο.

καμία ιδέα πως μπορώ να αλλάξω το Screen Resolution απο το flash και κατα την έξοδο να το επαναφέρω στην προηγούμενη κατάσταση?

ίσως έτσι λύσω το πρόβλημα γιατί σε υπολογιστές με μεγάλη ανάλυση όταν τρέχει Full-screen σέρνεται.

Ο windows projector δεν ειναι Stand alone?

Άβαταρ μέλους
HeRu
Flash Moderator
Δημοσιεύσεις: 800
Εγγραφή: 16 Αύγ 2004 10:49
Επικοινωνία:

[AS3] load and unload external swf (how????)

Δημοσίευση από HeRu » 31 Ιούλ 2009 18:03

Όχι δεν μπορείς να αλλάξεις ανάλυση της οθόνης από τον projector.

Για δοκίμασε στα Flash Publish Settings να βάλεις το Hardware Acceleration σε Level 1 ή Level 2, να δεις αν κάνει διαφορά.

Άβαταρ μέλους
dapadoupas
Δημοσιεύσεις: 34
Εγγραφή: 29 Ιούλ 2009 16:43
Τοποθεσία: athina

[AS3] load and unload external swf (how????)

Δημοσίευση από dapadoupas » 03 Αύγ 2009 15:09

Δοκιμασα το Hardware Acceleration αλλά δεν βρηκα φως. Το πρόβλημα πλέον εντοπίζεται στο Full Screen.

όταν η εφαρμογή παιζει Full Screen σε Vista συγκεκριμένα τα FPS γυνονται 1.

Χρησιμοποιό κάποια embeded swf's με flash panorama. τους ρωτάω για το αν έχουν συναντισει παρόμοια προβλήματα αλλα με ψηλογράφουν.

Ευχαριστώ για την βοήθεια. νομίζω πως το μόνο που μπορώ να κάνω είναι να περιμένω να μου απαντήσουν γιατι δεν ξέρω τι έχουν βάλει μεσα. Απο την άλλη έχω εξαντλίσει όλες τις πιθανές περιπτώσεις να έχω γράψει κάτι λάθος.

Απάντηση

Επιστροφή στο “ActionScript και Flex Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες