[AS2] Πρόβλημα στο functionality εικόνων που φορτώνουν

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

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

Απάντηση
Άβαταρ μέλους
Garakatsamol
Honorary Member
Δημοσιεύσεις: 919
Εγγραφή: 08 Μάιος 2007 00:27

[AS2] Πρόβλημα στο functionality εικόνων που φορτώνουν

Δημοσίευση από Garakatsamol » 07 Ιουν 2008 18:49

Hello
Καλώ κάποιες εικόνες μέσω XML και τις αποθηκεύω σ'ένα Array.
Δημιουργώ ένα empty movie clip και του κάνω scaling και positioning.
Μέσα σ'αυτό βάζω την εικόνα με σκοπό να λειτουργήσει ως thumbnail
Μέχρι εδώ όλα καλά. Τα εμφανίζει στο stage εκει που θέλω.
Όταν πάω τώρα να δώσω functionality στο thumbnail δεν τα καταφέρνω με τίποτα.
δέστε εδώ τι έκανα

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

//φορτώνω τις εικόνες από xml
var slide_xml = new XML();
slide_xml.ignoreWhite = true;
slide_xml.onLoad = function(success) {
   if (success) {
      processSlide(slide_xml);
   }
};
slide_xml.load('slide.xml');


//function που δημιουργεί τα thumbnails (και καλά)
function processSlide(xmlDoc_xml) {
   var imgArray = Array();
   for &#40;var n = 0; n<xmlDoc_xml.firstChild.childNodes&#91;1&#93;.childNodes.length; n++&#41; &#123;
      imgArray.push&#40;xmlDoc_xml.firstChild.childNodes&#91;1&#93;.childNodes&#91;n&#93;.childNodes&#41;;
      this.createEmptyMovieClip&#40;"cont"+n,n&#41;;
      with &#40;_root&#91;"cont"+n&#93;&#41; &#123;
         _xscale = _yscale=10;
         _y = 400;
         _x = 5+n*65;
         _alpha = 70;
      &#125;
      loadMovie&#40;"fotos/"+imgArray&#91;n&#93;, "cont"+n&#41;;
      trace&#40;_root&#91;"cont"+n&#93;&#41;;//returns _level0.cont0 , _level0.cont1 etc. Όλα καλά μέχρι εδώ
      _root&#91;"cont"+n&#93;.onRollOver = function&#40;&#41; &#123; //εδώ δε γίνεται τίποτα. δοκίμασα και να βάλω συγκεκριμένο instance δηλ _root.count0.onRollOver.... και τίποτα.
         trace&#40;"over"&#41;;
      &#125;;
   &#125;
&#125;
Αφού όταν το κάνω trace μου δίνει κανονικά ότι βρίσκει το clip γιατί στην επόμενη γραμμή δεν το καταλαβαίνει?
Ένα άλλο παράξενο είναι ότι αν βγάλω τον tracer έξω από την function (και αναζητήσω κάποιο Instance px cont0) μου δίνει undefined. Μάλλον εκεί παίζει κάτι.

Καμιά ιδέα?

Άβαταρ μέλους
Marinos Stergiou
Δημοσιεύσεις: 741
Εγγραφή: 12 Νοέμ 2006 14:49
Τοποθεσία: Τριτοκοσμική

[AS2] Πρόβλημα στο functionality εικόνων που φορτώνουν

Δημοσίευση από Marinos Stergiou » 07 Ιουν 2008 20:25

Εχεις τις φωτογραφίες στον ίδιο φάκελο με το movie clip (όπως θα έπρεπε) ?

Σου κάνει το από κάτω ?

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

var xmlImages&#58;XML = new XML&#40;&#41;;
xmlImages.ignoreWhite = true;
var imgHolder&#58;String;
xmlImages.onLoad = function&#40;bSuccess&#58;Boolean&#41;&#58;Void &#123;
if &#40;bSuccess&#41; &#123;
var xnRoot&#58;XMLNode = this.firstChild;
var xnFirstItem&#58;XMLNode = xnRoot.firstChild;
var xnTitle&#58;XMLNode = xnFirstItem.firstChild;
imgHolder = xnTitle.firstChild.nodeValue;
trace&#40;imgHolder&#41;;
imageNumber.text = imgHolder;
loadMovie&#40;imgHolder , 1&#41;;
&#125;
&#125;;
xmlImages.load&#40;"images.xml"&#41;;

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

[AS2] Πρόβλημα στο functionality εικόνων που φορτώνουν

Δημοσίευση από HeRu » 08 Ιουν 2008 14:10

Μάλλον το πρόβλημα πρέπει να είναι το load που κάνεις. Ο τρόπος που δουλεύει το Flash είναι λίγο περίεργος, όταν κάνεις load κάνει ένα "reset" το movie clip.

Οπότε μάλλον θα πρέπει να βάλεις τους event listeners σε κάποιο επόμενο frame. Βέβαια το ποιο σωστό είναι να φτιάξεις κάποιο preloader για κάθε φωτογραφία και να αναθέσεις το listener όταν τελειώσει το φόρτωμα.

Κάτι τέτοιο μάλλον θα δουλέψει...

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

var slide_xml = new XML&#40;&#41;;
slide_xml.ignoreWhite = true;
slide_xml.onLoad = function&#40;success&#41; &#123;
   if &#40;success&#41; &#123;
      processSlide&#40;slide_xml&#41;;
   &#125;
&#125;;
slide_xml.load&#40;'slide.xml'&#41;;

function processSlide&#40;xmlDoc_xml&#41; &#123;
   var imgArray = Array&#40;&#41;;
   for &#40;var n = 0; n<xmlDoc_xml.firstChild.childNodes&#91;1&#93;.childNodes.length; n++&#41; &#123;
      imgArray.push&#40;xmlDoc_xml.firstChild.childNodes&#91;1&#93;.childNodes&#91;n&#93;.childNodes&#41;;
      this.createEmptyMovieClip&#40;"cont"+n,n&#41;;
      with &#40;_root&#91;"cont"+n&#93;&#41; &#123;
         _xscale = _yscale=10;
         _y = 400;
         _x = 5+n*65;
         _alpha = 70;
      &#125;
      loadMovie&#40;"fotos/"+imgArray&#91;n&#93;, "cont"+n&#41;;
   &#125;
   // ************************************
   this.onEnterFrame = function &#40;&#41; &#123;
	   // Ο κώδικας εδώ θα εκτελεστεί στο επόμενο frame
	   delete this.onEnterFrame
	   for &#40;var n = 0; n<xmlDoc_xml.firstChild.childNodes&#91;1&#93;.childNodes.length; n++&#41; &#123;
		   _root&#91;"cont"+n&#93;.onRollOver = function&#40;&#41; &#123;
			 trace&#40;"over"&#41;;
		  &#125;;
	   &#125;
	&#125;
   // ************************************
&#125;

Άβαταρ μέλους
Garakatsamol
Honorary Member
Δημοσιεύσεις: 919
Εγγραφή: 08 Μάιος 2007 00:27

[AS2] Πρόβλημα στο functionality εικόνων που φορτώνουν

Δημοσίευση από Garakatsamol » 09 Ιουν 2008 14:16

Heru δυστυχώς δε δουλεύει ο τρόπος που προτείνεις.
Το έκανα τελικά με MovieClipLoader όπως μου συνέστησαν και κάπου αλλού
και δούλεψε

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

var slide_xml = new XML&#40;&#41;;
slide_xml.ignoreWhite = true;
slide_xml.onLoad = function&#40;success&#41; &#123;
	if &#40;success&#41; &#123;
		processSlide&#40;slide_xml&#41;;
	&#125;
&#125;;
slide_xml.load&#40;'slide.xml'&#41;;



function processSlide&#40;xmlDoc_xml&#41; &#123;

   for &#40;var n = 0; n<xmlDoc_xml.firstChild.childNodes&#91;1&#93;.childNodes.length; n++&#41; &#123;

      mc = _root.createEmptyMovieClip&#40;"cont"+n, _root.getNextHighestDepth&#40;&#41;&#41;;
      mc._x = 5+n*65;
      mc._y = 400;
      mc.thumbImg = "fotos/"+xmlDoc_xml.firstChild.childNodes&#91;1&#93;.childNodes&#91;n&#93;.childNodes;
      //trace&#40;mc._x&#41;
      with &#40;mc&#41; &#123;

         var mclListener&#58;Object = new Object&#40;&#41;;
         mclListener.onLoadStart = function&#40;target_mc&#58;MovieClip&#41; &#123;
            trace&#40;target_mc+" Loading Started"&#41;;
         &#125;;
         mclListener.onLoadComplete = function&#40;target_mc&#58;MovieClip&#41; &#123;
            trace&#40;target_mc+" Loading ompleted"&#41;;
         &#125;;
         mclListener.onLoadInit = function&#40;target_mc&#58;MovieClip&#41; &#123;
            target_mc._xscale = _yscale=10;
            target_mc._alpha = 70;
            target_mc.onRollOver = function&#40;&#41; &#123;
               trace&#40;this&#41;;
            &#125;;
            target_mc.onRollOut = function&#40;&#41; &#123;
               trace&#40;this&#41;;
            &#125;;
            target_mc.onRelease = function&#40;&#41; &#123;
               trace&#40;this&#41;;
            &#125;;
         &#125;;

         mclListener.onLoadProgress = function&#40;target_mc&#58;MovieClip&#41; &#123;
            trace&#40;"Percent Loaded&#58; "+Math.round&#40;target_mc.getBytesLoaded&#40;&#41;/target_mc.getBytesTotal&#40;&#41;*100&#41;&#41;;
         &#125;;
         var image_mcl&#58;MovieClipLoader = new MovieClipLoader&#40;&#41;;
         image_mcl.addListener&#40;mclListener&#41;;
         image_mcl.loadClip&#40;_root.mc.thumbImg,_root.mc&#41;;

      &#125;


   &#125;
&#125;
Ευχαριστώ για τις απαντήσεις. Να'στε καλά

Απάντηση

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

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

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