2011-01-11 7 views
0

Ich lade eine Reihe von Miniaturbildern aus einem Array [fest codiert] in ein MovieClip-Symbol auf der Bühne. Ich habe zwei Arrays mit dem Thumbnail und das Vollbild mit der gleichen Indexnummer. In vielen Beispielen gibt "event.currentTarget.contentLoaderInfo.url" den vollständigen Pfad zum ausgewählten Bild zurück. Ich will nur die Indexnummer.ActionScript 3.0 Abrufen des Index [CLICK-Ereignis] eines geladenen Films Clip-Image

Adobe macht es nicht leicht herauszufinden, welche anderen Eigenschaften mir aus der contentLoaderInfo zur Verfügung stehen. Ist 'SelectedIndex' oder etwas ähnliches verfügbar?

Wo findet ein inspirierender AS-Programmierer die contentLoaderInfo-Eigenschaften und/oder -Methoden? Ist URL das Einzige, was wir hier benutzen können?

Gibt es einen besseren Ansatz?

Vielen Dank im Voraus.

bearbeiten:

var thumbnails:Array = ["tn_2010OpenHouse_00.jpg","tn_2010OpenHouse_01.jpg"]; 
var images:Array = ["2010OpenHouse_00.jpg","2010OpenHouse_01.jpg"]; 
var thumbX:Number = 10; 
var thumbY:Number = 623; 
var loader:Loader = new Loader(); 
loader.load(new URLRequest("images/" + images[0])); 
addChild(loader); 
loadThumbs(); 

function loadThumbs():void 
{ 
    var thumbLoader:Loader; 
    var container:Sprite = new Sprite(); 
    container.width = 100; 
    addChild(container); 

    container.buttonMode = true; 
     for (var i:uint = 0; i < thumbnails.length; i++) 
    { 
     thumbLoader = new Loader(); 
     thumbLoader.load(new URLRequest("images/" + thumbnails[i])); 
     thumbLoader.x = thumbX; 
     thumbLoader.y = thumbY; 
     thumbX += 100; 
     container.addChild(thumbLoader); 
     thumbLoader.addEventListener(MouseEvent.CLICK, thumbClicked); 
     container.width += 100; 
     addChild(thumbLoader); 
    } 
    stop(); 
} 

function thumbClicked(ev:MouseEvent):void 
{ 
     //weltraumpirat's example 
    var index:int = thumbnails.indexOf (ev.target.contentLoaderInfo.url); 
    trace("Index= "+ index); 
     //trying a different approach as well 
    index = thumbnails.indexOf (ev.currentTarget.contentLoaderInfo.url); 
    trace("Index= "+ index); 
    loader.load(new URLRequest("images/" + images[index])); 
} 

Ausgang: Index = -1 Index = -1 Error # 2044: Unbehandelte IOErrorEvent :. text = Fehler # 2035: URL nicht gefunden.

Antwort

1

Die contentLoaderInfo-Eigenschaft gibt eine LoaderInfo Klasse zurück. Sie können ihre Eigenschaften hier lesen:

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/LoaderInfo.html

+0

Mal sehen, in meiner Frage, ich über den „content“ bin gefragt und welche andere Eigenschaften [Methoden] zur Verfügung neben ‚url und wo ich diese Informationen finden kann. [Adobe 'intellisense' ist nur ein wenig nützlich und wird nur angezeigt, wenn es will]. Soll ich 'contentLoaderInfo' = LoaderInfo? Ich denke, ich sollte annehmen, dass 'contentLoaderInfo' nur eine Eigenschaft 'URL' hat. –

+0

Verbatim von Adobe: Die 'contentLoaderInfo'-Eigenschaft ist immer für jedes 'Loader'-Objekt verfügbar. Für ein 'Loader'-Objekt, das die Methode' load() 'oder' loadBytes() 'nicht aufgerufen hat oder nicht ausreichend geladen wurde, wird beim Versuch, auf viele Eigenschaften der 'contentLoaderInfo'-Eigenschaft zuzugreifen, ein Fehler ausgegeben. Die 'contentLoaderInfo'-Eigenschaft eines' Loader'-Objekts stellt Informationen über den Inhalt bereit, den das 'Loader'-Objekt lädt, während die' loaderInfo'-Eigenschaft eines 'DisplayObject' Informationen über die Root-SWF-Datei für dieses Anzeigeobjekt bereitstellt. –

+0

Kurz gesagt, 'stage.loaderInfo' und' loader.contentLoaderInfo' verwenden beide das 'LoaderInfo'-Objekt (was die gleichen Eigenschaften bedeutet), stellen aber unterschiedliche Werte bereit. –

0

Sie array.indexOf() verwenden können, ein Objekt der Index zurückzukehren. Da ich den Rest des Codes nicht kennen, hier ist ein ungefähres Beispiel:

function thumbClicked (ev:MouseEvent) : void { 

    var index:int = thumbnails.indexOf (ev.target.contentLoaderInfo.url); 
    loader.load (new URLRequest (fullSizeImages[index])) ; 
} 

bearbeiten:

Da ich nicht den genauen Code wussten Sie verwendet haben, nahm ich an Sie die Speicherung gesamter Pfad zum Bild in Ihrem Array. In Ihrem Code voranstellen Sie „images /“, so sollte der Code sein:

function thumbClicked (ev:MouseEvent) : void { 

    var index:int = thumbnails.indexOf (ev.target.contentLoaderInfo.url.substring (7)); 
    // 7 is the length of "images/", so substring returns only the filename part. 

    loader.load (new URLRequest (fullSizeImages[index])) ; 
} 
+0

Ich lade erfolgreich das erste volle sixe Bild und alle Thumbnails auf der Bühne. Hier ist mein aktueller Code mit Ihrem Zusatz: function thumbClicked (ev: MouseEvent): void { \t var index: int = Vorschaubilder.indexOf (ev.target.contentLoaderInfo.url); \t Trace ("Index =" + Index); \t index = thumbnails.indexOf (ev.currentTarget.contentLoaderInfo.url); \t Trace ("Index =" + Index); loader.load (neuer URLRequest ("images /" + images [index])); } –

+0

Funktion thumbClicked (ev: MausEreignis): void {var index: int = thumbnails.indexOf (ev.target.contentLoaderInfo.url); Trace ("Index =" + Index); index = thumbnails.indexOf (ev.currentTarget.contentLoaderInfo.url); Trace ("Index =" + Index); loader.load (neuer URLRequest ("images /" + images [index])); } Die Ausgabe lautet wie folgt: Index = -1 Index = -1 Fehler # 2044: Unhandled IOErrorEvent :. text = Fehler # 2035: URL nicht gefunden. Sobald das Thumbnail geladen ist, wie wird es auf der Bühne referenziert? –

+0

Entschuldigung, dies ist mein erster Versuch eine Frage beantwortet zu bekommen. Danke für Ihre Hilfe. Dieser Beitrag kann gelöscht werden. –