Verzweiflung bei Bilderkarussel

Also eins muss ich mal loswerden, ich hab ein "d" oben nach dem Fragezeichen nicht Groß geschrieben und sofort werde ich wieder ermahnt, oben wird anstatt auf das Problem einzugehen lediglich darauf verwiesen das ich die "Code" tags benutzen soll.

Geht es hier darum Probleme zu lösen oder zu ermahnen ?
Ich hab bereits häufiger hier im Forum gesehen das extremst pillig mit soetwas umgegangen wird und das sich schon eine Menge user darüber beschwehrt haben.

Schön und gut ich stimme zu das man eine halbwegs ordentliche Zeichensetzung UND Grammatik besitzen sollte, aber wegen kleinsten Fehlern bzw. pingeligen Flüchtigkeitsfehlern könnt ihr euch das echt sparen...
Mein Beitrag ist ja dadurch in keinster Weise unleserlich geworden.

Ansonsten wird hier irgendwie (auch durch manche User, die scheinbar ihre gesamten Beiträge nur durch Beiträge in der Art von "bitte Nettiquette beachten" bekommen haben) der Sinn dieses forums immer weiter verfehlt...

Nimms nicht übel, aber das musste ich mal loswerden.
-

Mit "unten" meinte ich lediglich die untere RollOver function.
Im Code hatte ich 2 davon, eine in der xml load und eine nach dieser function.

Ich denke das hängt irgendwie wieder mit den Instanzen zusammen, das ich irgendwo ein this benutzen muss wenn ich vor habe, das mit in der Schleife von der rollOver function in der oberen (xml load) function auszugeben.
Soweit richtig ? Evtl. siehst du den Fehler ja sogar beim überfliegen.

Danke, Gruß
Ron


edit:

hier nochmal der Code:
Code:
import mx.utils.Delegate;

var numOfItems:Number;
var radiusX:Number = 270;
var radiusY:Number = 100;
var centerX:Number = Stage.width / 2;
var centerY:Number = Stage.height / 2;
var speed:Number = 0.05;
var perspective:Number = 1;
var home:MovieClip = this;
var tooltip:MovieClip = this.attachMovie("tooltip","tooltip",10000);
tooltip._alpha = 0;

var xml:XML = new XML();
xml.ignoreWhite = true;
xml.load("icons.xml");

xml.onLoad = function()
{
	var nodes = this.firstChild.childNodes;
	numOfItems = nodes.length;

	for(var i=0;i<numOfItems;i++)
	{
		var t = home.attachMovie("item","item"+i,i+1);
		t.angle = i * ((Math.PI*2)/numOfItems);
		t.onEnterFrame = mover;
		
		t.toolText = nodes[i].attributes.tooltip;
		t.toolText2 = nodes[i].attributes.tooltip2;		
		t.icon.inner.loadMovie(nodes[i].attributes.image);
		t.r.inner.loadMovie(nodes[i].attributes.image);
		
		
		t.r._width = t.r._width/2.7;
		t.r._height = t.r._height/2.7;
						
		t.icon._width = t.icon._width/2.7;
		t.icon._height = t.icon._height/2.5;
				
		t.icon.grayShade._width = t.r._width*2.7;
		t.icon.grayShade._height = this.icon._height;
		
		t.icon.grayShade.onRollOver = function() {
			trace(t.tooltip.tipText.text);
        	this._alpha = 0;	
			test;
		}
		
		
		t.icon.grayShade._alpha = 60;
				
		t.icon.grayShade.onRollOut = function(){ 
    		this._alpha = 60;	
		}
		
		//t.icon.onRollOver = over;
		//t.icon.onRollOut  = out;
		//t.icon.onRelease  = released;

		t.icon._alpha = 100;
		trace(t.icon.grayShade._width);
	}
}

function over()
{
        t.tooltip.tipText.text = this._parent.toolText;
		t.tooltip.tipText2.text = this._parent.toolText2;		
     	t.tooltip._alpha = 100;
		t.tooltip.onEnterFrame = Delegate.create(this,moveTip)
}

function out()
{	
	t.icon.grayShade._alpha = 60;
	
	home.tooltip.tipText.text = this._parent.toolText;
	home.tooltip.tipText2.text = this._parent.toolText2;
	home.tooltip._alpha = 0;
	home.tooltip.onEnterFrame = Delegate.create(this,moveTip);
}

function released()
{
	trace(this._parent.toolText);
}

function moveTip()
{
	home.tooltip._x = this._parent._x;
	home.tooltip._y = this._parent._y - this._parent._height/1.7;
}


