Namenseigenschaft

Kerigen

Grünschnabel
Hi, ich möchte während der Laufzeit den Instanzname eines Objektes zwischenspeichern und anschließend wieder verwenden. Der folgende Quellcode funktioniert leider unter Actionscript 3.0 nicht mehr.

if (slider._x > 750+slider._width*0.5) {
slider._name = "temp";
slider_l._name = "slider";
temp._name = "slider_l";
}

Ich erhalte folgenden Fehler:

Error: Error #2078: Die Namenseigenschaft eines in die Zeitleiste eingefügten Objekts kann nicht geändert werden.
at flash.display::DisplayObject/set name()
at Menue_fla::MainTimeline/onEnterFrame()

Wie könnte der Quellcode für diesen Nutzen aussehen

vielen Dank
gruß Kerigen
 
Hi,

die Namensänderung von MovieClips zur Laufzeit bereitet bei mir keine Probleme, obwohl diese Vorgehensweise recht unsauber und daher nicht zu empfehlen ist,

Wenn Du mir sagst, was Du erreichen willst, kann ich Dir sicher eine bessere Lösung anbieten. In Deinem Fall wäre das wahrscheinlich so etwas:
Code:
var leftSlider = slider;

var rightSlider = slider_l;

function doSwap() {
  leftSlider = (leftSlider == slider)? slider_l : slider;
  rightSlider = (rightSlider == slider)? slider_l : slider;
}

Deine Fehlermeldung erwähnt
Code:
flash.display.displayObject
Worum handelt es sich dabei und verwendest Du vielleicht Komponenten, die eine Namensänderung zur Laufzeit nicht erlauben?

Gruß
.
 
Hallo Tobias,

erst einmal danke für die schnelle Antwort.

Mein Vorhaben ist es ein sliderMenü zu erstellen. Dafür habe ich drei gleiche Komponenten(MoviClips) nebeneinander, mit den Instanzen Namen slider, slider_l, slider_r. zeigt man mit der Mouse auf eine Seite "slidet" das Menü in diese Richtung. Ist ein Slider an der äußeren Kante angekommen, wechselt es die Position. Dadurch soll ein Endlos Effekt entstehen. Der zuvor Funktionierende Quelcode (AS 1 oder 2) lautet:

_root.onEnterFrame = function () {
if (_xmouse < 350) slider._x += (375-_xmouse)*0.05;
if (_xmouse > 400) slider._x += (375-_xmouse)*0.05;

slider_r._x = slider._x+slider._width;
slider_l._x = slider._x-slider._width;

if (slider._x > 750+slider._width*0.5) {
slider._name = "temp";
slider_l._name = "slider";
temp._name = "slider_l";
}
if (slider._x < 0-slider._width*0.5){
slider._name = "temp";
slider_r._name = "slider";
temp._name = "slider_r";
}
}

Ich hoffe dies ist ein wenig verständlicher.

gruß
Kerigen
 
Hi,

mach es, wie ich vorgeschlagen habe: Lass die Umbenennung sein, und arbeite mit zwei Variablen, die auf die beiden Slider zeigen. Dann tauschst Du einfach die Werte dieser Variablen aus.

Gruß
.
 
Zurück