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
 


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 15:30.

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