function mover()
{
	this._x = Math.cos(this.angle) * radiusX + centerX;
	this._y = Math.sin(this.angle) * radiusY + centerY;
	var s = (this._y - perspective) /(centerY+radiusY-perspective);
	this._xscale = this._yscale = s*120;
	this.angle += this._parent.speed;
	this.swapDepths(Math.round(this._xscale) + 100);
}

this.onMouseMove = function()
{
	speed = (this._xmouse-centerX)/20500;
}
 
Also eins muss ich mal loswerden, ich hab ein "d" oben nach dem Fragezeichen nicht Groß geschrieben und sofort werde ich wieder ermahnt, oben wird anstatt auf das Problem einzugehen lediglich darauf verwiesen das ich die "Code" tags benutzen soll.

Geht es hier darum Probleme zu lösen oder zu ermahnen ?

Du bekommst hier wertvolles Fachwissen für lau und alles was wir dafür verlangen ist nunmal eine geordnete Rechtschreibung. Andere verlangen viele teure Euros. Ich bin in jedem Post auf dein Problem eingegangen, habe dich dann nur nebenbei kurz ermahnt - das hast du ignoriert. Dann habe ich in meinem nächsten Post, auch lediglich als Zusatz, genau die selbe Ermahnung nochmal in Groß geschrieben. Ich denke es ist nicht wirklich dein Platz sich über die Regeln des Forums aufzuregen.

Auch wenn ich dir zustimmen muss, dass er Post von awortmeier unnötig war. Ich habe damit nichts zu tun und du kannst dich trotzdem an die hier geltenden Regeln halten.

Wenn du innerhalb der for-Schleife eine Funktion definierst, dann sind die Variablen der Schleife darin nicht mehr verfügbar. Flash packt die beim Compilieren als Ganzes wo anders hin, ohne sich den Inhalt anzuschauen. Also kannst du innerhalb der RollOver und RollOut-Funtkionen nicht auf t zugreifen. In deinem Fall ist t außerhalb der for-Schleife definiert, es bleibt also immer der letzte Wert von t der for-Schleife darin gespeichert. Wenn du jetzt von anderen Funktionen darauf zugreifst tust du das immer auf den letzten erstellten Movieclip. Ergo musst du, wie von mir vor 2 Posts schon suggeriert, entsprechende Aufrufe durch this ersetzen.
 
Naja, ich denke es ist mehr oder weniger ein geben und nehmen.
Für meine Fragen die ich hier stelle, gebe ich Antworten in einem anderen Themengebiet/ Forum, selbst dann, wenn jemand bei einigen Wörtern nicht ganz auf die Rechtschreibung oder Groß-und Kleinschreibung geachtet hat.

Ich gebe dir Recht, das du mich nur leicht darauf verwiesen hast, aber meiner Meinung nach war es eben überflüssig, da ich aus flüchtigem schreiben (im Büro) einfach keine Zeit hatte jeden Satz exakt zu prüfen.
Du hättest einfach bei solch geringfügigen "Fehlerchen" nachsichtiger sein sollen, das ist alles.

Ja, ich war durch awortmeiers Beitrag evtl. auch schon etwas vorgeprägt.
Ich fands Schade, das die erste ANtwort komplett am Thema vorbei ging anstatt mir zu helfen.
Aber gut, sei es drum :) !

Ja, das war mir irgendwo schon bewusst, das da kein Zugriff auf die Variable möglich ist, aber global deklarieren hat nicht funktioniert und wie man bei Flash aus anderen Funktionen auf die Instanzen zugreift ist mir noch nicht ganz klar, im Moment friemel ich mich mehr oder weniger durch testen durch.

Im moment ist ja der Zugriff von außerhalb durch :

home.tooltip.toolText.text = ....;

möglich, packe ich das jetzt in die Schleife (in die Rollover / Out function), muss ich an dieser Stelle ja irgendwas durch this ersetzen wie du schon sgtest.
Ich habe es mit this.tooltip.tooltext.text versucht - kein Erfolg.

Mein nächster Versuch würde evtl. this.text sein ? Richtige Richtung ?


Danke, Gruß
Ron
 
Wie dem auch sei.

In der fla, die du mal gepostet hast, war der Code doch etwas anders als hier gepostet oder? Ich kann mich nur wiederholen: ersetz die komischen Pfade mit t usw. durch this in den onRollOver und onRollOut-Funktionen und es funktioniert.
 
Hey,

