Νήματα σε Actionscript

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

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

Απάντηση
mariosserhan
Δημοσιεύσεις: 2
Εγγραφή: 04 Σεπ 2008 23:25

Νήματα σε Actionscript

Δημοσίευση από mariosserhan » 02 Μαρ 2010 10:48

Καλημέρα στο FreeStuff και στα μέλοι του, η ερώτηση μου είναι η εξής.
Μπορώ να φτιάξω νήματα με το flash? μιας και έχω προβλήματα με την εκτέλεση
κώδικα και την ταυτόχρονη ανανέωση του GUI και το ψάξιμο στο google δεν
απέδωσε. Επίσης αν υπάρχει κανένα πρόχειρο τμήμα κώδικα θα ήταν πάρα πολύ
καλή βοήθεια αν και μια θετική η αρνητική απάντηση στο θέμα μου αρκει (να ξέρω
να σταματήσω να ψάχνω ή όχι :-? ).
η επιτυχία βρίσκεται πριν από τον κόπο μόνο στο λεξικό

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

Νήματα σε Actionscript

Δημοσίευση από HeRu » 02 Μαρ 2010 11:17

Η actionscript τρέχει προς το παρόν σε ένα thread μόνο. Υπάρχει ένας τρόπος όπου μπορείς να χρησιμοποιήσεις ένα δεύτερο thread, αλλά είναι λίγο hack και συνήθως είναι χρήσιμο μόνο για μαθηματικές πράξεις.

Αυτό που πρέπει να κάνεις, είναι το Inversion of Control architecture, όπου καλείς τον "βαρύ" κωδικά ή κώδικα που διαβάζει εξωτερικά δεδομένα και κάνεις την ανανέωση του GUI όταν έχεις τα τελικά δεδομένα.

Αυτό βασικά γίνεται με τους Event listeners. Οπότε ή χρησιμοποιώντας τους προϋπάρχων listeners ή φτιάχνοντας δικούς σου, πρέπει να κάνεις ένα asynchronous flow, όπου το GUI ανανεώνεται μετά την επεξεργασία.

Ένα πάρα πολύ γενικό use case:
Data processor

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

package
{
	import flash.events.*;

	public class DataProcessor extends EventDispatcher
	{
		public static const PROCESSCOMPLETE:String = "processComplete";
		
		public function processLotsOfData():void
		{
			// Do lots of stuff
			// Do lots of stuff
			// Do lots of stuff
			// Do lots of stuff
			// Do lots of stuff
			// Do lots of stuff
			// Do lots of stuff
			dispatchEvent(new Event(PROCESSCOMPLETE));
		}
		
	}
}
Main application

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

package
{
	import flash.events.Event;
	
	public class GUIUpdater
	{
		private  var dataProcessor:DataProcessor
		
		public function GUIUpdater()
		{
			dataProcessor = new DataProcessor();
			dataProcessor.addEventListener(DataProcessor.PROCESSCOMPLETE, updateGUI);
		}
		
		public function updateData():void
		{
			dataProcessor.processLotsOfData();
		}
		
		public function updateGUI(event:Event):void
		{
			// Update UI	
		}

	}
}
Βασικά το flow εδώ είναι ότι ο GUIUpdater καλεί το processLotsOfData και "περιμένει". Όταν τελειώσει ο DataProcessor, εκπέμπει το Event και έτσι ο GUIUpdater κάνει update το GUI με τα καινούργια data.

mariosserhan
Δημοσιεύσεις: 2
Εγγραφή: 04 Σεπ 2008 23:25

Νήματα σε Actionscript

Δημοσίευση από mariosserhan » 02 Μαρ 2010 20:53

Φίλε μου HeRu καλησπέρα

καταρχάς σε ευχαριστώ για την πολύ γρήγορη απάντηση και συγχαρητήρια για τις γνώσεις σου μιας και το ψάχνω καιρό το θέμα και άκρη δεν βρίσκω, επίσης δεν περίμενα να έχεις πρόχειρη και γρήγορη απάντηση οπότε με σκλαβώνεις :) .
Επίσης τα παραδείγματα που έβαλες μου λύνουν προβλήματα με την πρώτη ματιά μιας και το πρόβλημα ήταν πώς να δουλεύει μόνιμα ένα delay και ένας έλεγχος σε ένα αρχείο σε μόνιμο loop και ταυτόχρονα το GUI να δουλεύει. Οπότε είσαι άψογος σε ευχαριστώ πολύ
η επιτυχία βρίσκεται πριν από τον κόπο μόνο στο λεξικό

Απάντηση

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

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

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