Skip to main content
Known Participant
July 9, 2009
Question

textFlow, addEventListener

  • July 9, 2009
  • 1 reply
  • 1633 views

Hi!

When I run the attached MXML file (rename to .mxml), and click on "bar",
nothing happens (no alert pop up).
Then I click inside "blah", and hit some character.
Now, when I click on "bar", I get the desired reaction - an alert pop up.

How could I make the click handler work as expected?

Tobi

This topic has been closed for replies.

1 reply

tobi3Author
Known Participant
July 9, 2009

Here's the file content in case it's easier to view here:

<pre><span class="MXMLProcessing_Instruction">&lt;?xml version="1.0" encoding="utf-8"?&gt;</span><br />
<span class="MXMLComponent_Tag">&lt;s:Application</span><span class="MXMLDefault_Text"> xmlns:fx="</span><span class="MXMLString">http://ns.adobe.com/mxml/2009</span><span class="MXMLDefault_Text">"<br />
    xmlns:s="</span><span class="MXMLString">library://ns.adobe.com/flex/spark</span><span class="MXMLDefault_Text">"<br />
    xmlns:mx="</span><span class="MXMLString">library://ns.adobe.com/flex/halo</span><span class="MXMLDefault_Text">"<br />
    minWidth="</span><span class="MXMLString">1024</span><span class="MXMLDefault_Text">" minHeight="</span><span class="MXMLString">768</span><span class="MXMLDefault_Text">"<br />
    creationComplete="</span><span class="ActionScriptDefault_Text">init</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span><span class="MXMLDefault_Text">" viewSourceURL="</span><span class="MXMLString">srcview/index.html</span><span class="MXMLDefault_Text">"</span><span class="MXMLComponent_Tag">&gt;</span><br />
    <span class="MXMLSpecial_Tag">&lt;fx:Script&gt;</span><br />
        <span class="ActionScriptOperator">&lt;</span><span class="ActionScriptOperator">!</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">CDATA</span><span class="ActionScriptBracket/Brace">[</span><br />
<br />
<span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flash</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">display</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">Sprite</span>;<br />
<span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flashx</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">undo</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">UndoManager</span>;<br />
<span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flashx</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">textLayout</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">elements</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">TextFlow</span>;<br />
<span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flashx</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">textLayout</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">edit</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">EditManager</span>;<br />
<span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flashx</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">textLayout</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">conversion</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">TextFilter</span>;<br />
<span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flashx</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">textLayout</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">container</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">ContainerController</span>;<br />
<span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flashx</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">textLayout</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">operations</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">FlowOperation</span>;<br />
<span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flashx</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">textLayout</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">events</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">FlowOperationEvent</span>;<br />
<span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">mx</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">controls</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">Alert</span>;<br />
<span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flashx</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">textLayout</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">conversion</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">ConversionType</span>;<br />
<span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flashx</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">textLayout</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">tlf_internal</span>;<br />
<br />
<span class="ActionScriptDefault_Text">XML</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">ignoreWhitespace</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">false</span>;<br />
<br />
<span class="ActionScriptReserved">public</span> <span class="ActionScriptBracket/Brace"></span><span class="ActionScriptBracket/Brace"></span><span class="ActionScriptReserved">const</span> <span class="ActionScriptDefault_Text">initialXml</span>:<span class="ActionScriptDefault_Text">XML</span> <span class="ActionScriptOperator">=</span><br />
    <span class="ActionScriptReserved">&lt;TextFlow xmlns="http://ns.adobe.com/textLayout/2008"&gt;&lt;div&gt;Foo &lt;span id="bar" fontSize="20" fontWeight="bold" fontStyle="italic" backgroundColor="0xdddddd"&gt;bar&lt;/span&gt;</span> <span class="ActionScriptDefault_Text">blah</span> <span class="ActionScriptReserved">&lt;span id="blammo" fontSize="20" fontWeight="bold" fontStyle="italic" backgroundColor="0xdddddd"&gt;blammo&lt;/span&gt;&lt;/div&gt;&lt;/TextFlow&gt;</span><br />
