Kom ihåg mig?
Home Menu

Menu


Question Making onRelease events after XML loadin

Ämnesverktyg Visningsalternativ
Oläst 2008-04-15, 13:30 #1
bQn bQn är inte uppkopplad
Nykomling
 
Reg.datum: Oct 2004
Inlägg: 13
bQn bQn är inte uppkopplad
Nykomling
 
Reg.datum: Oct 2004
Inlägg: 13
Hey! Ive searched some but didnt find anything that could resolve my problem.

Im making a imagegallery, it first loads images from xml and then puts it in the object oImages.

Then I make buttons with oImages.thumb, and place them and so on.

The problem is that I know want to make the oImages.thumb onRelease events. but they cant find the corresponding i so the oImage.Image can be loaded.

Ill post the code and some things that Ive tried..


Kod:
//temporary
var nThumbWidth:Number = 120;
var nThumbHeight:Number = 120;


//Här kan du ställa in x och y positionen för första rutan
var nThumbReset:Number = 10;

//nImagesPerRow är antalet bilder du vill ha på varje rad
var nImagesPerRow:Number = 5;
var nImagesRowCheck:Number = 0;

//Avståndet mellan dom olika thumbsen
var nThumbXSpace:Number = 10;
var nThumbYSpace:Number = 10;

//dessa används i koden
var nTotalImages:Number = 0;
var nThumbXSpaceVar:Number = nThumbWidth + nThumbXSpace;
var nThumbRowDiff:Number = nThumbHeight+ nThumbYSpace;
var nThumbXPlace:Number = nThumbReset;
var nThumbYPlace:Number = nThumbReset;

var oImages:Object = new Object();

var x:XML = new XML();
x.ignoreWhite = true;


_root.createEmptyMovieClip("holder",this.getNextHighestDepth());
_root.createEmptyMovieClip("fadeScreen",this.getNextHighestDepth());
_root.createEmptyMovieClip("bigImageHolder",this.getNextHighestDepth());

var loader:MovieClipLoader = new MovieClipLoader();

var preload:Object = new Object();
loader.addListener(preload);

x.onLoad = function(success) {
  if(success) {
    //ladda till objekt
    var aPhotos:Array = this.firstChild.childNodes;
    
    for(var i:Number = 0;i<aPhotos.length;i++) {
      oImages["image"+i] = {image:aPhotos[i].attributes.image, thumb:aPhotos[i].attributes.thumb}
      nTotalImages+=1;
    }
  
    for(var i:Number = 0; i<nTotalImages; i++) {      
      holder.createEmptyMovieClip("firstHolder"+i, holder.getNextHighestDepth());
      holder["firstHolder"+i].createEmptyMovieClip("imageHolder",holder["firstHolder"+i].getNextHighestDepth());
      loader.loadClip(oImages["image"+i].thumb,holder["firstHolder"+i].imageHolder);
      
      //placerar objekten
      holder["firstHolder"+i].imageHolder._x += nThumbXPlace;
      holder["firstHolder"+i].imageHolder._y += nThumbYPlace;
      
      //fixar avståndet till nästa i x led
      nThumbXPlace += nThumbXSpaceVar;
      
      //räknar upp för att kunna byta rads
      nImagesRowCheck +=1;
      
      //byter rad och nollställer
      if(nImagesRowCheck >= nImagesPerRow) {
        nImagesRowCheck = 0;
        nThumbXPlace = nThumbReset;
        nThumbYPlace += nThumbRowDiff;
      }
      
      
      //this returns 11 (the amount of objects) i want it to return the number for the specific button
//      holder["firstHolder"+i].onRelease = function () {
//        trace(i);
//      }
      

      //I figured that if the movement of the objects works, then shouldnt also this work?
      //but it didnt =/, is it maybe because imageHolder gets overwritten when i load something in it?
//      holder["firstHolder"+i].imageHolder.onRelease = function () {
//        trace(i);
//      }
//      
      //the trace works as it should, it coutns to 11 ((the amount of objects))
      //trace(i);

  }
    if(!success) {
      trace("Fel vid laddning av xml");
    }
  }
}


preload.onLoadInit = function(target){
  
  //i thought that i could instead make the buttons when every objet was
  //loaded but the problem is that the i from the loop is lost (because the init is after the exec of the for loop)
  //and I can only retrive the name of the object through target
//  target.onRelease = function () {
//    trace(target);
//    
//    //
//    
//  /

}



x.load("test.xml");


Ive tried this


Kod:
//this returns 11 (the amount of objects) i want it to return the number for the specific button
//      holder["firstHolder"+i].onRelease = function () {
//        trace(i);
//      }

and this

Kod:
 //I figured that if the movement of the objects works, then shouldnt also this work?
      //but it didnt =/, is it maybe because imageHolder gets overwritten when i load something in it?
//      holder["firstHolder"+i].imageHolder.onRelease = function () {
//        trace(i);
//      }

and this

Kod:
preload.onLoadInit = function(target){
  
  //i thought that i could instead make the buttons when every objet was
  //loaded but the problem is that the i from the loop is lost (because the init is after the exec of the for loop)
  //and I can only retrive the name of the object through target
//  target.onRelease = function () {
//    trace(target);
//    
//    //
//    
//  /

och detta fungerar ju däremot

Kod:
      //the trace works as it should, it coutns to 11 ((the amount of objects))
      //trace(i);
bQn är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-04-15, 15:25 #2
blixtsystems blixtsystems är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2005
Inlägg: 442
blixtsystems blixtsystems är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2005
Inlägg: 442
Du skall sätta egenskaper på dina holder clips efter loadClip laddat klart.
Jag skulle rekommendera att du kör med MovieClipLoader istället och använder dess onLoadInit event.
blixtsystems är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-04-15, 15:47 #3
bQn bQn är inte uppkopplad
Nykomling
 
Reg.datum: Oct 2004
Inlägg: 13
bQn bQn är inte uppkopplad
Nykomling
 
Reg.datum: Oct 2004
Inlägg: 13
Citat:
Originally posted by blixtsystems@Apr 15 2008, 15:25
Du skall sätta egenskaper på dina holder clips efter loadClip laddat klart.
Jag skulle rekommendera att du kör med MovieClipLoader istället och använder dess onLoadInit event.
Jag har använt mig av MovieClipLoader ..? eller har jag gjort fel?

Använder onLoadInit också.. se sista kodstycket i första kodrutan..
bQn är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-04-15, 19:09 #4
blixtsystems blixtsystems är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2005
Inlägg: 442
blixtsystems blixtsystems är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2005
Inlägg: 442
Jo...nu ser jag att du kört med MCL, dock så har du inte använt onLoadInit för att sätta egenskaper och handlers då bilden laddat klart.
Du skapar din MCL och lyssnare utanför funktionen, vilket inte verkar riktigt korrekt.
För varje clip du skapar skall du ha en ny MCL och lyssnare.
Du kan du sätta nummer från "i" genom att passa den i lyssnar objektet som så:
preload.num=i;

Sedan i onLoadInit kan du lägga till variabeln för ditt clip med:
target.num=this.num;
blixtsystems är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 02:27.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017