2016-04-28 10 views
-1

Ich erstelle ein Adobe Air Desktop-Projekt, das viele MovieClips in der MainTimeline (RadioSel, CarMC1, CarMC2, CarMC3 usw.) hat. Wenn Sie auf einem der CarMC zeigt es RadioSel (eine andere MovieClip-)Instanz-Name als Zeichenfolge in einer Funktion übergeben

function showRadio(event: MouseEvent) { 
    RadioSel.visible = true; 
    RadioSel.instance = event.currentTarget.name; 
    trace (RadioSel.instance); 
} 

Die CarMC sind Movieclips, die viele Bilder haben. Jeder zeigt eine andere Form, die von RadioSel Wahl abhängt. Der RadioSel ist ein MovieClip, der über mehrere Optionsfelder verfügt, von denen jedes CarMC in einer anderen Form ändert, und eine Variable , die die angeklickte CarMC Instanz als Zeichenfolge enthält.

Ich erstellte eine Funktion innerhalb der RadioSel (aufgerufen, wenn radiobuttongroup ändert), die die geklickte CarMC in einem bestimmten Rahmen ändert und die RadioSel versteckt.

function chooseCar(CarInstance: String, frame: Number) { 
    this["Object(root)."+CarInstance].gotoAndStop(frame); 
    this.visible = false; 
    //trace(event.target) 
} 

Als ich RadioSel Wahl zu ändern, ich das nennen ...

chooseCar(instance, frameNo) 

... wo instance der Name des CarMC ist, und frameNo ist eine Zahl mit dem Optionsfeld definiert geklickt haben, Allerdings bekomme ich jedes Mal einen Fehler, wenn ich die Funktion anrufe. Ich glaube der Fehler ist in diesem Teil:

this["Object(root)."+CarInstance].gotoAndStop(frame); 

Wie kann ich es beheben?

+0

Bitte nehmen der Fehler, den Sie erhalten. Sie können genau wissen, in welcher Zeile es auftritt, wenn Sie "Debuggen erlauben" aktivieren und im Debug-Modus kompilieren (https://helpx.adobe.com/animate/using/debugging-actionskript-3-0.html) – Atriace

Antwort

0

Sie übergeben keine Instanz (Movieclip), sondern den Instanznamen (Zeichenfolge). Sie sollten nur das Auto-Instanz (Movieclip) passieren die Dinge einfacher zu machen - dann sorgen Sie nicht, wo Sie Ihre Autos sind und wie diese zugänglich sind:

function showRadio(event: MouseEvent) 
{ 
    RadioSel.visible = true; 
    // I assume the currentTarget is your car you've clicked on 
    // pass the movieclip instance to the radiosel and not just the name 
    RadioSel.instance = event.currentTarget as MovieClip; 
    trace (RadioSel.instance.name); 
} 

In Ihrem RadioSel:

public var instance:MovieClip; 

// no need to pass the instance here as it is saved in the instance property anyway 
function chooseCar(frame: Number) 
{ 
    instance.gotoAndStop(frame); 
    this.visible = false; 
} 
Verwandte Themen