• beyond tellerrand – play. Register Now!
Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 06-01-2010, 12:41   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2010
Beiträge: 5
Link auf externe Bilder über XML

Hallo,

Ich bin ein Neuling in Sachen AS3, und brauche eure Hilfe. Ich habe eine XML Datei erstellt woraus ich meine Bilder reinlade. Das klappt alles wunderbar.
Nun möchte ich einen Link auf den Bildern machen, aber das funktioniert nicht. Ich kriege bei dem trace "Undefined" zurück. Wie kriege ich die Nummer von dem angeklickten Bild zurück?

Es handelt sich um den Teil mit dem Comment "LINK WIRD AUF DEN LOGOS PLATZIERT".

Danke.

Der Code:
Code:
import flash.display.*;
import flash.net.URLRequest;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import fl.transitions.Tween;
import fl.transitions.easing.Regular;
import fl.transitions.TweenEvent;
import flash.events.Event;
import flash.events.ProgressEvent;

// FULLSCREEN FLASH

function resizeHandler(e:Event):void
{
  logo_bbdo.x = (logo_bbdo.stage.stageWidth) - (logo_bbdo.width);
  logo_bbdo.y = (logo_bbdo.stage.stageHeight / 2) - (logo_bbdo.height / 2);
  spalte_logos.height = stage.stageHeight;
}

stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.addEventListener(Event.RESIZE, resizeHandler);

stage.dispatchEvent(new Event(Event.RESIZE));

// MENU LOGOS LEFT

   button.addEventListener(MouseEvent.CLICK,
   function(evt:MouseEvent){
      if (spalte_logos.x > -145){
         var spalteLinks:Tween = new Tween(spalte_logos, "x", Regular.easeOut, 0, -145, 1, true);
      }
      else {
         var spalteRechts:Tween = new Tween(spalte_logos, "x", Regular.easeIn, -145, 0, 1, true);
      }
    }
    );
   
// LOAD XML FILE

var xmlLoader:URLLoader = new URLLoader();
xmlLoader.addEventListener(Event.COMPLETE, showXML);
xmlLoader.load(new URLRequest("xml/muster1.xml"));

function showXML(e:Event):void {
XML.ignoreWhitespace = true; 
var anzahlLogos:XML = new XML(e.target.data);
var i:Number;
var myArray:Array = [];
for (i=0; i < anzahlLogos.client.length(); i++) {
   
// MOVIECLIP WIRD GENERIERT UND DIE BILDER WERDEN AUS DER XML DATEI GEHOLT

var rect:Shape = new Shape(); 
rect.graphics.beginFill(0xFFFFFF);
rect.graphics.drawRect(0, 0, 300, stage.stageHeight);
addChild(rect);
var ldr:Loader = new Loader();
ldr.x = 30;
ldr.y = i * 80;
ldr.mask = rect;

//LOGO WIRD AUS DER XML GEHOLT

var url:String = anzahlLogos.client[i].logo.text();
var urlReq:URLRequest = new URLRequest(url); 
ldr.load(urlReq);
//ldr.addEventListener(MouseEvent.CLICK, clickHandler);
addChild(ldr);

var link:String = anzahlLogos.client[i].link.text();

myArray.push(link);
trace("array" + myArray);


   // LINK WIRD AUF DEN LOGOS PLATZIERT
ldr.addEventListener(MouseEvent.CLICK,
   function clickHandler(evt:MouseEvent){ 
      trace(myArray[i]);
       }
    );


}
}
Matthijs1982 ist offline   Mit Zitat antworten
Alt 06-01-2010, 20:12   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
Wie kriege ich die Nummer von dem angeklickten Bild zurück?
Durch den evt.currentTarget und dessen name-Eigenschaft. Die name-Eigenschaft spiegelt meist den Instanznamen wider und kann, da es ein String ist, bspw. mit substring gefiltert werden.

PHP-Code:
ldr.addEventListener(MouseEvent.CLICK,
   function 
clickHandler(evt:MouseEvent){ 
      
trace(myArray[i]);
     
trace("evt.currentTarget="+evt.currentTarget);
     
trace("evt.currentTarget.name="+evt.currentTarget.name);
       }
    ); 
  Mit Zitat antworten
Alt 06-01-2010, 20:30   #3 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 11.856
Durch ein Dictionary:
ActionScript:
  1. var _map:Dictionary = new Dictionary();
Das machst du ganz zu Anfang. Dann in der showXML (Zeile 14):
ActionScript:
  1. function showXML(e:Event):void
  2. {
  3.  
  4. /* before */
  5.  
  6. var ldr:Loader = new Loader();
  7. ldr.x = 30;
  8. ldr.y = i * 80;
  9. ldr.mask = rect;
  10.  
  11. /* middle */
  12. var link:String = anzahlLogos.client[i].link.text();
  13.  
  14. _map[ldr] = link
  15. /*after*/
Und der clickandler:
ActionScript:
  1. ldr.addEventListener(MouseEvent.CLICK,
  2.   function clickHandler(evt:MouseEvent){
  3.     trace(_map[event.currentTarget]);
  4.   });
link muss natürlich eine gültige URL sein. Also sind es effektiv 3 Zeilen, die du adden musst.

agedoublejus Ansatz verstehe ich nicht, da der Loader keine Assoziation zum Link hat.
Omega Psi ist offline   Mit Zitat antworten
Alt 07-01-2010, 00:12   #4 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
agedoublejus Ansatz verstehe ich nicht, da der Loader keine Assoziation zum Link hat.
Stimmt, hab ich übersehen...
  Mit Zitat antworten
Alt 08-01-2010, 09:55   #5 (permalink)
Neuer User
 
Registriert seit: Jan 2010
Beiträge: 5
Dictionary

Hallo,

vielen Dank. Ich habe das Problem mit der Dictionary gelöst.
Matthijs1982 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
externe bilder, for loop, function, links, xml

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Flash+XML+Bilder mit Link versehen - asfunction:link ?????? chriswiegand Flash CS4 Professional 1 27-10-2009 00:41
externe bilder in externe film laden? kalleplom Flash Einsteiger 1 25-05-2007 17:54
externe Bilder über XML einbetten.. Compumaster ActionScript 1 4 21-12-2005 09:16
yugop-externe bilder-externe links eraser6 Flash MX 5 25-01-2004 18:52
Link auf externe Bilder Hr_Cyan ActionScript 1 8 13-08-2003 14:31


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:14 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele