2010-12-06 3 views
1

Spark : TextArea에 TextFlow의 데이터를로드하고 있습니다. TextFlow에는 'a href'요소가 있습니다. 문제는 '링크'요소의 주소와 관련이 있습니다. 그들 중 일부는 페이지 외부로 갈 것이고 (이것들은 아무 것도하지 않고 떠날 것입니다), 다른 것들은 내 사이트의 다른 서브 페이지로 갈 것입니다 (이 코드는 잡아서 코드로 처리해야합니다).플렉스 : 'a href'이벤트를 잡는 방법

나는 무엇을 해야할지 결정하기 위해 '링크 클릭'이벤트를 잡기 위해 계획했지만, 나는 이것을 할 수 없다. 오래된 MX의 이벤트 : 나는

<a href="event:page_adress"> 

를 작성하여 내가 링크를 이벤트 잡을 수 읽기 텍스트 영역을,하지만 난 여기에이 작업을 수행하지 못할. 수동으로 추가하려고 시도 :

addEventListener(TextEvent.Link, functionName) 

하지만 작동하지 않습니다. MOUSE_CLICK 이벤트를 잡기로 바꿀 때 이벤트를 잡기는하지만 필요한 주소를 얻기 위해 구문 분석 할 수 없습니다.

누구나 어떻게 할 수 있습니까? 나는 TextArea를 고수해야하지만 구성 요소는 TextFlow 양식을 다운로드해야합니다.

PS2 TextFlow를 ... 링크 (즉 아마 이벤트를 던지기 시작을 의미) 작동이 중지,하지만 난 그것을 잡을 은어 'A HREF'에 page_adress 가져 :

PS 나는 내가 이벤트를 추가 할 때 것으로 나타났습니다 내가 링크 요소에 사용하여 시도

TextFlowUtil.importFromXML 

외부 데이터베이스에서 이벤트를 클릭했지만 작동 나던 :

<a click="myClickHandler(event)"> 

린 클릭 한 후 실행 나던의 myClickHandler를 k는 ...

답변

2

확인 나는이 블로그에 답을 발견 http://flexdevtips.blogspot.com/2010/10/displaying-html-text-in-labels.html

Bassicly 내가 전체 TextFlow를 검색했다 및 링크 창립의 경우 - 그것은 수동으로 이벤트를 추가합니다.

인스턴트 메신저 flexdevtips 블로그가 미래에 아래로있을 경우에 내 코드를 게시 :

/** 
* 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); 
    } 

    } 

그리고 난 이렇게 내 코드에서 사용했다 :

는 TT는
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); 
} 

입니다 가져온 텍스트로 된 내 텍스트 영역

0

방금 ​​원래 문자열을 얻는 방법을 찾았습니다.

당신이 당신의 매개 변수 게시물에 대한

감사를 얻기 위해 구문 분석 할 수 있도록

이는 나에게 많은 도움이, 태그의 내용을 반환합니다. 적어도 나는 한 걸음 더 나아 갔다. 나는 실제로 이벤트를들을 수있다.

하지만 난 여전히 문제가, 난 내 RichEditableText 에 설정된 HTML 코드는 다음과 같습니다 Flex3에

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

내가 의 '텍스트로 인수를 얻을은 TextEvent.LINK 을 사용할 수 있습니다 '속성을 입력 한 다음 구문 분석을 수행하여 ID 데이터를 얻습니다. 하지만 이제는 Flex4에서 개발 중입니다. 어떻게 수행 할 수 있는지 파악하지 못합니다. FlowElementMouseEvent를 잡으면 은 에 HTML 코드를 전송하는 인수가 아닌 링크 텍스트 ('Name') 만 가져올 수 있습니다.

하는 방법에 대한 제안 사항이 있습니까?

1

아마도 도움이 될 것입니다. 나는 다음과 같은 HTML 링크를 사용한다.

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

html 파일은 외부에 저장된다. 나는 다음과 같이 플렉스에서 리스너를 importToFlow를 사용하여 추가 TextFlow를에 HTML을 가져옵니다

event.flowElement.id 
:

myTextFlow.addEventListener(FlowElementMouseEvent.ROLL_OVER, showMe); 

내가 사용하는 링크의 id-속성을 얻으려면