2010-12-06 12 views
1

Ich lade Daten von TextFlow zu funken: TextArea. In TextFlow habe ich 'a href' Elemente. Problem liegt bei der Adresse der 'Link'-Elemente. Einige von ihnen werden außerhalb der Seite gehen (diese werde ich verlassen, ohne etwas zu tun), andere werden zu anderen Unterseiten auf meiner Seite gehen (diese muss ich fangen und im Code verarbeiten).FLEX: Wie man ein 'href' Ereignis fängt

Ich plante auf "Klicken auf Link" -Ereignis zu fangen, um zu entscheiden, was zu tun ist, aber ich kann das nicht tun. Ich las, dass

<a href="event:page_adress"> 

durch Schreiben i die Veranstaltung auf Link fangen konnte: Veranstaltung in alten mx: Textarea, aber ich kann das hier tun. Ich habe versucht, manuell die hinzuzufügen:

addEventListener(TextEvent.Link, functionName) 

aber es funktioniert nicht. Wenn ich zum MOUSE_CLICK-Ereignis fange, fange ich das Ereignis, aber kann es nicht analysieren, um die notwendige Adresse zu erhalten.

Hat jemand eine Idee, wie es geht? Ich muss nicht bei TextArea bleiben, aber die Komponente muss den Inhalt von TextFlow herunterladen. Ich

PS bemerkt, dass, wenn ich Ereignis hinzugefügt: page_adress auf die ‚a href‘ der Link funktioniert nicht (das bedeutet, dass es wahrscheinlich Ereignisse begann zu werfen), aber ich kann es nicht fangen ...

PS2 Textflow importiert wird von externer Datenbank mit

TextFlowUtil.importFromXML 

i in Verbindung Elemente verwendet versucht, klicken sie auf Ereignis, aber es funktioniert nicht:

<a click="myClickHandler(event)"> 

myClickHandler nach einem Klick auf lin läuft doesnt k ...

Antwort

2

OK fand ich Antwort auf diesen Blog: http://flexdevtips.blogspot.com/2010/10/displaying-html-text-in-labels.html

Bassicly i ganze textflow suchen musste und bei einer Verknüpfung Gründungs ​​- Hinzufügen manuell Ereignis zu.

Im meinen Code bei der Veröffentlichung, dass der flexdevtips Blog nach unten in der Zukunft sein könnte:

/** 
* Finds the first LinkElement recursively and returns it. 
*/   

private function findLinkElement(group:FlowGroupElement):void 
{ 
    var childGroups:Array = []; 
    // First check all the child elements of the current group, 
    // Also save any children that are FlowGroupElement 
    for (var i:int = 0; i < group.numChildren; i++) { 
     var element:FlowElement = group.getChildAt(i); 
     if (element is LinkElement) 
     { 
      linksArray.push(element as LinkElement); 
     } else if (element is FlowGroupElement) 
     { 
      childGroups.push(element); 
     } 
    } 
    // Recursively check the child FlowGroupElements now 
    for (i = 0; i < childGroups.length; i++) { 
     var childGroup:FlowGroupElement = childGroups[i]; 
     findLinkElement(childGroup); 
    } 

    } 

und ich hatte es in meinem Code wie folgt zu verwenden:

linksArray = []; 

findLinkElement(tt.textFlow); 

var iter:int=0; 
for (iter = 0 ; iter<linksArray.length ; iter++) 
{ 
       linksArray[iter].addEventListener(FlowElementMouseEvent.MOUSE_DOWN,linkSelect, false, 0, true); 
} 

wo tt mein Textfeld mit importierten textflow

0

gerade herausgefunden, wie die ursprünglichen Zeichenfolge zu erhalten:

dies den Inhalt des Tags zurückkehren, so können Sie Ihre Parameter

Dank für die Post analysieren zu bekommen, es hat mir geholfen, eine viel. zumindest habe ich einen schritt weiter, ich kann tatsächlich auf die ereignisse hören.

, aber ich habe immer noch ein Problem, das HTML-Code ich auf meinem RichEditableText gesetzt sieht wie folgt aus:

<a href='event:n," + id + "'>Name</a> 

auf Flex3 ich die verwenden könnte TextEvent.LINK die Argumente zu erhalten, indem seinen ‚Text 'Eigenschaft, dann Parsen, um die ID-Daten zu bekommen, die ich brauche. aber jetzt, dass wir in Flex4 entwickeln kann ich nicht herauszufinden, wie dies zu tun ist. nach Abfangen der FlowElementMouseEvent i kann nur den Link-Text ('Name'), , aber nicht die Argumente im Senden von den HTML-Code.

Haben Sie irgendwelche Vorschläge, wie zu dies tun?

1

Vielleicht hilft das. Ich benutze einen HTML-Link wie folgt:

<a id="link_1"> Click me </a> 

Die HTML-Datei wird extern gespeichert. Ich importiere die HTML zu einem Textflow importToFlow verwenden und den Zuhörer in Flex, wie folgt hinzufügen:

myTextFlow.addEventListener(FlowElementMouseEvent.ROLL_OVER, showMe); 

Um die ID-Eigenschaft der Verbindung zu erhalten Ich verwende:

event.flowElement.id 
Verwandte Themen