ja das verstehe ich wohl, aber ich weiß nicht wie...
in meinem aktuellen Code habe ich die Funktion move(9 mit der ich eigentlich jeden einzelnen schriftzug an die richtige Position bringen möchte.

Nur wie mache ich das von der Schleife aus ?
Der Inhalt der einzelnen Schriftobjekte wird oben in der Schleife korrekt ausgegeben, aber x, y kann ich damit nicht ansteuern. Und ich denke mal in der move Funktion müsste dann auch etwas mit this stehen ?
Das komische ist, das wenn ich in der function ne Ausgabe mache, dann zeigt er die gar nicht an, nichtmal dann wenn es : "trace("test");" ist...

Ich verstehs nicht...
Code:
import mx.utils.Delegate;

var numOfItems:Number;
var radiusX:Number = 270;
var radiusY:Number = 100;
var centerX:Number = Stage.width / 2;
var centerY:Number = Stage.height / 2;
var speed:Number = 0.05;
var perspective:Number = 1;
var home:MovieClip = this;
var tooltip:MovieClip = this.attachMovie("tooltip","tooltip",10000);
tooltip._alpha = 0;

var xml:XML = new XML();
xml.ignoreWhite = true;
xml.load("icons.xml");

xml.onLoad = function()
{
	var nodes = this.firstChild.childNodes;
	numOfItems = nodes.length;

	for(var i=0;i<numOfItems;i++)
	{
		var t = home.attachMovie("item","item"+i,i+1);
		t.angle = i * ((Math.PI*2)/numOfItems);
		t.onEnterFrame = mover;
		
		t.toolText = nodes[i].attributes.tooltip;
		t.toolText2 = nodes[i].attributes.tooltip2;		
		t.icon.inner.loadMovie(nodes[i].attributes.image);
		t.r.inner.loadMovie(nodes[i].attributes.image);
		
		
		t.r._width = t.r._width/2.7;
		t.r._height = t.r._height/2.7;
						
		t.icon._width = t.icon._width/2.7;
		t.icon._height = t.icon._height/2.5;
				
		t.grayShade._width = t.icon._width;
		t.grayShade._height = t.icon._height;
		

		t.grayShade.onRollOver = function() {
			trace(this);
        	this._alpha = 0;	

			this.tipText = this._parent.toolText;
			trace(this.tipText);
			
			this.tipText2 = this._parent.toolText2;		
    	 	trace(this.tipText2);
			
			this.tipText.onEnterFrame = Delegate.create(this.tipText,moveTip);
			this.tipText._alpha = 100;
					
		}
		
		t.grayShade._alpha = 60;
				
		t.grayShade.onRollOut = function(){ 
    		this._alpha = 60;	
		}
				

		//t.icon.onRollOver = over;
		//t.icon.onRollOut  = out;
		t.icon.onRelease  = released;

		t.icon._alpha = 100;
		trace(t.icon.grayShade._width);
	}
}

function over()
{
}

function out()
{	
}

function released()
{
	trace(this._parent.toolText);
}

function moveTip()
{
	trace("test");
	home.tooltip._x = this._parent._x;
	home.tooltip._y = this._parent._y - this._parent._height/1.7;
}


function mover()
{
	this._x = Math.cos(this.angle) * radiusX + centerX;
	this._y = Math.sin(this.angle) * radiusY + centerY;
	var s = (this._y - perspective) /(centerY+radiusY-perspective);
	this._xscale = this._yscale = s*120;
	this.angle += this._parent.speed;
	this.swapDepths(Math.round(this._xscale) + 100);
}

this.onMouseMove = function()
{
	speed = (this._xmouse-centerX)/20500;
}

keiner eine Idee ? :(

ich hab es mir soweit selbst zusammengebaut, hab lediglich den start mit der Bewegung einem videoTutorial entnommen.
Klar, mach ich. Siehe Anhang.

btw. sieht jetzt etwas anders aus, bis hierhin hab ich den grauen Schatten über den Bildern und der Text wird angezeigt.
Das Problem ist das ich Versuche auf die einzelnen Instanzen des grayShade von außerhalb der Schleife (Load funktion) zuzugreifen.
Habe gedacht wird wohl kein Problem sein, aber ich hab jetzt alle Kombinationen mit this und ohne this durchprobiert und getraced. Ohne Erfolg.

Wenn ich für grayShade ein rollOver anstelle des icon rollover nehme, dann geht der grayShader, aber die Schrift ist nur noch sporadisch da...
Es ist echt ein Kreuz, ich kriegs nur hin das eins vn beidem läuft, aber nicht beides zusammen.

Danke für deine Hilfe, Gruß
Ron
 

Anhänge

Zuletzt bearbeitet von einem Moderator:
Code:
import mx.utils.Delegate;

var numOfItems:Number;
var radiusX:Number = 270;
var radiusY:Number = 100;
var centerX:Number = Stage.width/2;
var centerY:Number = Stage.height/2;
var speed:Number = 0.05;
var perspective:Number = 1;
var home:MovieClip = this;
// var toolti:MovieClip = this.attachMovie("tooltip","toolti",10000);XX
_root.attachMovie("tooltip","toolti",10000);
toolti._alpha = 0;

/*var xml:XML = new XML();XX
xml.ignoreWhite = true;XX
xml.load("icons.xml");XX*/

//xml.onLoad = function()XX
//{XX
// var nodes = this.firstChild.childNodes;XX
numOfItems = 3;// numOfItems = nodes.length; XX

for (var i = 0; i<numOfItems; i++) {
	var t = home.attachMovie("item", "item"+i, i+1);
	t.angle = i*((Math.PI*2)/numOfItems);
	t.onEnterFrame = mover;

	t.r._width = t.r._width/2.7;
	t.r._height = t.r._height/2.7;

	t.icon._width = t.icon._width/2.7;
	t.icon._height = t.icon._height/2.5;

	t.grayShade._width = t.icon._width;
	t.grayShade._height = t.icon._height;
	t.grayShade._alpha = 50;

	t.toolText = nodes[i].attributes.tooltip;
	t.toolText2 = nodes[i].attributes.tooltip2;
	//t.icon.inner.loadMovie(nodes[i].attributes.image);XX
	//t.r.inner.loadMovie(nodes[i].attributes.image);XX

	//t.icon.onRollOver = textIn;
	//t.icon.onRollOut  = textOut;
	t.icon.onRelease = released;


	t.grayShade.onRollOver = function() {
		trace(this);
		this._alpha = 0;
		_root.toolti.tipText.text = "BLA";// this._parent.toolText;XX
		_root.toolti.tipText2.text = "BLUBB";// this._parent.toolText2; XX
		_root.toolti.onEnterFrame = Delegate.create(this, moveTip);
		_root.toolti._alpha = 100;
		//textIn();
		trace(this.tipText2);
	};
	t.grayShade.onRollOut = function() {
		_root.toolti.tipText.text = this._parent.toolText;
		_root.toolti.tipText2.text = this._parent.toolText2;
		_root.toolti.onEnterFrame = Delegate.create(this, moveTip);
		_root.toolti._alpha = 0;
		this._alpha = 60;
	};

}
//}XX



function released() {
	trace(this._parent.toolText);
}

function moveTip() {
	_root.toolti._x = this._parent._x;
	_root.toolti._y = this._parent._y-this._parent._height/1.7;
}

function textMover() {
	this._x = Math.cos(this.angle)*radiusX+centerX;
	this._y = Math.sin(this.angle)*radiusY+centerY;
	var s = (this._y-perspective)/(centerY+radiusY-perspective);
	this._xscale = this._yscale=s*120;
	this.angle += this._parent.speed;
	this.swapDepths(Math.round(this._xscale)+100);
}

function mover() {
	this._x = Math.cos(this.angle)*radiusX+centerX;
	this._y = Math.sin(this.angle)*radiusY+centerY;
	var s = (this._y-perspective)/(centerY+radiusY-perspective);
	this._xscale = this._yscale=s*120;
	this.angle += this._parent.speed;
	this.swapDepths(Math.round(this._xscale)+100);
}

this.onMouseMove = function() {
	speed = (this._xmouse-centerX)/20500;
};

So funktioniert es doch? Ich hab ein paar Sachen rauskommentiert, weil ich ja keine XML-Datei zum einladen habe. Da sind immer XX am Ende dann.

Pass auf mit deinem tooltip-MC. Dir ist sicherlich schonmal aufgefallen, dass der im Code blau ist. Das ist nicht gut, das heißt der Begriff 'tooltip' ist von Flash bereits belegt. Benenn ihn also um. Und es ist generell nicht wirklich prall ein Objekt in der Bibliothek und auf der Bühne gleich zu nennen. Wer soll denn da am Ende durchsteigen? Ich hab ihn mal in ein glorreiches 'toolti' umbenannt.

Du erstellst ihn auf der Hauptzeitleiste, wieso sprichst du ihn dann mit home.tooltip an und nicht mit _root.tooltip?
 
wow, es tut.
Allerbesten Dank. _root war mein Stichwort....
Bisher hatte es ja ohne das getan, aber naja Danke dafür.
Bewertung + Danke folgt ;)




hast du zufällig noch eine Idee wie ich, wenn ich möchte das der Text dauerthaft bei allen Items angezeigt wird, die Drehung des textes wie bei den Items hinbekomme.
Also das der Text, exakt wie die Bilder wenn sie in den Hintergrund wandern, kleiner werden und beim nach vorne kommen auch im gleichen Verhältnis größer werden.

Es müsste doch möglich sein die unten stehende mover() Funktion dafür zu verwenden oder ?

Danke, gruß
Ron
 
Hab ich getan, klappt auch.
Jetzt hab ich nur wieder das leidliche Zugriffsproblem.... da steht jetzt in jedem halt der Standarttext drin.

fla haengt an.
 

Anhänge

Zurück