Skip to main content
Known Participant
Jul 9, 2009 8:50 AM UTC
Question

textFlow, addEventListener

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 is closed to new replies. Start a new post to keep the conversation going.

5 replies

tobi3Author
Known Participant
Jul 9, 2009 8:53 AM UTC

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 />

Translate
Participating Frequently
Jul 9, 2009 10:49 AM UTC

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.)

Translate
tobi3Author
Known Participant
Jul 9, 2009 11:37 AM UTC

Works.

Thanks Abhishek!

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

Tobi

Translate