webForumDet fria alternativet

attachMovie i loop, rollOver...

Flash

4 svar · 412 visningar · startad av crisse6

Medlem sedan dec. 20002 526 inlägg
Frågan#1

Hej!

Ska ladda in mina menyer via xml. Får in värdet från xml filen, och är väldigt nära att lösa detta känns det som. Det enda som skapas med två olika instanser (verkar det som) är textfälten. Resten verkar få samma. Iaf. Har skrivit denna kod, men får inte den att tweena, men hårdkodar jag mcNewsDrag20 så tweenar den.

yValue=50;
	for(i=0;i<meny_showcase.length;i++) {
		aShowcase.push(meny_showcase[i]);
		yValue += 16;
		_root.attachMovie("News","mcNews2"+i,getNextHighestDepth(),{_x:522,_y:yValue});
		_root.attachMovie("NewsDrag", "mcNewsDrag2"+i,getNextHighestDepth(),{_x:522,_y:yValue,_width:1,height:16});		
		_root.createTextField("xmlShowcase"+i, getNextHighestDepth(), 522, yValue, 150, 16);	
		_root["xmlShowcase"+i].text = aShowcase[i];
		_root["xmlShowcase"+i].border = false;	
		_root["xmlShowcase"+i].type = "static"
		_root["xmlShowcase"+i].selectable = false;		
		
		_root["mcNews2"+i].onRollOver = function() {
		_root["mcNewsDrag2"+i]._alpha = 100;
   		_root["mcNewsDrag2"+i].tween(["_xscale","_yscale"],[125,100],0.5,"easeOutBounce");		
   		trace(mcNewsDrag20._width);
		soundBlip.start();
   		_root["mcNews2"+i].onRelease = function(sCase) {
		sCase = 'Fall';
		laddaXML(sCase);
			}
		}
Medlem sedan maj 2003750 inlägg
#2

Anledningen till att tweenen inte fungerar är ju för att när _root["mcNews2"+i].onRollOver körs så har ju denna for-loops körtsklart för "länge" sedan och i är något helt annat värde. Det du måste göra är att spara en referens till rätt mcNewsDrag

... snip ...
_root["mcNews2"+i].mcNewsDrag = _root["mcNewsDrag2"+i];
_root["mcNews2"+i].onRollOver = function() {
    this.mcNewsDrag._alpha = 100;
    this.mcNewsDrag.tween(["_xscale","_yscale"],[125,100],0.5,"easeOutBounce");

... snip ...

Dessutom vet jag inte om det är typo men jag hittar inget slut på onRollOver funktionen.

/Mirandir

Medlem sedan dec. 20002 526 inlägg
#3

Har jag sagt innan att jag älskar dig mirandir? :)

Medlem sedan dec. 20002 526 inlägg
#4

Tjena igen. Det funkade ju fint liksom. Men! Nu när jag klickar på nån av dom så laddar den inte som den inte in som den ska... Hmm why?

Bifogar hela inladdningen av xml här. Det är väl främst loopen man bör kolla i...

//XML inladdning
function laddaXML(sCase) {
import com.xfactorstudio.xml.xpath.*;
var aURL:Array = new Array();
var aDesc:Array = new Array();
var aBredd:Array = new Array();
var nNasta:Number = 0;
var aShowcase:Array = new Array();
myDoc = new XML();
myDoc.ignoreWhite = true;
myDoc.onLoad = function(){
	var products = XPath.selectNodes(this,"/slideshow/foton[@location='" +sCase +"']/photo@url");
	var textInfo = XPath.selectNodes(this,"/slideshow/foton[@location='" +sCase +"']/photo@description");
	var bredd = XPath.selectNodes(this,"/slideshow/foton[@location='" +sCase +"']/photo@width");
	var meny_showcase = XPath.selectNodes(this,"/slideshow/meny[@vilken='Showcase']/menytitle@val");
	
	for(i=0;i<products.length;i++) {
		aURL.push(products[i]);			
		aDesc.push(textInfo[i]);
		aBredd.push(bredd[i]);	
		}
	yValue=50;
	for(i=0;i<meny_showcase.length;i++) {
		aShowcase.push(meny_showcase[i]);
		yValue += 16;
		_root.attachMovie("News","mcNews2"+i,getNextHighestDepth(),{_x:522,_y:yValue});
		
		_root.attachMovie("NewsDrag", "mcNewsDrag2"+i,getNextHighestDepth(),{_x:522,_y:yValue,_width:1,height:16});
		_root.createTextField("xmlShowcase"+i, getNextHighestDepth(), 522, yValue, 150, 16);
		_root["xmlShowcase"+i].text = aShowcase[i];
		_root["xmlShowcase"+i].border = false;	
		_root["xmlShowcase"+i].type = "static";
		_root["xmlShowcase"+i].selectable = false;		
		
		_root["mcNews2"+i].mcNewsDrag = _root["mcNewsDrag2"+i];
		_root["mcNews2"+i].onRollOver = function() {
		this.mcNewsDrag._alpha = 100;
    	this.mcNewsDrag.tween(["_xscale","_yscale"],[125,100],0.5,"easeOutBounce");		
		soundBlip.start();
   		_root["mcNews2"+i].onRelease = function(sCase) {
		sCase = 'Fall';
		laddaXML(sCase);
			}
		}
		_root["mcNews2"+i].onRollOut = function() {
  		this.mcNewsDrag.tween(["_xscale","_yscale"],[0,100],3,"easeOut");
   		}
		//HÄR E DET SLUTT!
}	
	
	//mcBakgrund.mcHolder._alpha = 100;
	var myAlpha:Alpha = new Alpha(mcBakgrund.mcHolder,[0,100],3000,Elastic.easeInOut);
			myAlpha.run()
	var myAlpha2:Alpha = new Alpha(mcBakgrund.mcProjectInfo,[0,100],3000,Elastic.easeInOut);
			myAlpha2.run()
	mcBakgrund.mcHolder.loadMovie(aURL[nNasta]);
	
	mcBakgrund.mcProjectInfo.txtInfoText.text = aDesc[nNasta];
	txtCurrent.text = (nNasta+1)+ "/" + products.length;	
	sBredden = aBredd[nNasta];
	//Navigering i slideshow	
	btnNext.onRelease = function() {
		if(nNasta>=products.length-1) {
		nNasta=0;
		}
		else {
		nNasta++;
		}
		easeSpeed = 3; // the higher, the slower
		target_xscale = 330; // start at a scale of 100%
		mcBakgrund.mcVitbakgrund._xscale -= (target_xscale + mcBakgrund.mcVitbakgrund._xscale)/easeSpeed;
		target_yscale = 20827; // start at a scale of 100%
		mcBakgrund.mcTextdrag._yscale -= (target_yscale + mcBakgrund.mcTextdrag._yscale)/easeSpeed;

		var myAlpha:Alpha = new Alpha(mcBakgrund.mcHolder,[0,100],3000,Elastic.easeInOut);
			myAlpha.run()						
		var myAlpha2:Alpha = new Alpha(mcBakgrund.mcProjectInfo,[0,100],3000,Elastic.easeInOut);
			myAlpha2.run()
			
		mcBakgrund.mcHolder.loadMovie(aURL[nNasta]);
		mcBakgrund.mcProjectInfo.txtInfoText.text = aDesc[nNasta];
		txtCurrent.text = (nNasta+1)+ "/" + products.length;
		
	}
	btnPrevious.onRelease = function() {
		if(nNasta<=0) {
		nNasta=0;
		}
		else {
		nNasta--;
		}
		easeSpeed = 3; // the higher, the slower
		target_xscale = 100; // start at a scale of 100%
		mcBakgrund.mcVitbakgrund._xscale -= (target_xscale + mcBakgrund.mcVitbakgrund._xscale)/easeSpeed;
		target_yscale = 20827; // start at a scale of 100%
		mcBakgrund.mcTextdrag._yscale -= (target_yscale + mcBakgrund.mcTextdrag._yscale)/easeSpeed;
		
		var myAlpha:Alpha = new Alpha(mcBakgrund.mcHolder,[0,100],3000,Elastic.easeInOut);
			myAlpha.run()		
		var myAlpha2:Alpha = new Alpha(mcBakgrund.mcProjectInfo,[0,100],3000,Elastic.easeInOut);
			myAlpha2.run()
		mcBakgrund.mcHolder.loadMovie(aURL[nNasta]);
		mcBakgrund.mcProjectInfo.txtInfoText.text = aDesc[nNasta];
		txtCurrent.text = (nNasta+1) + "/" + products.length;
		
		}
}	

myDoc.load("slideshow.xml");
}
//
Medlem sedan dec. 20002 526 inlägg
#5

Okej. Det där löstes genom att lägga onRelease utanför onRollOver... men ett problem. Så fort jag klickar på någon av menyerna som är hårdkodat/xml inladdat så läggs det som ett vitt mc över mina xml menyer. Dom går å klicka på ändå eftersom mcNewsDrag ligger där vid kanten. Men varför blir det så?

272 ms totalt · 3 externa anrop · v20260731065814-full.767b4345
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)