<br />
<span class="ActionScriptReserved">public</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">textFlow</span>:<span class="ActionScriptDefault_Text">TextFlow</span>;<br />
<span class="ActionScriptReserved">public</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">undoManager</span>:<span class="ActionScriptDefault_Text">UndoManager</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">UndoManager</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>;<br />
<span class="ActionScriptReserved">public</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">editManager</span>:<span class="ActionScriptDefault_Text">EditManager</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">EditManager</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">undoManager</span><span class="ActionScriptBracket/Brace">)</span>;<br />
<br />
<span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">opEndHandler</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">evt</span>:<span class="ActionScriptDefault_Text">FlowOperationEvent</span><span class="ActionScriptBracket/Brace">)</span>:<span class="ActionScriptReserved">void</span> <span class="ActionScriptBracket/Brace">{</span><span class="ActionScriptBracket/Brace"></span><br />
    <span class="ActionScriptComment">// emptied for this post<br />
</span><span class="ActionScriptBracket/Brace"></span><span class="ActionScriptBracket/Brace">}</span><br />
<br />
<span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">createTextFlow</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>:<span class="ActionScriptReserved">void</span> <span class="ActionScriptBracket/Brace">{</span><br />
    <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">sprite</span>:<span class="ActionScriptDefault_Text">Sprite</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Sprite</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>;<br />
    <span class="ActionScriptDefault_Text">canvas</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">rawChildren</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">addChild</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">sprite</span><span class="ActionScriptBracket/Brace">)</span>;<br />
    <span class="ActionScriptDefault_Text">textFlow</span> <span class="ActionScriptOperator">=</span><br />
         <span class="ActionScriptDefault_Text">TextFilter</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">importToFlow</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">initialXml</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">TextFilter</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">TEXT_LAYOUT_FORMAT</span><span class="ActionScriptBracket/Brace">)</span>;<br />
    <span class="ActionScriptDefault_Text">textFlow</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">interactionManager</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">editManager</span>;<br />
    <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">containerController</span>:<span class="ActionScriptDefault_Text">ContainerController</span> <span class="ActionScriptOperator">=</span><br />
         <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">ContainerController</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">sprite</span><span class="ActionScriptOperator">,</span>300<span class="ActionScriptOperator">,</span>100<span class="ActionScriptBracket/Brace">)</span>;<br />
    <span class="ActionScriptDefault_Text">textFlow</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">flowComposer</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">addController</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">containerController</span><span class="ActionScriptBracket/Brace">)</span>;<br />
    <span class="ActionScriptDefault_Text">textFlow</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">flowComposer</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">updateAllControllers</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>;<br />
    <span class="ActionScriptDefault_Text">textFlow</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">addEventListener</span><span class="ActionScriptBracket/Brace">(</span><br />
        <span class="ActionScriptDefault_Text">MouseEvent</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">CLICK</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">clickHandler</span><br />
    <span class="ActionScriptBracket/Brace">)</span>;<br />
<span class="ActionScriptBracket/Brace">}</span><br />
<br />
<span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">clickHandler</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">evt</span>:<span class="ActionScriptDefault_Text">MouseEvent</span><span class="ActionScriptBracket/Brace">)</span>:<span class="ActionScriptReserved">void</span> <span class="ActionScriptBracket/Brace">{</span><br />
    <span class="ActionScriptDefault_Text">Alert</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">show</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace"></span><span class="ActionScriptBracket/Brace"></span><span class="ActionScriptString">"clicked bar"</span><span class="ActionScriptBracket/Brace"></span><span class="ActionScriptBracket/Brace">)</span>;<br />
<span class="ActionScriptBracket/Brace"></span><span class="ActionScriptBracket/Brace">}</span><br />
<br />
<span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">addClickListener</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>:<span class="ActionScriptReserved">void</span> <span class="ActionScriptBracket/Brace">{</span><br />
    <span class="ActionScriptDefault_Text">textFlow</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">getElementById</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace"></span><span class="ActionScriptBracket/Brace"></span><span class="ActionScriptString">"bar"</span><span class="ActionScriptBracket/Brace"></span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">tlf_internal</span><span class="ActionScriptOperator">::</span><span class="ActionScriptDefault_Text">getEventMirror</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">addEventListener</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">MouseEvent</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">CLICK</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">clickHandler</span><span class="ActionScriptBracket/Brace">)</span>;<br />
<span class="ActionScriptBracket/Brace"></span><span class="ActionScriptBracket/Brace">}</span><br />
<br />
<span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">init</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>:<span class="ActionScriptReserved">void</span> <span class="ActionScriptBracket/Brace">{</span><br />
    <span class="ActionScriptDefault_Text">createTextFlow</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>;<br />
    <span class="ActionScriptDefault_Text">addClickListener</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>;<br />
<span class="ActionScriptBracket/Brace">}</span><br />
        <span class="ActionScriptBracket/Brace"></span><span class="ActionScriptBracket/Brace">]</span><span class="ActionScriptBracket/Brace"></span><span class="ActionScriptBracket/Brace">]</span><span class="ActionScriptOperator">&gt;</span><br />
    <span class="MXMLSpecial_Tag">&lt;/fx:Script&gt;</span><br />
    <span class="MXMLComponent_Tag">&lt;mx:Canvas</span><span class="MXMLDefault_Text"> x="</span><span class="MXMLString">10</span><span class="MXMLDefault_Text">" y="</span><span class="MXMLString">10</span><span class="MXMLDefault_Text">" id="</span><span class="MXMLString">canvas</span><span class="MXMLDefault_Text">" width="</span><span class="MXMLString">600</span><span class="MXMLDefault_Text">" height="</span><span class="MXMLString">400</span><span class="MXMLDefault_Text">"</span><span class="MXMLComponent_Tag">/&gt;</span><br />
<span class="MXMLComponent_Tag">&lt;/s:Application&gt;</span></pre><br />

Participating Frequently
July 9, 2009

Hi,

You will need to add the event listener before you call updateAllControllers. That's because TextLine events are redispatched only to event mirrors that are in place at the time the TextLine is created (which happens during updateAllControllers).

Abhishek

(Adobe Systems Inc.)

tobi3Author
Known Participant
July 9, 2009

Works.

Thanks Abhishek!

Why did it the event get dispatched, but only after the other text has been edited? (in the first version)

Tobi